Microsoft 365 VBA débutante problème boucle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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) =...
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
288
Réponses
21
Affichages
852
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
773
Réponses
10
Affichages
674
  • Question Question
Microsoft 365 Problème Code VBA
Réponses
9
Affichages
383
Réponses
11
Affichages
568
Retour