VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + paste

SaraBilmem

XLDnaute Nouveau
Bonjour,

Je suis nouvelle sur le forum et novice en VBA, malgré mes recherches sur le net, je n'ai pas réussi à trouver réponse à ma question (en tout cas, pas su interpoler d'autres réponses ou d'autres problèmes similaires).

Voici mon problème:
- J'ai une Feuille1 contenant des données d'individu par ligne: "A1:E1" , "A2:E2" etc information su des individus (un individu par ligne) et ceci jusqu'à une nombre variable de ligne (ceci dépend des données que j'importe auparavant)
- J'ai une Feuille2 contenant également des données d'individus de la même manière que dans la Feuille1.

-> Je cherche à trouver les individus apparaissant dans le Feuille2 mais pas dans la Feuille1, puis coller "cet individu" dans la première ligne vide du Range de la Feuille 1.

Voici un "simili" code que j'ai tenté d'écrire qui évidemment ne fonctionne pas (pour l’instant je ne comparait que les valeurs de la colonne A, ne sachant pas comment faire pour A à E). Je joins également un fichier xls.

Je vous remercie d'avance pour votre aide!:)

Code:
Sub Test()
   
  Dim j As Integer
  Dim i As Integer
  Dim EndR As Integer
  
  EndR = Range("A65536").End(xlUp).Row + 1
 
    For j = 3 To Range("A65536").End(xlUp).Row
        j = j + 1
            For i = 3 To Range("A65536").End(xlUp).Row
                i = i + 1
            
                    If ThisWorkbook.Sheets("Feuille2").Range("A" & j).Value <> ThisWorkbook.Sheets("Feuille2").Range("A" & i).Value Then
                        ThisWorkbook.Sheets("Feuille1").Range("A" & EndR & ":G" & EndR) =_
ThisWorkbook.Sheets("Feuille2").Range("A" & j & ":G" & j)
                    End If
            Next i
     Next j

End Sub
 

Pièces jointes

  • Sara.xlsm
    16.6 KB · Affichages: 227
  • Sara.xlsm
    16.6 KB · Affichages: 266
  • Sara.xlsm
    16.6 KB · Affichages: 276

flyonets44

XLDnaute Occasionnel
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonjour,

Je suis nouvelle sur le forum et novice en VBA, malgré mes recherches sur le net, je n'ai pas réussi à trouver réponse à ma question (en tout cas, pas su interpoler d'autres réponses ou d'autres problèmes similaires).

Voici mon problème:
- J'ai une Feuille1 contenant des données d'individu par ligne: "A1:E1" , "A2:E2" etc information su des individus (un individu par ligne) et ceci jusqu'à une nombre variable de ligne (ceci dépend des données que j'importe auparavant)
- J'ai une Feuille2 contenant également des données d'individus de la même manière que dans la Feuille1.

-> Je cherche à trouver les individus apparaissant dans le Feuille2 mais pas dans la Feuille1, puis coller "cet individu" dans la première ligne vide du Range de la Feuille 1.

Voici un "simili" code que j'ai tenté d'écrire qui évidemment ne fonctionne pas (pour l’instant je ne comparait que les valeurs de la colonne A, ne sachant pas comment faire pour A à E). Je joins également un fichier xls.

Je vous remercie d'avance pour votre aide!:)

Code:
Sub Test()
   
  Dim j As Integer
  Dim i As Integer
  Dim EndR As Integer
  
  EndR = Range("A65536").End(xlUp).Row + 1
 
    For j = 3 To Range("A65536").End(xlUp).Row
        j = j + 1
            For i = 3 To Range("A65536").End(xlUp).Row
                i = i + 1
            
                    If ThisWorkbook.Sheets("Feuille2").Range("A" & j).Value <> ThisWorkbook.Sheets("Feuille2").Range("A" & i).Value Then
                        ThisWorkbook.Sheets("Feuille1").Range("A" & EndR & ":G" & EndR) =_
ThisWorkbook.Sheets("Feuille2").Range("A" & j & ":G" & j)
                    End If
            Next i
     Next j

End Sub
Bonsoir
voir le fichier joint qui permet de réaliser des comparaisons de données
Cordialement
Flyonets
 

Pièces jointes

  • Comparer_items.xls
    134 KB · Affichages: 1 173
  • Comparer_items.xls
    134 KB · Affichages: 1 128
  • Comparer_items.xls
    134 KB · Affichages: 978

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bon bah, ce n'est pas de la mauvais volonté mais je ne suis pas assez douée en VBA pour comprendre ce fichier et l'adapter à ma situation. Donc si quelqu'un pouvait m'aider cela serait fort sympathique...
 

