Code VBA RechercheV, résultats multiples.

Solide

XLDnaute Nouveau
Bonjour,

Malgré moultes recherches je n'ai pas trouvé de solutions à mon problèmes.

J'ai un onglet base avec des numéraux de groupe et la colonne a côté des prénoms. Je souhaiterais via un code VBA faire une rechercheV sur un numéro de groupe (afficher dans une cellule du deuxième onglet) et que les prénoms qui lui sont associés soit afficher dans le deuxième onglet...

Je pense qu'avec une boucle ce doit être possible mais pour le moment toutes mes tentatives ont été infructueuses...

Un petit fichier pour être plus précis...

Un grand merci d'avance pour toute votre aide !
 

Pièces jointes

  • Need Help.xlsx
    9.3 KB · Affichages: 258

Modeste

XLDnaute Barbatruc
Re : Code VBA RechercheV, résultats multiples.

Bonjour Solide et bienvenue! :)

A tout hasard et au cas où une solution sans vba t'intéresserait, une proposition en pièce jointe (il suffit de changer le chiffre en C2)
Si VBA te semble utile, voir la méthode Find (avec FindNext)
 

Pièces jointes

  • RechercheMultiple.xlsx
    9.9 KB · Affichages: 714

Solide

XLDnaute Nouveau
Re : Code VBA RechercheV, résultats multiples.

Merci beaucoup pour ta réponse.

Effectivement je préfererai en VBA car c'est un fichier qui va "voyager" du coup je souhaiterais mettre une interface propre en evitant de faire apparaitre les formules...

Je vais me pencher sur le find next, si tu as une autre idee, n'hésite pas !

Encore merci !
 

Modeste

XLDnaute Barbatruc
Re : Code VBA RechercheV, résultats multiples.

Re-bonjour,

Je ne suis pas un expert, mais il me semble qu'avec une liste de dimension réduite, une simple boucle, testant le contenu de chaque cellule parcourue dans la colonne B de la feuille Base, serait assez simple à mettre en oeuvre.

Une autre solution pourrait être de mettre en oeuvre, via Vba, le filtre élaboré en copiant dans la feuille2.

La méthode Find restant une solution tout à fait recommandée (attention, lire les nombreux échanges ici même à ce sujet)
 

JNP

XLDnaute Barbatruc
Re : Code VBA RechercheV, résultats multiples.

Bonjour Solide et bienvenue, salut Modeste :),
Avec juste une petite boucle (Find et FindNext seraient plus rapide, mais ça dépends du nombre de ligne à scanner et la boucle est plus simple à comprendre :rolleyes:...)
Code:
Sub Test()
Dim I As Integer, J As Byte
J = 4
Sheets("Sheet2").Range("B4:C12").ClearContents
With Sheets("Base")
For I = 2 To .Range("B" & Rows.Count).End(xlUp).Row
If .Range("B" & I) = Sheets("Sheet2").Range("C2") Then
Sheets("Sheet2").Range("B" & J) = .Range("B" & I)
Sheets("Sheet2").Range("C" & J) = .Range("C" & I)
J = J + 1
End If
Next I
End With
End Sub
Par contre, en parlant d'interface propre, tu prends beaucoup plus de risques en mettant du VBA pour un fichier qui va voyager (le simple changement de nom de l'onglet peux faire planter ta Sub :eek:) que des formules dans des cellules verrouillées qui s'adapteront automatiquement en cas de modification de ton classeur (ajout ou suppression de ligne, modification du nom de l'onglet, etc. :rolleyes:), mais c'est à toi de voir :p...
Bonne suite :cool:
 

Solide

XLDnaute Nouveau
Re : Code VBA RechercheV, résultats multiples.

Bonjour JNP,

C'est exactement ce que je cherchais ! Ce forum est vraiment génial, merci à vous deux pour votre aide !

Je note ta remarque pour l'interface qui est effectivement tres pertinente, je vais peut etre revenir sur la solution de modeste...

Enfin vraiment merci ! Bonne journée à tous les deux !
 

