Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Recherche chaîne de caractère

Remteyss

XLDnaute Junior
Bonjour,

Je fais de nouveau appel à votre aide ! J'écris actuellement un script VBA permettant à partir de deux fichiers sources, de créer un autre classeur.
Le fichier source A contient l'ensemble des objets. Dans le fichier source B, nous avons répertorié tous ces objets ainsi que leurs différents paramètres (un objet par ligne)
Enfin, on obtient le fichier final C en affichant les objets présents dans le fichier A avec pour chacun ses différents paramètres (qu'on récupère dans le fichier B).

Objet = Workbooks("A").Worksheets(3).Cells(k, l).Value
Set celluletrouvee = Workbooks("B").Worksheets(3).Range("H3:H369").Find(Objet, LookIn:=xlValues)

Puis avec une simple boucle me permettant de parcourir tout le tableau A, je parviens donc à "copier coller" les objets qui m'intéressent mais je rencontre deux soucis :

1) Certains objets du fichier A sont identiques à celui du B à l'exception près que du texte est ajouté à la suite
Par exemple l'objet du fichier A s'appelle "Objet_A_48V with external signal" alors que dans le fichier B il s'appelle simplement "Objet_A_48V".
Sauriez-vous m'aider tout en utilisant la fonction Find ? J'ai essayé en ajoutant LookAt = xlPart mais ça n'a pas l'air de fonctionner...

2) Le second problème est toujours lié à une différence de nom entre l'objet du fichier A et celui de fichier B
Dans le fichier A, nous avons l'objet "Objet_test_ABC" qui représente en fait trois objets dans le fichier B : "Objet_test_A", "Objet_test_B" et "Objet_test_C".

En attente de vos réponses, merci de votre aide par avance !
 

Remteyss

XLDnaute Junior
recherchez "Objet_A_48V"&"*" à la place de "Objet_A_48V with external signal"
ou "Objet_test_"&"*" à la place de"Objet_test_ABC"

Bonjour, je te remercie pour ton rapide retour. Le problème est que ma variable Objet prend la valeur de la chaîne de caractère du fichier A. Par conséquent le "Objet_A_48V with external signal" = Objet. Je voudrais alors que ma fonction Find soit capable de récupérer que "Objet_A_48V" puisqu'il est mentionné comme ceci dans le fichier B...
 

njhub

XLDnaute Occasionnel
Bonjour njhub
J'aimerais que tu m'expliques la différence qu'il y aurait entre
"Objet_A_48V"&"*"
et
"Objet_A_48V*"
Bonjour jmfmarques
En ajoutant "*" au contenu extrait d'une cellule, on peut l'automatiser, votre proposition, qui donnerait le même résultat de recherche est par contre à écrire en entier, l'un est obtenu par formule du type
Code:
=GAUCHE(A1;11)&"*"
, l'autre est susceptible de contenir des erreurs de transcription, genre la casse, l'espace qu'on a l'habitude de mettre après un mot etc..
 

Remteyss

XLDnaute Junior
Bonjour,
Je me permets de relancer cette discussion car je ne suis pas parvenu à résoudre mon problème.
Les propositions de njhub ne sont pas fausses mais elles correspondent pas tout à fait mon problème.

Pour synthétiser, j'ai une variable String que j'appelle texte et qui est défini comme suit :
texte = fichierA.Worksheets(3).Cells(k, l).Value

Selon les cellules, le texte pourrait être du type : "Objet_A_48V" ou "Objet_A_50V with ...." ou encore "Objet_A_52V by...".


J'utilise la fonction Find comme suit :
Set celluletrouvee = fichierB.Worksheets(3).Range("H3:H369").Find(texte, LookIn:=xlValues)

Je cherche en fait à chercher dans mon fichier B, selon les cas : "Objet_A_48V", "Objet_A_50V" ou encore "Objet_A_52V", c'est-à-dire que je voudrais que dès que le mot "with" ou "by" est repéré, si la partie précédente correspond, la cellule soit considéré comme trouvée !

Voila, en espérant que vous puissiez m'apporter une réponse !
Bonne journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…