Cellule identique / itération

Bonjour,

Je souhaiterais créer une macro ou utiliser une formule me permettant d'itérer automatiquement dans mes colonnes.

Clairement : si deux valeurs identiques dans ma colonne A alors au lieu d'avoir Toto en A1 & A2 je voudrais par exemple avoir toto1 en A1 et toto2 en A2 de manière automatique.

Des idées?

Merci d'avance

7 réponses

  1. Bonjour,

    Il y a la formule =EXACT() qui peut être combinée à =OU()
    Voir le lien ci-dessous pour plus de détails.
    http://office.microsoft.com/fr-001/excel-help/comparer-le-contenu-de-cellules-HP003056130.aspx

    Par contre je pense que ce que tu veux faire est impossible, ça génère ce qu'on appel une "référence circulaire"
    https://www.excel-plus.fr/intermed/techavanc/la-reference-circulaire/

    ça serait faisable si tu utilise 3 colonnes : une pour saisir les données brute (toto, toto, poto, moto..), une pour y insérer le résultat de comparaison, et une 3é pour le résultat final (toto1, toto2, poto, moto..)

    PS : la 3é colonne devrait contenir une formule de test dont le résultat dépend du contenu de la colonne 2.

    tiens nous au courant..
    1
    1. De rien,

      Peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

      Cdlmnt
      1
      1. Bonjour

        Une solution via vba
        https://www.cjoint.com/?3Ikr5e4pN3L

        Cdlmnt
        0
        1. Bonjour,

          ça fonctionne très bien merci!!

          Cordialement
          0
        2. Re bonjour,

          En fait je viens de me rendre compte de quelque chose :

          Quand j'exécute la macro pour la première fois, j'ai bien toto1, toto 2 et toto 3.
          Par contre, en imaginant que quelqu'un reprenne le fichier et veuille relancer le vba en remettant toto: rien n'est identique mais on aura toto1, toto11, toto21 et toto31 (et ce à l'infini)

          Une idée de solution?

          Merci d'avance
          0
      2. Merci pour les réponses,

        J'essaye tout ça et je vous tient au courant :)
        0
        1. Faudrait peut-être séparer le texte du nombre et trouver le max pour chaque texte identique pour incrémenter de un à partir du max les prochaines valeurs après je ne connais pas trop le langage vba excel...
          0
          1. A vrai dire le gros souci, c'est que même si je sélectionne une seule case vide du tableur, il va me mettre des 1 à chaque fois que je lance la macro....

            Je sais pas comment régler ça...

            Merci d'avance,

            Cordialement
            0
            1. Le principe : nettoyer les "noms-chiffrés" avant d'envoyer le chiffrage
              Tu remplaces le code par celui-ci

              Public Function Nettoie(s As String) As String
              If Not IsNumeric(Right(s, 1)) Then
              Nettoie = s
              Else
              Nettoie = Nettoie(Left(s, Len(s) - 1))
              End If
              End Function

              Public Sub Ok()
              Dim plage As Range, cel As Range
              Dim obn As Object, cle As String, cles, k As Long, n As Long, numnom As Long, nom As String
              Set plage = Selection
              ' nettoyer plage
              For Each cel In plage
              cel.Value = Nettoie(cel.Value)
              Next cel
              ' numerotage
              Set obn = CreateObject("scripting.dictionary")
              For Each cel In plage
              cle = cel.Value
              If Not obn.exists(cle) Then obn.Add cle, 1
              Next cel
              cles = obn.keys
              n = obn.Count
              For k = 0 To n - 1
              nom = cles(k)
              numnom = 0
              For Each cel In plage
              If cel.Value = nom Then
              numnom = numnom + 1
              cel.Value = nom & numnom
              End If
              Next cel
              Next k
              End Sub

              RQ. Pour attribuer un raccourci clavier à la macro OK
              Depuis la feuille de calcul
              Outils/Macro
              Selectionner la macro OK
              Option/Raccourci clavier et mettre Ctrl+k (par exemple)

              Cdlmnt
              0
              1. Merci infiniment,
                C'est exactement ce qu'il me fallait,
                Cordialement,
                0