Problème Fonction Match VBA

Bonjour,

J'ai parcouru différents Forums mais je ne trouve aucun post qui puisse m'aider à résoudre mon problème.

J'ai créé une base article et je souhaite rechercher le numéro de la ligne excel de cet article afin de pouvoir derrière le modifier.

La plupart de mes références articles sont sous forme "numérique" (1000129,1000120...)

Je m'heurte à une sorte de problème de format voici mon code:

Sub test()

Dim lig_article As Integer

'--------------------------Test avec article "texte"

article = "Test" 'article contient du texte => OK

lig_article = Application.WorksheetFunction.Match(article, Sheets("Base article").Range("A:A"), False)

-------------- Test avec article "numérique"

article = "1000120" 'Article "numérique" bien qu'au format texte => KO et

"Erreur 1004 Impossible de lire la propriété Match de la classe WorksheetFunction.

lig_article = Application.WorksheetFunction.Match(article, Sheets("Base article").Range("A:A"), False)

End Sub

Je définis bien mon article comme String mais lorsque celui prend une valeur "numérique", j'ai le message d'erreur

"Erreur 1004 Impossible de lire la propriété Match de la classe WorksheetFunction.

J'ai essayé de faire article = Cstr(article) mais le résultat est est le même.

Pouvez-vous m'aider s'il vous plait ?

Merci d'avance

Bonjour et bienvenue sur le forum

Tu devrais joindre ton fichier;

Bye !

Bonjour,

Merci pour le retour. Je vous joins le fichier, La macro est dans Module 1.

Bonne journée

Je définis bien mon article comme String

C'est de là que vient ton problème : dans ta feuille, 1000120 est un nombre alors que "Test" est un texte.

La fonction match va donc chercher une donnée "String" dans ta feuille et ne trouvera que si tu lui demandes de chercher "Test" car les autres cellules contiennent des nombres

Remède : déclare ta variable "Article As Variant" et tu ne devrais plus avoir de problème.

Ok ?

Bye !

Bonjour GMB,

Cela fonctionne Merci. je ne connaissais pas la particularité du type VARIANT.

Par contre juste pour mon info, quand je mets:

Article = "1000120" => KO

MAIS

Article = Range("A3").Value =>OK

Sais-tu à quoi cela est dû ?

Bonne journée,

Maxime

Bonjour

Dans ta colonne A, les valeurs que tu as sont des nombres, comme en A3 où tu as 1000120. Et même si tu formates la cellule en texte, la valeur se convertit automatiquement en format nombre

Quand tu poses Article = ‘’1000121’’, Article prend le type ‘’Texte’’

Et tu ne trouveras donc pas avec ta fonction la valeur 3 pour lig_article.

Si en revanche tu fais précéder tous les nombres de ta colonne d’un apostrophe, (‘ex : ‘1000120) la cellule sera automatiquement convertie en texte et un petit triangle vert dans l’angle supérieur gauche de la cellule apparaîtra pour bien indiquer que ces nombres sont considérés comme du texte.

Ainsi, si tu poses Article = "1000120" , tu obtiendras bien lig_article = 3

OK ?

yes merci je me doutais de la réponse.

Du coup dans mon module de création article j'ai bien fait ça

Article = " ' " & Article

et ça fonctionne parfaitement.

En tout cas merci vraiment pour ton aide.

A+

Maxime

Rechercher des sujets similaires à "probleme fonction match vba"