comparer deux lignes

mousocgen

XLDnaute Nouveau
salut
un détail qui me mène la vie dure
commme c'est souvent le cas sur vba

je veux comparer si deux lignes sont identiques dans excel
pour l'instant je ne sais que comparer deux cellulles

voici le code merci à tous, ca me prend la tete depuis deux jours

Sub compare()
Dim i As Long
Sheets("1").Select
For i = Range("A65000").End(xlUp).Row To 2 Step -1
With Sheets("2")
If Cells(i, 1).Value = .Cells(i, 1).Value Then .Cells(i, 1).EntireRow.Delete
End With
Next i
Sheets("2").Select
End Sub
 

Gringo

XLDnaute Junior
Re : comparer deux lignes

Salut mousocgen, le forum,

Je ne sais pas si tu peux comparer les infos de la ligne au complet, mais ce que tu peux faire, si tu n'as pas trop de colonnes de données, c'est d'ajouter à ton code:
Code:
If Cells(i, 1).Value = .Cells(i, 1).Value And cells(i,2).value=.cells(i,2).value (etc) Then .Cells(i, 1).EntireRow.Delete

Solution longue mais qui pourrait marcher... en en attendant une meilleure...

Gringo
 

Gael

XLDnaute Barbatruc
Re : comparer deux lignes

Bonsoir Mousocgen, gringo, le forum

Essaye le code suivant:

Code:
Option Base 1
Sub compare()
Dim i As Long, j As Long, tablo As Variant, egal As Boolean
tablo = Sheets("F1").Range("A1").CurrentRegion
With Sheets("F2")
For i = UBound(tablo) To 2 Step -1
egal = True
    For j = UBound(tablo, 2) To 1 Step -1
    If tablo(i, j) <> .Cells(i, j).Value Then egal = False
    Next j
If egal Then .Cells(i, 1).EntireRow.Delete
Next i
End With
Sheets("F2").Select
End Sub

Le Current region suppose que tes données ne sont pas séparées par des colonnes vides, sinon la sélection ne se fera que sur une partie des données.

Si le nombre de valeurs est très important, tu peux raccourcir le temps de réponse en travaillant sur 2 tableaux en mémoire, l'accès à la feuille 2 ne se faisant que pour effacer la ligne souhaitée:

Code:
Option Base 1
Sub compare()
Dim i As Long, j As Long, tabF1 As Variant, tabF2 As Variant, egal As Boolean
tabF1 = Sheets("F1").Range("A1").CurrentRegion
tabF2 = Sheets("F2").Range("A1").CurrentRegion
With Sheets("F2")
For i = UBound(tabF1) To 2 Step -1
egal = True
    For j = UBound(tabF1, 2) To 1 Step -1
    If tabF1(i, j) <> tabF2(i, j) Then egal = False
    Next j
If egal Then .Cells(i, 1).EntireRow.Delete
Next i
End With
Sheets("F2").Select
End Sub


@+

Gael
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : comparer deux lignes

Bonsoir tout le monde,
j'ai une autre proposition:
Code:
Sub essai()
For i = Range(Range("a1"), Range("a65536").End(xlUp)).Count To 1 Step -1
    For j = 1 To Range(Range("a1"), Range("IV1").End(xlToLeft)).Count
        If Cells(i, j) <> Sheets(2).Cells(i, j) Then
            MsgBox "la ligne " & i & " est différente"
            Exit For
        End If
    Next
Next
End Sub

Pour que celà marche, la colonne A de la dernière ligne ne doit pas être vide.
Tu remplaces
Code:
MsgBox "la ligne " & i & " est différente"
par ce que tu veux (changement de couleur, suppression de la ligne etc).

A+
 

skoobi

XLDnaute Barbatruc
Re : comparer deux lignes

Bonsoir Mousocgen, gringo, le forum



Le Current region suppose que tes données ne sont pas séparées par des colonnes vides, sinon la sélection ne se fera que sur une partie des données.


@+

Gael

Ma solution prend en compte les colonnes vides MAIS les largeurs de ligne entre les 2 feuilles doivent être identiques.
ex.: pour la ligne 2:
si la dernière valeure dans la feuille 1 se trouve colonne C, la valeure dans la feuille 2 doit être aussi dans la colonne C.

Voili voilou
 

Lison Lisette

XLDnaute Nouveau
Re : comparer deux lignes

Hello !!!!! ...et au secours !

J`ai essayé le programme mais dans mon cas ca ne marche pas vraiment :( ...

J`ai un nombre de colonnes fixe et j`ai donc essayé de remplacer
Code:
Range("A1").CurrentRegion

Par
Code:
Range("A1:L12)

Mais sans beaucoup de succès....!

J`ai des colonnes vides et ma dernière cellule est souvent vide (colonneL).

Je suis coincée, comment éliminer les doublons de ma feuille 2, qui sont déja dans la base de données de la feuille 1 ??

Merci d`avance pour vos conseils de pro ! :)

L.
 

Pièces jointes

  • Heeeelp.zip
    18.8 KB · Affichages: 142

Discussions similaires

Statistiques des forums

Discussions
312 394
Messages
2 088 018
Membres
103 700
dernier inscrit
franck42