Programmer une RechercheV en Visual Basic

tamarw Messages postés 6 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 25 février 2008 - 20 févr. 2008 à 18:29
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 21 févr. 2008 à 22:36
Bonjour,

Je souhaite programmer un bouton pour qu'il effectue une RechercheV en comparant un élément saisi dans une zone de texte à un tableau excel indépendant du document sur lequel je travaille.

Pouvez-vous m'aider concernant la formule à écrire.

Merci.

Tam

9 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 févr. 2008 à 00:29
Commence par faire une recherche du côté de
WorksheetFunction

et tu peux aussi regarder la fonction Find qui agit comme la recherche sous Excel (Ctrl-F)

Par la suite, tu pourrais revenir en nous disant si ça fonctionne ou sinon, nous donner la partie de code qui ne fonctionne pas pour qu'on puisse t'aider du mieux qu'on peut...

Et n'oublie pas de regarder les règlements ICI...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
tamarw Messages postés 6 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 25 février 2008
21 févr. 2008 à 10:56
Hello,

Si quelqu'un pouvait m'aider avec le code ci-dessous qui me pose problème, ce serait très sympa !

Merci d'avance.

Ps. je débute en VBA...

Private Sub CommandButton1_Click()
Sub UseFunction()
Dim myRange As Range
Dim myCell As Long
Set myCell = Worksheets("Sheet1").Long("B2")
Set myRange = Worksheets("[fichier-article.xls]Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.VLookup(myCell, myRange, 2, False)
MsgBox answer
End Sub
End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 févr. 2008 à 11:21
Ouh làlà !...

1- Tu ne peux pas déclarer une Sub ou Function à l'intérieur d'une autre Sub ou Function
Tu dois plutôt procéder comme ceci
Private Sub CommandButton1_Click()
    Call UseFunction
End Sub

Sub UseFunction()
    'Ton code
End Sub

2- Long n'est pas une propriété ou une méthode de Worksheets
Set myCell = Worksheets("Sheet1").Long("B2")
Il faudrait savoir ce que tu veux retourner dans MyCell
Si c'est la valeur de type Long de la cellule, tu dois écrire quelque chose comme
myCell = Worksheets("Sheet1").Range("B2").Value
ou
myCell = CLng(Worksheets("Sheet1").Range("B2").Value)

Si tu veux que myCell soit utilisée comme une vraie cellule avec ses propriétés et méthodes (ce que tu sembles vouloir faire), tu dois la déclarer As Range et coder comme ceci
Dim myCell As Range
Set myCell = Worksheets("Sheet1").Range("B2")

3- answer n'est pas déclaré (Dim) et ce serait préférable...

Est-ce que ça fonctionne mieux maintenant ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 févr. 2008 à 11:23
J'oubliais...

Ne sélectionne "Accepté" que si une réponse a résolu ton problème. Autrement, il y aura moins de gens qui passeront par ici en passant que c'est résolu... Et d'autres passeront en pensant y trouver une solution qu'ils ne trouveront pas ...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tamarw Messages postés 6 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 25 février 2008
21 févr. 2008 à 12:09
Merci pour ta réponse, ça m'a permis d'avancer.

Toutefois, je rencontre un nouveau problème qui viendrait de la ligne en orange ci-dessous et je ne vois pas de quoi il s'agit.

Peux tu m'aider ?

Sub UseFunction()



Dim myRange As Range
Dim myCell As Long
Dim answer As Currency



myCell = Val(txtRef.Text)



Set myRange = Worksheets("[fichier-article.xls]Sheet1").Range("A2:C10")

erreur d'execution '9', l'indice n'appartient pas à la sélection



answer = Application.WorksheetFunction.VLookup(myCell, myRange, 2, False)



MsgBox answer



End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 févr. 2008 à 12:17
Essaie ceci
Set myRange = Workbooks("fichier-article.xls").Sheets("Sheet1").Range("A2:C10")

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
tamarw Messages postés 6 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 25 février 2008
21 févr. 2008 à 12:38
Le problème persiste.

J'ai essayer de mettre le tableau que j'appelle dans le même worksheet que celui où je travaile. donc j'ai écris :

Set myRange = Worksheets("Sheet1").Range("A2:C10")

et le même message d'erreur apparaît...

Je ne comprends pas pourquoi la fonction ne trouve pas mon tableau.
0
tamarw Messages postés 6 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 25 février 2008
21 févr. 2008 à 12:50
J'ai aussi essayé en écrivant le chemin complet de mon worksheet de référence et j'ai le même problème:
Set myRange = Worksheets("C:\Documents and Settings\...\Bureau\[fichier-article.xls]Sheet1").Range("A2:C10")
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 févr. 2008 à 22:36
Tu dois faire la différence entre
Workbooks (collection de classeurs)
et Worksheets (collection des feuilles d'un classeur)

Est-ce que ta feuille se nomme bien "Sheet1" ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous