IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-EXCEL] Comparaison de 2 tables Excels


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Par défaut [VBA-EXCEL] Comparaison de 2 tables Excels
    Bonjour,

    Je suis un nouveau de VBA, je dois développer un macro qui compare l'idedifiant d'une première table avec l'identifiant de 2e, si ce identifiant existe dans le 2e (en utilisant la fonction find), il le garde, sinon, il le supprime.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Dim wb As Workbook, wb2 As Workbook, ws As Worksheet
     
     
    'Le premier fichier en entrée ici est un fichier csv dont le chemin est situé à range(F5), je le parse par ";" pour créer une collection
     
    Dim V As Collection
    Path = ThisWorkbook.Sheets("sheet1").Range("F5").Value
    Set V = ParseFile(Path, ";")
     
     
    'Je mets tous les morceaux de la collection dans les sheets de workbook
     
    If V.Count > 40 Then
        t = 1
        For i = 1 To 40
     
            ThisWorkbook.Sheets("sheet2").Range("A" & t).Resize(1, 17).Value = V.Item(i)
            t = t + 1
        Next i
        t = 1
        For i = 40 To V.Count
            ThisWorkbook.Sheets("sheet3").Range("A" & t).Resize(1, 17).Value = V.Item(i)
            t = t + 1
            If i + 1 = 2 * 40 Then Exit For
        Next i
    Else
        t = 1
        For i = 1 To V.Count
            ThisWorkbook.Sheets("sheet2").Range("A" & t).Resize(1, 17).Value = V.Item(i)
            t = t + 1
        Next i
     
    End If
     
     
    'j'ouvre la 2e table Excel dont le chemin est dans range(F6), je fais un filtre là-dessus
     
    Workbooks.Open Filename:=ThisWorkbook.Sheets("sheet1").Range("F6").Value
        Set wb2 = ActiveWorkbook
        Sheets("POSITION AND GRECS").Activate
        Rows("3:3").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=7, Criteria1:="DESCRIPT"
        Rows("3:3").Select
        Range("B3").Activate
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets.Add
        Set sh = ActiveSheet
        ActiveSheet.Paste
     
     
     
    'Maintenant, je compare les 2 par un for sur la 1ere table, et faire un find sur la 2e pour voir si ça existe ou pas, si oui, on le garde, sinon, je le supprime.
     
        ThisWorkbook.Activate
        For i = 1 To Range("A1").End(xlDown).Row
        Id = Range("A" & i).Value
     
        If wb2.Sheets("sheet1").Range("AA:AA").Find(Id) Is Nothing Then
        Rows(i).Delete
        i = i - 1
        End If
     
        Next i
     
     
        ThisWorkbook.SaveAs Filename:="G:\_Traitements_Exo\Users\Jun\a.xls"
    'le problème est qu'il se bloque sur la ligne "i=i-1" que j'ai besoin de faire quand une ligne est supprimée.

    Merci de m'aider si vous comprenez ce que j'ai fait de mal dans ce code.

    Je suppose que je parcours peut-être dans la mauvaise sheet pour comparer??

  2. #2
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonjour à tous
    Bonjour tangjuncn

    Sans avoir essayé dsl : ne serais tu pas sur la première ligne ? car i=i-1 il ne peut pas comprendre, il se retrouve sur row =0.
    Dans ce cas là, il faut tester si row = 1 i=1 et non i=i-1

    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je n'ai pas le tps tt de suite de regarder ton code mais regarde dans l'aide à ColumnDifferences ou RowDifferences.
    L'un et l'autre te permettent de comparer la cellule dans une plage à la cellule correspondant d'une autre plage, par colonne ou par row selon l'expression que tu choisis
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Par défaut
    Le pb est en fait que je dois ajouter une ligne comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("A"&i+1).Value="" EXIT For
    parce que dans la sheet, je supprime les rows, il faut faire ça pour sortir de la boucle.

    Voilà.

    Merci à tout le monde quand-même!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 10h22
  2. [VBA-E]Comparaison sous Excel avec 3 feuilles
    Par zidrouz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/04/2006, 11h49
  3. [VBA-E]comparaison de 2 fichiers Excel
    Par frederic.go dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/03/2006, 15h22
  4. [VBA]excel comparaison de chaine de caractere
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2006, 16h32
  5. Comparaison Table Excel table Mssql
    Par k-lendos dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 01/06/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo