Probleme doublon VBA

Fermé
Tortua Messages postés 4 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 19 juin 2008 - 29 mai 2008 à 07:44
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 29 mai 2008 à 08:30
Bonjour,
J'ai un probleme avec mon programme je veux copier des données de la page "CopieGC" vers la page "Base de données Client", et je veux enlever les doublons car certaines données sont dans les deux feuille. Mais ca m'enleve un doublon sur deux et je ne comprend pas.
Merci de m'aider
Voici le code:


Sub Macro3()
'
' Macro1 Macro
' Macro enregistrée le 28/05/2008 par
'

Sheets("Base de données Client").Select
Range("B24:I24").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Font.Bold = False

Sheets("Copie GC").Select
Range("B3:I3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Font.Bold = True

For i = 24 To 1135
boolverif = False
For j = 3 To 30
If Worksheets("Base de données Client").Cells(i, 2) = Worksheets("Copie GC").Cells(j, 2) Then
boolverif = True
If boolverif = True Then
Exit For
End If
End If
Next j

If boolverif = True Then
Worksheets("Base de données Client").Cells(i, 2).EntireRow.Delete
End If
Next i




Sheets("Copie GC").Select
Range("B3:I3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Base de données Client").Select
Range("B24:I24").Select
Selection.End(xlDown).Select
ActiveSheet.Paste

Sheets("Copie GC").Select
Range("B3:I3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A3").Select
End Sub

Cordialement
Tortua

1 réponse

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
29 mai 2008 à 08:30
Tortua,
à vue de nez, je dirais que le problème est :
Quand tu supprimes une ligne, Excel sélectionne la ligne suivante.
Comme, en plus, ton i s'incrémente de 1, ça te fait sauter 2 lignes.
Il faudrait décrémenter i de 1 quand une ligne est supprimée.

If boolverif = True Then
Worksheets("Base de données Client").cells(i, 2).EntireRow.Delete
i = i - 1
End If
Next i

Je n'ai pas testé la modification, vérifie bien avant de lancer le tout.
I.
0