Cellule identique / itération

excelnoob -  
ccm81 Messages postés 11033 Statut Membre -
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. HiTech4ever Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   20
     
    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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    De rien,

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

    Cdlmnt
    1
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

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

    Cdlmnt
    0
    1. excelnoob
       
      Bonjour,

      ça fonctionne très bien merci!!

      Cordialement
      0
    2. excelnoob
       
      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
  4. excelnoob
     
    Merci pour les réponses,

    J'essaye tout ça et je vous tient au courant :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. OeufsAuRiz Messages postés 22 Statut Membre 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
  7. excelnoob
     
    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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. excelnoob
       
      Merci infiniment,
      C'est exactement ce qu'il me fallait,
      Cordialement,
      0