Mettre une rechercheV dans userform
Bonjour :)
Je connais la fonction rechercheV sur excel mais j'en aurais besoin dans un code VBA.
Pour le contexte je faire une userform plutôt pré-remplie à son ouverture par l'utilisateur.
Tout le contenu de la userform dépend du choix de l'utilisateur dans la combobox1.
Dans une feuille à la fin du fichier excel se trouve un tableau avec une colonne pour les options de la combobox1 et une colonne pour le nom de l'indicateur correspondant.
Je voudrais une façon plus efficace que ce que j'ai fait avec pleins de if (cf ci-dessous), en utilisant la fonction VLookUp qui irait chercher la réponse dans le tableau.
J'ai trouvé plusieurs codes proposant cette fonctionnalité sur internet, mais aucune ne fonctionne dans mon cas... ou bien il y a une légère nuance que je n'ai pas comprise.
merci pour l'aide que vous pourrez m'apporter !
Elisa
Bonjour Elisaaaaa,
Correction par
sheets("Feuil23").Range("D2:E23") ou Feuil23.Range("D2:E23")
Sinon
Result = Cells(Range("D2:E23").Find(choix).Row, "E")Si en colonne E se trouve l'indicateur à trouver.
Bonjour X Cellus,
merci beaucoup pour ta réponse, ça m'a bien aidé. J'ai choisi la version Application.WorksheetFunction.VLookup car dedans je faisais bien allusion à l'onglet dans lequel je voulais aller chercher ma donnée.
Ce qui m'amène à un deuxième problème. J'ai voulu utiliser cette même formule pour aller chercher dans un autre onglet du classeur (cette fois-ci feuil4 ) mais ça ne fonctionne plus. Je pense du moins que c'est quand j'essaye de récupérer le numéro de ligne auquel se trouve ma recherche qu'il y a le problème d'éxecution (cf ci-dessous : erreur à l'exécution de la ligne NuméroLignes = NumeroLignes.Row).
De plus, cette façon de rapport le résultat d'une rechercheV fonctionne-t-elle quand la recherche à plusieurs résultats ? Plusieurs lignes comportant mon nom d'indicateur ? Car le code ne va jusqu'à cette dernière ligne que pour les indicateurs qui sont représentés qu'une seule fois dans l'onglet données feuil4, dès que je prends un autre indicateur la ligne du dessus ne fonctionne pas non plus.
Encore merci pour ton aide !
Juste pour compléter le message du dessus :
J'ai essayé avec la fonction MATCH, ce qui semble fonctionner pour me donner une valeur de ligne, mais j'ai toujours le problème quand il y a plusieurs lignes, comment je peux faire pour concaténer les solutions ?
J'ai également identifier un autre problème c'est que je dois, par cette fonction MATCH, trouver toutes les lignes dont l'indicateur commence par "ELE" (c'est un exemple de nom), mais mes indicateurs ont une suite derrière, et mettre 1 ou -1 en arg me donne une réponse fausse :
voici la version avec MATCH :
Merci :)
Suite,
Personnellement j'utilise plus Find, et de cette façon.
C'est plus rapide car la plage de recherche va se réduire au fil des matches
NumLig = 30
Debut:
On Error Goto ErrLigne
'Plage variable en fonction du résultat de NumLig
NumLig = Feuil4.Range("C" & NumLig & ":C400").Find(NomIndicateur).Row
'Eventuellement pour vérifier
'MsgBox NumLig
If NumLig < 400 Then GoTo Debut
ErrLigne:
MsgBox "Plus ou pas de concordance"Note: Utiliser plutôt le </> du menu du message pour poster le code plutôt qu'une image. Revoir la charte.
Bonjour,
Je comprends votre code et la fonction find dans l'ensemble mais dans mon cas le code proposé ne fonctionne pas et ne renvoie pas de numéro de ligne mais que le message de non correspondance. En ayant testé msgbox NumeroLignes en cas d'erreur il ne change juste jamais de valeur, ne trouve jamais de correspondance. Alors que je sais que la valeur que je chercher est à la ligne 35.
De plus comment faire quand il y a plusieurs lignes ? et que je veux tester en correspondance que les premiers caractère du nom ? (exemple tous les indicateurs qui commencent par ELE_...)?
(et désolée pour les images au lieu du code texte :/ )
Bonjour elisaaaaa
Je me permets d'intervenir car X Cellus aurait dû vous le dire
Ici, vous ne devez pas poster du code sous forme d'image... vous devez copier votre code, cliquer sur le bouton
Puis le coller à l'intérieur de la fenêtre !
De plus vous être nouvelle sur le forum depuis juin, vous ne vous êtes jamais présenté, donc :
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités du nouveau forum
Merci de votre participation