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

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi