Incrémenter des doublons sur Excel

Résolu
Bonjour,
Je suis sur excel 2003.
Je suis en train de créer des login pour des personnes afin qu'elles puissent se connecter à un domaine. Pour créer ce login je colle les 3 premières lettres du nom et du prénom (ex: "DUPONT Catie" donne "dupcat").
Le problème, c'est que sur plusieurs milliers de login, j'ai des doublons, parfois 3 ou 4 occurrences identiques.
Je voudrais dans un premier temps que chacun des doublons trouvés soient automatiquement incrémenté d'un chiffre 1,2,3, etc. (Ex: "DUPONT Catie" donne "dupcat1" et "DUPRES Catherine" donne "dupcat2", etc.)
Je voudrais dans un deuxième temps que cette macro s'applique sur une colonne et que les modifications soient écrit dans une autre colonne.
Piouf, j'ai eu beau chercher je n'ai rien trouvé sur la toile....
Donc un grand merci d'avance !

6 réponses

  1. Contributeur
    Bonjour

    Problème classique; proposition sans macro

    tes noms prénoms en colonne A et B

    en colonne C ( à masquer)
    =GAUCHE(A2;3)&GAUCHE(B2;3)
    en colonne D
    =SI(NB.SI(C$2:C$28;C2)>1;C2&NB.SI(C$2:C2;C2);C2)

    formules à tirer vers le bas

    maintenant pour des milliers de login, on pourrait passer par VBA (bof!): la méthode est la m^me que par formule + boucle et variable-tableau pour la rapidité;si ca t'intéresse, je reviens en fin de journée (rando) mais un forumeur devrait pouvoir te répondre avant mon retour!
    1
    1. Bonjour le fil,

      Je pense qu'il est possible d'obtenir directement le résultat, à partir de A2 saisir nom et prénom
      DUPONT Catie etc ...

      en B2 coller cette formule et incrémenter vers le bas

      =GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3);;)&NB.SI($A$2:A2;A2)

      et si on souhaite numéroter à partir du premier doublon

      =GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3);;)&SI(NB.SI($A$2:A2;A2)-1=0;"";NB.SI($A$2:A2;A2)-1)

      A+
      Mike-31

      Une période d'échec est un moment rêvé pour semer les graines du savoir.
      1
      1. Contributeur
        Salut le forum

        Mike, je ne crois pas que NB.SI($A$2:A2;A2) retrouve les doublons
        de DUPcat dans la colonne de noms. ("DUPONT Catie", "DUPRES Catherine")

        Première référence trouvée sera égale à 1
        =GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3);;)&NB.SI($B$1:B1;GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3)&"*";;))+1

        Pour avoir un code à deux chiifres
        =GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3);;)&TEXTE(NB.SI($B$1:B1;GAUCHE(A2;3)&SUBSTITUE(STXT(A2;CHERCHE(" ";A2)+1;3)&"*";;))+1;"00")

        Pour éliminer les majuscules
        =MINUSCULE(GAUCHE(A4;3)&SUBSTITUE(STXT(A4;CHERCHE(" ";A4)+1;3);;)&TEXTE(NB.SI($B$1:B3;GAUCHE(A4;3)&SUBSTITUE(STXT(A4;CHERCHE(" ";A4)+1;3)&"*";;))+1;"00"))

        Mytå
        0
    2. Bonjour,
      d'abord un grand merci à tous, je ne m'attendais pas a autant d'engouement pour mon problème, c'est super. Il faut que je fasse des essais. Je vous tiens au courant.
      A++
      1
      1. Bonjour,
        J'ai testé votre solution Michel_m et elle me satisfait.
        A vrai dire vu que je ne suis pas très doué, je n'ai pas réussi à adapter les autres solutions à mon tableau excel :-/

        Je rajouterais une contrainte supplémentaire, je m'explique:
        j'ai une macro qui colorie les cases des doublons détectés. Cependant elle n'est pas très pratique puisqu'il faut la lancer manuellement et ensuite choisir une plage d'application. De plus, tous les doublons se colorient en vert au lieu de mettre une couleur par groupe de doublons.

        Serait-il possible qu'en plus d'incrémenter les doublons, leurs cases soient soient colorées de différent couleur (ex: tous les "DUPONT1", "DUPONT2", "DUPONT3", etc. en bleu, les "DUPRES1", "DUPRES2", etc. en rouge) et ne pas avoir à rentrer manuellement la plage?

        Voici la macro:

        Sub MarqueLesDoublons()
        Dim Plage As Range, i&, Cell As Range, Rng As Range

        On Error Resume Next
        Set Plage = Application.InputBox("Plage à examiner", Type:=8)
        If IsEmpty(Plage) Then Exit Sub

        Application.ScreenUpdating = False

        For Each Cell In Plage
        For i = 1 To Plage.Count
        Set Rng = Cell.Offset(i)
        If Rng <> "" And Rng = Cell Then
        Cell.Interior.ColorIndex = 43
        Rng.Interior.ColorIndex = 43
        Exit For
        End If
        Next i
        Next Cell

        End Sub

        Je vous joint ci-dessous une partie de mon fichier excel, j'ai enlever une grande partie de mes colonnes et le nom et le prénom des utilisateurs pour une question de confidentialité...

        https://www.cjoint.com/?AIBchF9W2Qd

        Merci par avance
        0
        1. Salut,

          tu peux tout faire simplement sans passer par le VBA, dans mon exemple en A tu saisis le nom et prénom une formule recompose le nom et prénom en conservant que les trois premières lettres de chacun
          et une mis en forme conditionnelle pour coloriser uniquement les doublons. si tu souhaites que les tous les mots en doublon se colorisent, la formule est plus simple
          =NB.SI($A$2:$A$20;A2)>1

          https://www.cjoint.com/?AIBi5lyG472
          A+
          Mike-31

          Une période d'échec est un moment rêvé pour semer les graines du savoir.
          1
          1. Contributeur
            Bonjour,

            Je ne comprends pas trop ta démarche

            dans ton classeur, tu as une macro** qui t'incrémente les doublons et il suffirait alors d'affecter les couleurs sans avoir à réécrire une macro

            **:peut-^tre des petites modifs pour quelle respecte ta disposition

            tu dis
            1
            1. Bonjour Michel_m,
              j'ai une macro qui colorie tous les doublons mais avec une seule couleur sans les incrémenter. Moi je voudrais que cela les incrémente et que les couleurs soient différentes pour chaque groupe de login identiques (ex: tous les "DUPONT1", "DUPONT2", "DUPONT3", etc. en bleu, les "DUPRES1", "DUPRES2", etc. en rouge)
              je ne suis pas sûr d'avoir été plus clair, lol
              0
            2. Contributeur
              bonjour,

              Oui j'avais compris, merci, mais tu as une autre macro qui incrémente les doublons et on devrait pouvoir l'utiliser pour colorier les "familles" de doublons. Mais apparemment, cette macro (l'autre!!)ne te convient pas car, sinon, tu n'aurais pas poser ta question ?...

              donc, tu sors de ton obsession de ta macro-couleur et tu essaies de répondre à ma question-remarque, sinon, j'abandonne le suivi
              0
            3. Désolé Michel_m si mon ignorance vous a vexé. Vous avez déjà fait tant pour moi, je ne voudrais pas abuser de votre temps. Je vais me débrouiller avec tout ce que vous m'avez déjà apporté. Le reste c'est du perfectionnisme....
              Bonne continuation
              0