Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherchev en vba

Roger

XLDnaute Junior
A tous bonjour,
Es-t'il possible d'utiliser vba pour faire une recherche comparable à RECHERCHEV ?
Et d'utiliser les résultats des colonnes successives ?

Merci d'avance pour l'aide reçue.
Roger
 

jjjerome

XLDnaute Occasionnel
Re : Recherchev en vba

Bonjour le forum,

(Je n'ai pas encore eu le temps d'essayer de travailler si les fichier fermé).

Je rencontre des problèmes lorsque je répète le code VLookup plusieurs fois pour des colonnes différentes. Ce code a t il des limites ??

En fait j'ai systématiquement les colonnes qui s'effacent losrsque je le répète plus de 3 fois.. ?? ...

Voici le code que j'utilise :
HTML:
Sub test()

'Workbooks("Classeur1.xls").Sheets ("Feuil1")
  With Sheets("Feuil1")
    .Range("J7:J20").Value = WorksheetFunction.VLookup(.Range("G7:G10").Value, _
        Workbooks("Classeur1.xls").Sheets("Feuil1").Range("B1:C100"), 2, False)


End With

With Sheets("Feuil1")
    .Range("K7:K20").Value = WorksheetFunction.VLookup(.Range("G7:G10").Value, _
        Workbooks("Classeur1.xls").Sheets("Feuil1").Range("B1:C100"), 3, False)


End With

With Sheets("Feuil1")
    .Range("L7:L20").Value = WorksheetFunction.VLookup(.Range("G7:G10").Value, _
        Workbooks("Classeur1.xls").Sheets("Feuil1").Range("B1:C100"), 4, False)


End With


End Sub

Est ce qu'il serait possible d'adapter le code sur plusieurs colonnes ex :
HTML:
Sub test()
End With

With Sheets("Feuil1")
    .Range("J7:L20").Value = WorksheetFunction.VLookup(.Range("G7:G10").Value, _
        Workbooks("Classeur1.xls").Sheets("Feuil1").Range("B1:C100"), [COLOR="Red"]2 à 4[/COLOR], False)


End With


End Sub
en remplaçant le 2 à 4 ??
 

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Salut jjjerome
Bonjour le Fil
Bonjour Le Forum


arffff tu vas un peu vite,il faudrait que tu regardes ce que fait la Fonction
VLookup (les arguments utilisés par cette fonction) cette fonction Vba et l'équivalent de la fonction Excel RechercheV
La syntaxe de base de la fonction RECHERCHEV est:
=RECHERCHEV(valeur_recherchée;table_matrice;no_index_col;valeur_proche)
valeur_recherchée au singulier donc une cellule par exemple et non une plage
car là tu n'y es pas, tu recherches une plage pour la coller dans une autre .
peut être qu'une boucle pourrait répondre à ton attente
explique nous un peu et met un fichier exemple de ce que tu as et de ce que tu veux faire (avec explications )

Merci d'avance
Bonne journée
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Re
je ne suis pas sur d'avoir compris (pas de fichier )
mais ceci peut être la solution une boucle ??????
Code:
Dim Col As Byte
Dim Lgn As Integer
With Sheets("Feuil1")
For [COLOR=Blue]Col[/COLOR] = 2 To 4 '[COLOR=DarkGreen]ici pour les colonnes à passé en revue[/COLOR]
  For[COLOR=Red] Lgn[/COLOR] = 7 To 20[COLOR=DarkGreen] 'ici pour les lignes à passer en revue[/COLOR]
      .Cells([COLOR=Red]Lgn[/COLOR],[COLOR=Blue] Col[/COLOR]).Value = WorksheetFunction.VLookup(.Range("G" & [COLOR=Red]Lgn[/COLOR]) _
.Value,Workbooks("Classeur1.xls").Sheets("Feuil1").Range("B1:C100"), [COLOR=Blue]Col[/COLOR], False)

  Next[COLOR=Red] Lgn[/COLOR]
Next [COLOR=Blue]Col[/COLOR]
End With
non testé
Bonne journée
 

jjjerome

XLDnaute Occasionnel
Re : Recherchev en vba

Bonjour le forum,
Merci chti60 pour tes réponses, je vais mettre un fichier simplifié et essayer ce que tu me proposes, mais ça parait convenir à mon besoin !

Serait-il aussi possible d'ajouter une condition (exemple : ne s' éxecute que si les valeurs de la colonne 'D' du fichier destination sont vide) ?
 

jjjerome

XLDnaute Occasionnel
Re : Recherchev en vba

Bonjour le forum, Chti160,