flyonets44

XLDnaute Occasionnel
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonjour
ci-joint ton fichier pour lequel j'ai listé -sur la base de la colonne A-, les items différents entre les deux feuilles
Cordialement
Bon dimanche
Flyonets
 

Pièces jointes

  • Sara.xls
    55.5 KB · Affichages: 427

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Re,

Lorsque je teste sur mon propre fichier, cela ne fonctionne pas à cause du:
For K = LBound(Vardatas, 1) To UBound(Vardatas, 1)
For Kf = LBound(Tabuniq, 1) To UBound(Tabuniq, 1)

"Type mismatch" apparaît!

Par ailleurs, puis-je modifier justement Lbound, Ubound pour ajouter d'autres items pour comparaison?

Merci d'avance pour votre réponse.

SaraBilmem
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonjour le fil, bonjour le forum,

le fichier de Flyonets avec quelques ajouts mineurs (pour le fun).

 

Pièces jointes

  • Sara_v02.xls
    66.5 KB · Affichages: 284

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonjour,

D'après ce que je vois, vous posez les conditions pour une cellule. Comment puis-je faire si je désire comparer tout le contenu de la ligne? Car le .value ne s'applique qu'à des cellules il me semble?

Merci pour le fichier02!
 

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

J'ai plus de faciliter à comprendre la macro du fichier v02, cependant elle (tout comme la première macro du 1er fichier) me donne toutes les données qui sont différentes entre les 2 feuilles. Ce que je cherchais à la base, c'était de pouvoir obtenir dans le feuille 3, le données qui étaient dans la feuille 1 mais ne sont plus dans la feuille 2 en comparant les lignes entre elles.

Je ne sais pas si ce que je dis est compréhensible..:)

Je vous remercie d'avance pour votre aide.

SaraBilmem
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonsoir le fil, bonsoir le forum,

Pas sûr d'avoir bien compris... Peut-être comme ça :
Code:
Sub Macro1()
Dim o1 As Object 'déclare la variable o1 (Onglet 1)
Dim o2 As Object 'déclare la variable o1 (Onglet 2)
Dim o3 As Object 'déclare la variable o1 (Onglet 3)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim x As Byte 'déclare la variable x (incrément)
Dim test As Boolean 'décalre la variable test
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
Dim dest As Range 'déclare la variable dest (Cellule de DESTination)

Set o1 = Sheets("Feuille1") 'définit l'onglet o1
Set o2 = Sheets("Feuille2") 'définit l'onglet o2
Set o3 = Sheets("Sheet3") 'définit l'onglet o3

'supprime les anciennes données
If o3.Range("A2").Value <> "" Then o3.Range("A1").CurrentRegion.Offset(1, 0).Resize(o3.Range("A1").CurrentRegion.Rows.Count - 1).Clear

dl = o1.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl de la colonne A de l'onglet 01
Set pl = o1.Range("A2:A" & dl) 'définit la plage pl
For x = 0 To 4 'boucle 1 : sur les 5 colonnes A à E
    For Each cel In pl.Offset(0, x) 'boucle 2 : sur toutes les cellules cel de la plage pl décalé de x colonnes
        'définit la recherche r (recherche cel dans la colonne A de l'onglet o2)
        Set r = o2.Columns(x + 1).Find(cel.Value, , xlValues, xlWhole)
        If Not r Is Nothing Then test = True 'si il existe au moins une occurrence, la variable test devient vrai
    Next cel 'prochaine cellule de la boucle 2
Next x 'prochaien colonne de la boucle 1
If test = False Then 'condition :
    Set dest = o3.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la celluel de destination
    o1.Rows(cel.Row).Copy dest 'copy la ligne dans dest
End If 'fin de la condition

dl = o2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'redéfinit la dernière ligne dl de l'onglet o2
Set pl = o2.Range("A2:A" & dl) 'redéfinit la plage pl
test = False 'initiaslise la variable test
For x = 0 To 4 'boucle 1 : sur les 5 colonnes A à E
    For Each cel In pl.Offset(0, x) 'boucle 2 : sur toutes les cellules cel de la plage pl décalé de x colonnes
        'définit la recherche r (recherche cel dans la colonne A de l'onglet o2)
        Set r = o1.Columns(x + 1).Find(cel.Value, , xlValues, xlWhole)
        If Not r Is Nothing Then test = True 'si il existe au moins une occurrence, la variable test devient vrai
    Next cel 'prochaine cellule de la boucle 2
