Rechercher chaîne de caractère d'une cellule dans une colonne
Bonjour à tous ! Et merci de prendre sur votre temps pour me répondre.
Alors voilà, j'ai un classeur avec 2 feuilles :
1) La première contient en colonne A une liste d'acronymes de type XXX ou XXX/XXX ou XXX/XXX/XXX pour Direction/Département/Service. On a dans cette colonne 1 acronyme / cellule.
2) La deuxième contient en colonne U une liste d'acronymes du même type. Seulement, soit ces acronymes peuvent être unique / cellule soit il peut y en avoir plusieurs au sein de la même cellule, et de la forme suivante :
XXX | XXX/XXX | XXX/XXX/XXX
Mon problème :
A côté de cette colonne A de la première feuille, et donc en colonne B, je souhaiterai indiquer si l'acronyme en colonne A est présent au sein de la colonne U de la deuxième feuille et de la manière suivante : O (Oui) ou N (Non).
Je suis géné par les caractères précédents ou suivants l'acronyme à rechercher et j'ai tout essayé depuis ce matin 09H mais rien n'y fait.
Donc si vous avez une ébauche de formule, opérationnelle ou non, je suis preneur et vous ferai les retours très rapidement.
Merci de votre aide les amis !
P.S : Je suis informaticien donc n'ayez pas peur du jargon technique, je sais c'est paradoxale ^^
Bonjour Lolopiopio, bonjour le forum,
Explications très claires mais un fichier exemple serait le bienvenu...
Bonjour Lolopiopio, bonjour le forum,
Explications très claires mais un fichier exemple serait le bienvenu...
Tu as raison, c'est un oubli de ma part !
Merci de ton temps ThauThème
Re,
Essaie comme ça :
Sub Macro1()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim DL1 As Integer 'déclare la variable DL1 (Dernière ligne onglet 1)
Dim DL2 As Integer 'déclare la variable DL2 (Dernière ligne onglet 2)
Dim TV1 As Variant 'déclare la variable TV1 (Tableau des Valeurs 1)
Dim TV2 As Variant 'déclare la variable TV2 (Tableau des Valeurs 2)
Dim I1 As Integer 'déclare la variable I1 (Incrément 1)
Dim I2 As Integer 'déclare la variable I2 (Incrément 2)
Dim TEST As Boolean 'déclare la variable TEST
Set O1 = Worksheets("Feuil1") 'définit l'onglet O1
Set O2 = Worksheets("Feuil2") 'définit l'onglet O2
DL1 = O1.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL1 de la colonne A de l'onglet O1
DL2 = O2.Cells(Application.Rows.Count, "U").End(xlUp).Row 'définit la dernière ligne éditée DL2 de la colonne U de l'onglet O2
TV1 = O1.Range("A2:B" & DL1) 'définit le tableau des valeurs TV1 (avec la colonne B)
TV2 = O2.Range("U3:U" & DL2) 'définit le tableau des valeurs TV2
For I1 = 1 To UBound(TV1, 1) 'boucle 1 : sur toutes les lignes I1 du tableau des valeurs TV1
TEST = False 'réinitialise la variable TEST
For I2 = 1 To UBound(TV2, 1) 'boucle 2 : sur toutes les lignes I2 du tableau des valeurs TV2
If InStr(1, TV2(I2, 1), TV1(I1, 1), vbTextCompare) <> 0 Then 'condition : si le texte de la donnée ligne I1, colonne 1 de TV1 est compris dans la donnée ligne I2 colonne 1 de TV2
TV1(I1, 2) = "O" 'envoie "O" dans la donnée ligne I1 colonne 2
TEST = True 'définit la variable TEST
Exit For 'sort de la boucle 2
End If 'fin de la condition
Next I2 'prochaine ligne de la boucle 2
If TEST = False Then TV1(I1, 2) = "N" 'si TEST est [vrai], envoie "N" dans la donnée ligne I1 colonne 2
Next I1 'prochaine ligne de la boucle1
'renvoie le tableau TV1 dans la cellule A2 redimensionnée
O1.Range("A2").Resize(UBound(TV1, 1), 2).Value = TV1
End SubMerci infiniment ThauThème pour ton aide et cette jolie macro, mais surtout pour ton investissement !
Tout fonctionne de mon côté après modification des variables, t'es le meilleur