Je pense que c'est effectivement la solution, mais j'ai un pronlème sur le code...

Voici ci-joint un exemple de mes fichiers (source et destination)

Par contre les colonnes de mon fichier source et destnation ne sont pas les même, et je n'ai pas réussi a adapter le code.

Merci encore
 

Pièces jointes

  • GEO SOURCE.xls
    19 KB · Affichages: 306
  • A DESTINATION.xls
    22.5 KB · Affichages: 274

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Salut jjjerome
Bonjour le Fil
Bonjour Le Forum

Voila comment j'ai modifié la procédure , pour l'adapter à tes nouveaux fichiers
Bons tests
Bonne journée
 
Dernière édition:

jjjerome

XLDnaute Occasionnel
Re : Recherchev en vba

Bonsoir a tous,
Excellent Chti160, ça marche parfaitement.
Petite remarque, lorsque j'ai un nombre (en colonne G) non présent dans la liste source, j'ai une erreur sur le code.

Et encore une petite chose, on vient de majouter un nouveau besoin... comment faire la même chose avec une colonne indépendante : colonne 'N' du fichier source avec la colonne'BZ' (98) du fichier destination.

Déjà un grand merci !!!
 

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Salut
Bonjour le Fil
Bonjour le Forum

voici la procédure modifiée
elle prend en compte ta demande
colonne 'N' du fichier source avec la colonne 'BZ' (98) du fichier destination
je n'ai pas compris le
comment faire la même chose avec une colonne indépendante
Bonne Journée
n'hésite pas si besoin d'infos
 
Dernière édition:

Joannie

XLDnaute Nouveau
Re : Recherchev en vba

Bonjour,


J'essai de faire une recherche avec 2 fichiers qui ne sont pas dans le même classeur et ça ne fonctionne pas.

Sub Bouton3_Clic()

With Sheets("macro")

.Range("F3:F100").Value = WorksheetFunction.VLookup(.Range("B3:B100").Value, Sheets("Gabarit").Range("A2:J1000"), 10, False)

End With

End Sub


Merci de m'aider!
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Salut jjjerome
Bonjour le fil
Bonjour le Forum
arff réponse à Joannie il faut déjà que tes deux fichiers soient ouvert
ensuite il faut indiquer dans la procédure le nom complet Dossier pluscelui du Fichier plus celui de la Feuille
exemple
For L=3 to 100
.Range("F"&L).Value = WorksheetFunction.VLookup(.Range("B"&L).Value, WorkBooks("Nom Du Classeur Source").Sheets("Gabarit").Range("A2:J1000"), 10, False)
Next L
en espérant avoir pu t'aider
Bonne journée
 

kellipse

XLDnaute Nouveau
Re : Recherchev en vba

bonjour,
j'ai un problème qui ressemble au problème au début de la discussion. je veux utiliser la fonction RECHERCHEV ou une autre fonction, si cela existe, pour avoir les données stockées dans la cellule juste avant la cellule recherchée. En fait, je saisis une date, et je veux qu'excel me renvoie les données correspondant à cette date et à la date qui la précède. j'espère que c'est clair. Aider moi SVP.
 

Mulder

XLDnaute Junior
Re : Recherchev en vba

Bonjour à tous,

Je me permets de prendre le fil de cette discussion plutôt que d'en recréer un, car je rencontre un problème similaire.
Dans un Userform, en modifiant le contenu d'un combobox1, je souhaite par recherchev sur une base de donnée présente dans une feuille "Settings", faire afficher une valeur dans un combobox3.
J'ai repiqué et adapté le code donné par Pierrot, mais sans succès.
J'en suis pour le moment rendu à ceci :

Code:
Private Sub ComboBox1_Change()
    ComboBox3.Value = Active.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("Settings").Range("A1:D" & .Range("A65536").End(xlUp).Row).Value, 4, False)
End Sub

En d'autres termes, j'ai une base de données en Settings.
Les valeurs possibles pour combobox1 (une liste de fournisseurs) sont en colonne A.
J'ai défini un produit par défaut pour chaque fournisseur possible saisi en combobox1.
Quand je sélectionne un fournisseur en combobox1, je souhaite faire apparaître mon produit par défaut via le combobox1_change, tout en gardant la possibilité de modifier ensuite le combobox3.
Sachant que ma liste de fournisseurs est vouée à être modifier (plus ou moins de fournisseurs), je ne fixe donc pas la longueur de la base de données, je la laisse libre (d'où l'utilisation du endxlup...

D'avance merci pour toute aide offerte !!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…