Bonjour Ô très chers experts
J'ai un feuille excel qui contient l'historique des situations de personnes (ex : leurs différentes adresses postales qui ont changé) et elles peuvent donc apparaître plusieurs fois.
Pour un traitement ultérieur, je ne dois pas avoir plusieurs fois la même personne dans un même onglet.
J'ai écris le code ci-dessous parcours mon tableau, créé un onglet dès qu'il trouve un doublon et écrit les lignes tant qu'il ne trouve pas de nouveau doublon. Mon code écrit aussi si la ligne a été traitée ou non.
Cependant, mon code créé trop d'onglets donc ça ne fait pas ce que je veux...sinon je ne serais pas venu ici !
Si j'avais dans mon onglet d'historique, les lignes : PAUL, PAUL, PAUL, PIERRE, PIERRE, JEAN
j'obtiens 4 onglets : 1)PAUL - 2)PAUL - 3)PAUL, PIERRE - 4) PIERRE, JEAN
Et moi je voudrais : 1)PAUL, PIERRE, JEAN - 2)PAUL, PIERRE - 3) PAUL mais je sèche
Merci d'avance pour vos lumières
Sub azerty()
num_Onglet = 0
ligne_a_ecrire = 1
With Sheets("Historique_")
For i = 5 To 12
ancienneValeur = .Range("B" & i - 1).Value
nouvelleValeur = .Range("B" & i).Value
aTraiter = .Range("D" & i).Value 'Permet de savoir si la colonne a été traitée -> "OK" = ligne traitée
If (nouvelleValeur = ancienneValeur) Or num_Onglet = 0 Then
num_Onglet = num_Onglet + 1
Worksheets.Add.Name = "Histo_" & num_Onglet
.Range("A4:C4").Copy Sheets("Histo_" & num_Onglet).Range("A1")
ligne_a_ecrire = 1
End If
If aTraiter = "OK" Then
ligne_a_ecrire = ligne_a_ecrire - 1
Else
ligne_a_ecrire = ligne_a_ecrire + 1
.Range("A" & i & ":C" & i).Copy Sheets("Histo_" & num_Onglet).Range("A" & ligne_a_ecrire)
.Range("S" & i).Value = "OK"
End If
Next
End With
End Sub