Lilie_peche

XLDnaute Nouveau
Re : Code VBA RechercheV, résultats multiples.

Bonjour à tous,

J'ai un souci qui je pense rejoint cette discussion.

Voici ma fonction excel de base dans la cellule B2 de ma feuille1:
=SI(C2="";RECHERCHEV(D2;feuille2!B2:C595;1;FAUX);C2)​

Je voudrais utiliser cette formule dans toute ma feuille1 càd de B2 à B10000.

J'utilise une boucle for qui copie ma formule de B2 à B10000 :

For Each Bi In Sheets(1).Range("B2:B10000")
Bi.FormulaR1C1 = _​
"=IF(RC[1]="""",VLOOKUP(RC[2],affectation_ligne_jus!RC:R[593]C[1],1,FALSE),RC[1])"​
i = i + 1​
Next Bi

Mon problème est que ma plage de cellule B2:C595 utilisée pour la recherchev doit toujours être la même. Or avec ma boucle, ma plage s'incrémente à chaque fois.

Avez vous une idée de comment fixer cette plage? à l'aide d'une variable peut être qu'on fixe à chaque passage de boucle??

Merci de votre aide.
 

Modeste

XLDnaute Barbatruc
Re : Code VBA RechercheV, résultats multiples.

Bonjour Lilie_peche,

Tester avec
Code:
Bi.FormulaR1C1 = _
"=IF(RC[1]="""",VLOOKUP(RC[2],affectation_ligne_jus!R2C2:R595C3,1,FALSE),RC[1])"

Ceci dit, peux-tu m'expliquer pourquoi utiliser vba pour recopier une formule, sur une plage fixe? (attention, je n'ai pas dit que ça n'avait pas de sens, hein, je cherche juste à comprendre dans quel cas de figure tu te trouves). Merci
 

Lilie_peche

XLDnaute Nouveau
Re : Code VBA RechercheV, résultats multiples.

Hi Modeste!
Merci pour ta réponse rapide, je viens de tester et ça fonctionne à peu près sauf que j'ai un autre bug qui est apparu avec ma formule.
>> En PJ un exemple simplifié de mon fichier. Je ne comprends pas pourquoi j'ai une erreur lorsque ma cellule en colonne C est vide.

Evidemment tu dois te douter que si je le fais en vba ce n'est pas pour rien ;)
Concrètement, ma feuille1 est actualisée chaque jour (donc modifiée). Ma feuille2 est un tableau de base qui me sert à corriger les erreurs dans la feuille1. Le fichier sera utilisé par d'autres personnes que moi et toutes les corrections doivent se faire automatiquement. Voilà donc la réponse à ta question.
 

Pièces jointes

  • exemple.xlsm
    22.3 KB · Affichages: 274
  • exemple.xlsm
    22.3 KB · Affichages: 279
  • exemple.xlsm
    22.3 KB · Affichages: 319

Modeste

XLDnaute Barbatruc
Re : Code VBA RechercheV, résultats multiples.

Bonsoir Lillie_peche,

Je crains que tu n'aies un souci avec cette partie de ta formule:
Code:
RECHERCHEV(D2;Feuil2!$B$2:$C$17;1;FAUX)
La valeur_cherchée (ici, D2, donc Ref_A, pour ta première formule!) doit se trouver dans la première colonne de ta table_matrice ... Or ce n'est pas le cas! Les seules valeurs qui semblent correctes dans ta colonne "copie" sont celles où la valeur de C2 est recopiée, lorsque C2 n'est pas vide! Si tu supprimes ta condition et que tu recopies ta rechercheV dans toute la colonne, tu as des messages d'erreurs partout.

Si tes données sont structurées comme dans ton exemple, la fonction recherchev ne peut pas fonctionner! Il vaut mieux utiliser INDEX et EQUIV
 

Discussions similaires

Réponses
17
Affichages
1 K
Réponses
6
Affichages
892

Statistiques des forums

Discussions
312 441
Messages
2 088 465
Membres
103 860
dernier inscrit
SebRol