Next x 'prochaien colonne de la boucle 1
If test = False Then 'condition :
    Set dest = o3.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la celluel de destination
    o2.Rows(cel.Row).Copy dest 'copy la ligne dans dest
End If 'fin de la condition
o3.Activate 'active l'onglet "Sheet3"
End Sub
Le fichier :
 

Pièces jointes

  • Sara_v03.xls
    67 KB · Affichages: 199

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonsoir le fil, bonsoir le forum,

Sara nos posts se sont croisés mais je ne comprends pas ce que tu entends par en comparant les lignes entre elle. Si un nom n'y est pas dans la colonne A à quoi sert de comparer le reste de la ligne ?

[Édition]
La version 04 devrait convenir :
 

Pièces jointes

  • Sara_v04.xls
    64 KB · Affichages: 238
Dernière édition:

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Re,

J'ai besoin de comparer toute la ligne et pas seulement le contenu de la cellule A, car plusieurs lignes peuvent contenir la même donnée sous A et être différentes dans les autres colonnes.
Donc le but serait de directement comparer le contenu de toute les lignes de la feuille 2 et de la feuille 1 et de mettre dans la feuille 3 les lignes qui étaient dans la feuille 1 mais ne sont plus dans la feuille 2.

Merci pour le fichier en tout cas.

SaraBilmem
 
Dernière édition:

SaraBilmem

XLDnaute Nouveau
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Alors c'est parfait! Merci beaucoup cela fonctionne! Par contre, je n'arrive pas à faire en sorte que cela soit par ligne et non pas que par rapport à la cellule de la colonne A.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA: comparaison valeurs cellules différentes colonnes/différentes feuilles + pa

Bonsoir SaraBilmem,

Un autre essai qui copie les lignes présentes dans Feuille1 mais absentes de Feuille2 dans Sheet3.
J'ai essayé de commenter le code. Il utilise une colonne auxilliaire avec insertion d'une formule.
Code:
Sub Dans1PasDans2()
Dim rgNA As Range, xCell As Range, xDest As Range

Application.ScreenUpdating = False

'on efface les anciens résultats de Sheet3
Sheets("Sheet3").Range("A2:E" & Rows.Count).ClearContents

With Sheets("Feuille1")
   
   'inserer une colonne avant la colonne F
   .Columns("f").Insert Shift:=xlToRight
   
   'Formule retournant #N/A si la ligne de Feuille1 n'est pas dans Feuill2, sinon retourne 1
   'équivalent à la formule en 'Français':
   '=SI(NB.SI.ENS(Feuille2!A:A;A2;Feuille2!B:B;B2;Feuille2!C:C;C2;Feuille2!D:D;D2;Feuille2!E:E;E2)=0;NA();1)
   .Range("F2").Formula = _
     "=IF(COUNTIFS(Feuille2!A:A,A2,Feuille2!B:B,B2,Feuille2!C:C,C2,Feuille2!D:D,D2,Feuille2!E:E,E2)=0,NA(),1)"
   
   'copie de la formule sur la hauteur du tableau
   .Range("F2").AutoFill Destination:=.Range(.Range("F2"), .Cells(.Rows.Count, "a").End(xlUp).Offset(0, 5))
   
   'Sélectionner les cellules de la colonne F ayant une erreur (=#N/A)
   
   On Error Resume Next    ' si aucune cellule ne contient #N/A alors excel lève une erreur
                           ' on va "sauter" cette erreur
   
   'On selectionne les cellules dela colonne F comportant une erreur dont #N/A
   Set rgNA = .Columns("f").SpecialCells(xlCellTypeFormulas, 16)
   
   ' Si il y a des cellules comprenant #N/A, on les copie
   If Not rgNA Is Nothing Then
      On Error GoTo 0   ' On rétabli la gestion normale des erreurs
      
      'On défini la cellule de départ d'écriture dans Sheet3
      Set xDest = Sheets("Sheet3").Range("A2")
      
      'Boucle sur les cellules de rgNA
      For Each xCell In rgNA.Cells
         
         'copie de la ligne de Feuille1 vers Sheet3
         .Range(.Cells(xCell.Row, "a"), .Cells(xCell.Row, "e")).Copy Destination:=xDest
         
         'on prépare la prochaine cellule d'écriture de Sheet3 en descendant d'une ligne
         Set xDest = xDest.Offset(1, 0)
      Next xCell
   End If

   'On supprime la colonne qu'on avait insérée
   .Columns("f").Delete
End With

Application.ScreenUpdating = False

End Sub
 

Pièces jointes

  • Sara v1.xlsm
    29 KB · Affichages: 368
Dernière édition:

Discussions similaires

Réponses
6
Affichages
247

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote