Eviter doublons avec conditions !!!

samimi94

XLDnaute Occasionnel
Bonsoir à Tous,

Voici un concept que je souhaite appliquer à un de mes fichiers, dont je n'ai pas trouver de post sur le forum qui ressemble à cela.

Je désire éviter les doublons dans la colonne A, pour cela je
souhaite dans la mesure du possible, via une macro
ajouter un caractère à la suite du nom si doublon il y a !

EX : DUPONT existe en A4, nous aurons en A9 DUPONT1 et en A15 DUPONT2

Petite particularité, cette colonne ne doit pas excéder les 20 Caractères, ce qui sous-entend que s'il existe un nom atteignant le nombre maximal, cette même macro ne devra pas ajouter mais supprimer un caractère afin de respecter le format de colonne.

EX : TARTANPIONETCOMPAGNI existe en A2 s'il est présent en A5 il deviendra TARTANPIONETCOMPAGN, s'il existe aussi en A10 il deviendra TARTANPIONETCOMPA etc...

D'avance, merci pour votre aide.
 

samimi94

XLDnaute Occasionnel
Re : Eviter doublons avec conditions !!!

Bonsoir à tous,

Je reviens vers vous suite à un problème faisant référence à ce post.

J'ai donc repris ce post afin de ne pas perdre le fil.
Apres avoir appliqué les codes VBA fournit par BHBH (qui m'ont été d'un grand secours) il s'avère que la macro ne répond plus comme je le souhaite, malgré le fait que cela a bien fonctionné pendant quelques jours.

Mon soucis étant, dans la colonne A, je ne souhaite pas avoir de doublons par conséquent j'applique un compteur quand il y en a (Ex : si j'ai deux Dupont, j'aurai Dupont0 et Dupont1, par contre si je n'ai qu'un seul Dupont je ne souhaite pas avoir Dupont1 mais simplement que mon Dupont reste Dupont).

Or après l'avoir testé quelques temps il s'avère que systématiquement j'ai Dupont1 même s'il est unique !!!

Quelqu'un aurait-il une aide ou un conseil à me formuler, bien que BHBH m'a déjà pas mal aidé à avancer (que je remercie de nouveau au passage)?

Mon code actuel est :

Code:
Dim pl As Range, DerLig As Double, i As Double, Nb As Double
Set pl = Range("A2:A" & [A65536].End(xlUp).Row)
pl.Name = "base"
DerLig = [A65000].End(xlUp).Row
For i = DerLig To 1 Step -1
    Nb = Evaluate("COUNTIF(base,""" & Cells(i, 1) & """)")
    Cells(i, 1) = IIf(Len(Cells(i, 1) & Nb) > 20, Left(Cells(i, 1), 20 - Len(CStr(Nb))) & Nb, Cells(i, 1) & Nb)
Next i

D'avance, merci et bonne soirée à tous.
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Eviter doublons avec conditions !!!

Bonsoir,
essaie avec cette modification :

Code:
Dim pl As Range, DerLig As Double, i As Double, Nb As Double
Set pl = Range("A2:A" & [A65536].End(xlUp).Row)
pl.Name = "base"
DerLig = [A65000].End(xlUp).Row
For i = DerLig To 1 Step -1
    Nb = Evaluate("COUNTIF(base,""" & Cells(i, 1) & """)")
   [COLOR="Red"] If Nb > 1 Then _[/COLOR]
    Cells(i, 1) = IIf(Len(Cells(i, 1) & Nb) > 20, Left(Cells(i, 1), 20 - Len(CStr(Nb))) & Nb, Cells(i, 1) & Nb)
Next i
 

samimi94

XLDnaute Occasionnel
Re : Eviter doublons avec conditions !!!

Bonsoir BHBH,

Je viens de tester la modification que tu viens de me fournir, et encore une fois tu m'apportes une solution efficace et qui fonctionne à merveille :)

Si je puis me permettre, sais-tu pourquoi cela a pourtant bien fonctionné avant et ensuite plus du tout le même résultat ?

Merci encore.

Passes une tres bonne soirée.
 

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD