Cellule identique / itération

Fermé
excelnoob - 10 sept. 2014 à 16:09
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 12 sept. 2014 à 13:48
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

HiTech4ever Messages postés 98 Date d'inscription mardi 2 septembre 2014 Statut Membre Dernière intervention 18 décembre 2016 20
10 sept. 2014 à 17:25
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
12 sept. 2014 à 13:48
De rien,

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

Cdlmnt
1
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
10 sept. 2014 à 17:55
Bonjour

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

Cdlmnt
0
Bonjour,

ça fonctionne très bien merci!!

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

J'essaye tout ça et je vous tient au courant :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OeufsAuRiz Messages postés 8 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 11 septembre 2014 1
11 sept. 2014 à 15:16
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
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 11/09/2014 à 20:17
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
Merci infiniment,
C'est exactement ce qu'il me fallait,
Cordialement,
0