Microsoft 365 VBA débutante problème boucle

mhp

XLDnaute Nouveau
Hello,

Je débute sur VBA et j'ai une question concernant le fichier exemple ci-joint. Lorsque je clique une première fois sur le bouton, tout fonctionne comme je le souhaite. Cependant, quand je clique une nouvelle fois, les valeurs (Couleurs) se répètent, ce que je ne veux pas. Comment empêcher cela ?

Par la suite, j'aimerai ajouter aux colonnes A et B de nouveaux noms et couleurs. Il faudrait donc que quand je clique une nouvelle fois sur le bouton, les données rajoutées s'inscrivent à la suite sans dupliquer les valeurs déjà traitées. (Colonne F)

J'espère avoir été assez claire 😅

Merci d'avance :)
 

Pièces jointes

  • Test.xls
    43.5 KB · Affichages: 14
Solution
Bonjour @mhp, le forum

Une piste ....

VB:
Sub concatenerdoublons()
Dim i As Long
Dim chaine As Variant
Range("E:F").ClearContents
For i = 1 To Range("A1").End(xlDown).Row
    If WorksheetFunction.CountIf(Range("E:F"), "=" & Cells(i, 1).Value) = 1 Then
    chaine = Range("E:E").Find(What:=Cells(i, 1).Value, After:=Range("E1"), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Offset(0, 1) & " / " & Cells(i, 2)
    Range("E:E").Find(What:=Cells(i, 1).Value, After:=Range("E1"), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Offset(0, 1) =...

Phil69970

XLDnaute Barbatruc
Bonjour @mhp, le forum

Une piste ....

VB:
Sub concatenerdoublons()
Dim i As Long
Dim chaine As Variant
Range("E:F").ClearContents
For i = 1 To Range("A1").End(xlDown).Row
    If WorksheetFunction.CountIf(Range("E:F"), "=" & Cells(i, 1).Value) = 1 Then
    chaine = Range("E:E").Find(What:=Cells(i, 1).Value, After:=Range("E1"), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Offset(0, 1) & " / " & Cells(i, 2)
    Range("E:E").Find(What:=Cells(i, 1).Value, After:=Range("E1"), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Offset(0, 1) = chaine
    Else
    If IsEmpty(Range("E1")) Then
        Range("e65536").End(xlUp) = Cells(i, 1)
        Range("f65536").End(xlUp) = Cells(i, 2)
    Else
        Range("e65536").End(xlUp).Offset(1, 0).Value = Cells(i, 1)
        Range("f65536").End(xlUp).Offset(1, 0).Value = Cells(i, 2)
    End If
    End If
Next i
End Sub

En fait tu effaces la liste et tu la reconstruis ;) comme ça ta liste est toujours juste et à jpur.

*Merci de ton retour

@Phil69970
 

Discussions similaires

Réponses
8
Affichages
363
Réponses
7
Affichages
298
Réponses
21
Affichages
743
Réponses
10
Affichages
598
Réponses
5
Affichages
468

Statistiques des forums

Discussions
314 634
Messages
2 111 434
Membres
111 135
dernier inscrit
jessica.goncalves6@gmail.