VBA Recherche d'une chaîne de caractère

Bonjour à tous,

voilà en parcourant les forums et site internet j'ai réussi à trouver un code qui répond à mon besoin mais que partiellement.

En fait je dois effectuer un recherche V d'un onglet à un autre en VBA, sauf que ce sont des numéros qui ressemblent à ceci:

00001515

toujours avec 4 zéros devant sauf que parfois d'un onglet à l'autre la manière d’écrire ce code peut différer:

Feuille 1 : 1515 (avec mise en forme cellule spécial 00000000) ce qui visuellement donne 00001515

Feuille 2 : '00001515 (le fameux petit apostrophe ( ' ) devant les chiffres) pour éviter que les zéros ne s'effacent.

et du coup pour un recherche V c'est ennuyeux car pour lui ce n'est pas la même chose, et donc il ne trouve pas le code.

pour palier à ce problème je demande en VBA:

si le code est supérieur à 4 caractères alors, ne prendre que les chiffres après zéro.

ce qui donne ceci:

            If Len(CODE_N) > 4 Then 'si valeur supérieur à 4 caractères
                            CODE_N = Mid(CODE_N, 5, 4) 'prend 5eme caractère puis 4 suivants
                       Else
                            CODE_N = Feuille_N.Cells(i, 4) 'prend la valeur de la cellule
                    End If
                   

Ma variable CODE est donc tout le temps une valeur à 4 chiffres à chaque lignes analysées par la boucle.

Je me sers donc de ce CODE pour faire un recherche V:

 Set CODE_N1 = Feuille_N1.Range("O9:O3000").Find(CODE_N, LookIn:=xlValues, lookat:=xlWhole)

donc ici le problème c'est que, je recherche bien mon "CODE réduit" (CODE N), mais je le compare dans un tableau

Feuille_N1.Range("O9:O3000")

ou les CODES eux sont toujours dans une forme non traités qui peuvent avoir 4 ou plusieurs caractères.

aujourd'hui j'ai contourné ce problème, mais il n'est pas très pro, en fait dans ma macro je fais un copié collé en boucle à coté de la colonne en question, avec la réduction de caractère vu plus haut.

j’obtiens donc un nouveau tableau avec des codes réduits à 4 caractère à coté des codes non traitées, et je décale ma recherche d'une colonne du coup.

Feuille_N1.Range("O9:O3000")

devient

Feuille_N1.Range("P9:P3000")

ma question donc, est-il possible de de ce passer de cette étape de copie en dur, en traitant les codes du tableau ("O9:O3000") de la feuille 2, mais en les "Stockant" dans une variable qui serait un tableau complet plutôt que de les coller en dur.

J’espère que je ne suis pas trop brouillon dans mes explications, pas évident de parler avec les bons termes quand on est débutant.

bonjour,

si o9:o3000 contient des références en 9 chiffres précédées du signe '(=text) et que code_N est numérique

Set CODE_N1 = Feuille_N1.Range("O9:O3000").Find(format(CODE_N,"000000000"), LookIn:=xlValues, lookat:=xlWhole)

bonjour,

Pas trop compris ton histoire avec plusieurs feuilles mais une chose est sure : Tu n'as pas besoin de chercher à évaluer le nombre de zéro placés devant :

Val(ActiveCell) te renvoie toujours ce nombre sans les zéros placés devant.

De même si Range("A1") ='00000255

Val(Range("A1")) =255

A+

Rechercher des sujets similaires à "vba recherche chaine caractere"