Ajout d'un mot selon certaines conditions
Bonjour a vous,
Je voudrais une macro qui en cellule A17, rajoute un mot (,macho ou ,hembra) selon si dans cette même case (A17) case il y ai:
Pour Macho:
FLIP ALDO FK REMS CLINEX KO ZORO 2F COJAK ALPHA MERT DIGIT QAZI FRER MONO G403 LIPS BOITE ARTHUR VIN BO PELE L10 AL M20 NEZ P40
Pour hembra:
E66 2L NARINE O203 PP PIRAT 274 277 EPIS Z A330 NEIG MA ALPHAF DIANA 2T 360 PUNK G400 MARILIN L11 M21 O30 FOFOL
Merci à vous d'avance
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Salut,
Peux tu joindre un fichier d'exemple ?
J'avoue ne pas très bien comprendre ta demande.
Tu veux remplacer dans la Cellule A17 qui contient :
FLIP ALDO FK REMS CLINEX KO ZORO 2F COJAK ALPHA MERT DIGIT QAZI FRER MONO G403 LIPS BOITE ARTHUR VIN BO PELE L10 AL M20 NEZ P40 par le mot 'Macho'
ou remplacer
E66 2L NARINE O203 PP PIRAT 274 277 EPIS Z A330 NEIG MA ALPHAF DIANA 2T 360 PUNK G400 MARILIN L11 M21 O30 FOFOL
par 'hembra'
Ou alors tu veux ajouter les mots a la suite ?
FLIP ALDO FK REMS CLINEX KO ZORO 2F COJAK ALPHA MERT DIGIT QAZI FRER MONO G403 LIPS BOITE ARTHUR VIN BO PELE L10 AL M20 NEZ P40 - >
FLIP ALDO FK REMS CLINEX KO ZORO 2F COJAK ALPHA MERT DIGIT QAZI FRER MONO G403 LIPS BOITE ARTHUR VIN BO PELE L10 AL M20 NEZ P40 Macho
Besoin de plus d'info.
Bigdams
Bonjour
Bonjour Bigdams
J'ai compris si la cellule A17 contient 1 de ces mots, rajouter .....
la macro dans ce sens
Sub truc()
Dim Macho
Dim Hembra
Dim I As Integer
Macho = Array("FLIP", "ALDO", "FK", "REMS", "CLINEX", "KO", "ZORO", "2F", "COJAK", "ALPHA", _
"MERT", "DIGIT", "QAZI", "FRER", "MONO", "G403", "LIPS", "BOITE", "ARTHUR", _
"VIN", "BO", "PELE", "L10", "AL", "M20", "NEZ", "P40")
Hembra = Array("E66", "2L", "NARINE", "O203", "PP", "PIRAT", "274", "277", "EPIS", "Z", _
"A330", "NEIG", "MA", "ALPHAF", "DIANA", "2T", "360", "PUNK", "G400", _
"MARILIN", "L11", "M21", "O30", "FOFOL")
With Range("A17")
For I = 0 To UBound(Macho)
If UCase(.Value) = Macho(I) Then .Value = .Value & ",macho": Exit Sub
Next I
For I = 0 To UBound(Hembra)
If UCase(.Value) = Hembra(I) Then .Value = .Value & ",Hembra": Exit Sub
Next I
End With
End SubL'idée est bien celle là banzai64, mais quant je lance la macro rien ne se produit.
J'envoie un exemple en espérant que cela puisse aider.
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Bonsoir,
Oui c'est normal dans le code de Banzai64, on compare la valeur de la cellule avec un des mots de la liste contenu dans le tableau.
Or dans ton exemple on a :
A17 = (0108, ALPHAF)
En fait tu veux savoir si le mot est contenu dans la cellule, dans ce cas il faut utiliser l'instruction InStr
Dans ton cas tu peux utiliser la macro de Banzai64 en modifiant les lignes suivantes :
Banzai64 :
If UCase(.Value) = Macho(I) Then .Value = .Value & ",macho": Exit Sub
If UCase(.Value) = Hembra(I) Then .Value = .Value & ",Hembra": Exit Sub
par
If InStr(1, UCase(.Value), Macho(I)) > 0 Then .Value = .Value & ",macho": Exit Sub
If InStr(1, UCase(.Value), Hembra(I)) > 0 Then .Value = .Value & ",Hembra": Exit Sub
Tu auras pour résultat : A17 = (0108, ALPHAF),macho
Si tu souhaites avoir le résultat entre parenthèses:(A17 = (0108, ALPHAF,macho)
If InStr(1, UCase(.Value), Macho(I)) > 0 Then .Value = Left(.Value, Len(.Value) - 1) & ",macho)": Exit Sub
If InStr(1, UCase(.Value), Hembra(I)) > 0 Then .Value = Left(.Value, Len(.Value) - 1) & ",Hembra)": Exit Sub
Dis moi si c'est bon ?
++
Big
Bonsoir
J'ai modifié la macro pour tenir compte des nouvelles contraintes
Mais cette macro fonctionnera si les données sont toujours dans le même style
Présence ou absence de "(" (parenthèse ouvrante)
Présence ou absence de ")" (parenthèse fermante)
Données séparées par une , (virgule)
Sub truc()
Dim Macho
Dim Hembra
Dim I As Integer
Dim K As Integer
Dim Tablo
Macho = Array("FLIP", "ALDO", "FK", "REMS", "CLINEX", "KO", "ZORO", "2F", "COJAK", "ALPHA", _
"MERT", "DIGIT", "QAZI", "FRER", "MONO", "G403", "LIPS", "BOITE", "ARTHUR", _
"VIN", "BO", "PELE", "L10", "AL", "M20", "NEZ", "P40")
Hembra = Array("E66", "2L", "NARINE", "O203", "PP", "PIRAT", "274", "277", "EPIS", "Z", _
"A330", "NEIG", "MA", "ALPHAF", "DIANA", "2T", "360", "PUNK", "G400", _
"MARILIN", "L11", "M21", "O30", "FOFOL")
With Range("A17")
Tablo = Split(Replace(Replace(.Value, "(", ""), ")", ""), ",")
For I = 0 To UBound(Macho)
For K = 0 To UBound(Tablo)
If Trim(UCase(Tablo(K))) = Macho(I) Then .Value = .Value & ",macho": Exit Sub
Next K
Next I
For I = 0 To UBound(Hembra)
For K = 0 To UBound(Tablo)
If Trim(UCase(Tablo(K))) = Hembra(I) Then .Value = .Value & ",hembra": Exit Sub
Next K
Next I
End With
End Subc'est super, par contre le nom se rajoute après la parenthèse et il vaudrais que se soit à l'intérieur. Donc soit faire en sorte que la case 17 n'est pas de parenthèse fermante (au quel cas je peut le faire mais que dois-je modifier dans le code que tu ma donnée), soit fair en sorte que sa le rajoute dans la parenthèse.
Je suis vraiment désolé de ne pas avoir expliqué plus précisément dès le départ, excuse moi.
C'est bon, j'ai fait en sorte que la case 17 n'est pas de parenthèse fermante, sa l'aire de fonctionner, je te remercie pour ton efficacité.
Juste si tu pense que c'est une mauvaise idée, fait le moi savoir.
Merci encore.
Bonsoir
Pourquoi sans enlever la parenthèse tu ne prendrais pas la bonne idée de Bigdams
Macro modifiée
Sub truc()
Dim Macho
Dim Hembra
Dim I As Integer
Dim K As Integer
Dim Tablo
Macho = Array("FLIP", "ALDO", "FK", "REMS", "CLINEX", "KO", "ZORO", "2F", "COJAK", "ALPHA", _
"MERT", "DIGIT", "QAZI", "FRER", "MONO", "G403", "LIPS", "BOITE", "ARTHUR", _
"VIN", "BO", "PELE", "L10", "AL", "M20", "NEZ", "P40")
Hembra = Array("E66", "2L", "NARINE", "O203", "PP", "PIRAT", "274", "277", "EPIS", "Z", _
"A330", "NEIG", "MA", "ALPHAF", "DIANA", "2T", "360", "PUNK", "G400", _
"MARILIN", "L11", "M21", "O30", "FOFOL")
With Range("A17")
Tablo = Split(Replace(Replace(.Value, "(", ""), ")", ""), ",")
For I = 0 To UBound(Macho)
For K = 0 To UBound(Tablo)
If Trim(UCase(Tablo(K))) = Macho(I) Then .Value = Left(.Value, Len(.Value) - 1) & ",macho)": Exit Sub
Next K
Next I
For I = 0 To UBound(Hembra)
For K = 0 To UBound(Tablo)
If Trim(UCase(Tablo(K))) = Hembra(I) Then .Value = Left(.Value, Len(.Value) - 1) & ",hembra)": Exit Sub
Next K
Next I
End With
End SubDésolé j'avais pas vue, en tout cas je vous remercie a tout les deux pour ces macro maintenant il me reste plus qu'a comprendre ces lignes de commandes