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 :

Comparaison de deux tableaux


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 98
    Par défaut Comparaison de deux tableaux
    Bonjour,
    Je cherche à faire la comparaison de deux feuilles dans excel d'un même classeur

    Dans un premier temps je veux récupérer les lignes de ma feuille 1 (bdd) donc le num de commande est le même que celui de ma feuille 2 (copie-save) et les copier dans une troisième feuille (sortie-reliquat) (Sa c'est ok j'y suis arrivée)
    Ensuite je veux récupérer les ligne de ma feuille 1 (bdd) qui ne son pas dans ma feuille 2 (copie-save) et les copier dans ma feuille 3 (sortie-reliquat), c'est la que j'arrive pas a faire cette étape

    Pour faire ma comparaison je me base sur la colonne B de ma feuille 1 (bdd) et sur la colonne C de ma feuille 2 (Copie-save) qui est le num de commande

    Mon premier For me sert juste a copier les entêtes pour la mise en page
    Mon 2ème For me sert a copier les lignes qui sont dans mes deux feuille 1 et 2
    Mon 3 ème For ne marche pas, il ne me copie pas les lignes qui sont dans la feuille 1 et qui ne sont pas dans la feuille 2

    en faite pour expliquer le but de mon tableau, j'extrait de la base de données sur laquelle je travaille toutes les commandes client qui sont en reliquat. tous les jours on doit faire un suivit des ces commandes. Voir celles qui sont toujours en reliquat, et ajouter les nouvelles. C'est l'ajout de ces nouvelle commandes qui se trouve dans ma feuille 1 (bdd) et toujours en fin de feuille1, dans ma feuille 2 (Copie-save) que je n'arrive pas a faire

    quelqu'un aurait il une solution svp?

    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
    Sub comparaison()
    'comparaison entre la feuille copie_save et la feuille bdd
    Dim wsh1 As Worksheet, wsh2 As Worksheet, wsh3 As Worksheet
    Dim ligne As Long, LastLig1 As Long, LastLig3 As Long, LastLig2 As Long, result As Long
    Dim C As Range
    Dim i As Integer, j As Integer
     
     
    Set wsh1 = Worksheets("bdd")
    Set wsh2 = Worksheets("Copie-save")
    Set wsh3 = Worksheets("sortie-reliquat")
    LastLig1 = wsh1.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille bdd
    LastLig2 = wsh2.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille copie-save
    LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat
     
    result = Application.WorksheetFunction.Max(LastLig1, LastLig2)
     
    For i = 0 To 2 Step 1 'copie des trois premieres ligne d'en-tête
     
        wsh2.Rows(i + 1).Copy _
            Destination:=wsh3.Rows(LastLig3 + i)
    Next i
     
    For ligne = 4 To result Step 1
        Set C = wsh1.Columns("B").Find(wsh2.Cells(ligne, "C").Value, LookIn:=xlValues, lookat:=xlWhole)
     
          If Not C Is Nothing Then 'si ref commande trouvé
            LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat
            wsh2.Rows(ligne).Copy _
                Destination:=wsh3.Rows(LastLig3 + 1)
            LastLig3 = 0
          End If
     
     
     
    Next ligne
    ligne = 0
     
    For ligne = 2 To result Step 1
        For j = 4 To result Step 1
            Set C = wsh1.Cells(ligne, "B").Find(wsh2.Cells(j, "C").Value, LookIn:=xlValues, lookat:=xlWhole)
            'lig = ligne
            If C Is Nothing Then  'si pas trouvé ref commande
            MsgBox (j)
                LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat
                wsh1.Rows(ligne).Copy _
                    Destination:=wsh3.Rows(LastLig3 + 1)
                LastLig3 = 0
            End If
        Next j
    Next ligne
     
    ligne = 0
     
     
    Set wsh1 = Nothing
    Set wsh2 = Nothing
    Set wsh3 = Nothing
    Set C = Nothing
     
    End Sub
    Je vous joint les trois feuilles en pièce jointe

    ++
    Elwy
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. Comparaison de deux tableaux
    Par tibss dans le forum Excel
    Réponses: 1
    Dernier message: 06/05/2009, 21h30
  3. Comparaison de deux tableaux en VB6
    Par taille50 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 10/08/2007, 10h28
  4. Comparaison de deux tableaux
    Par solorac dans le forum Excel
    Réponses: 7
    Dernier message: 03/08/2007, 08h49
  5. Comparaison de deux tableaux
    Par siaoly dans le forum Langage
    Réponses: 5
    Dernier message: 27/06/2006, 19h40

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