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
 

ChTi160

XLDnaute Barbatruc
Re : Recherchev en vba

Salut Mulder
Bonjour Le Fil
Bonjour Le Forum

arff il faudrait que tu puisses nous mettre un exemple de ce que tu as et l'explication de ce que tu veux

quelques lignes (seulement) de données non confidentielles .

sinon pas évident

Merci

Bonne fin de journée
 

Mulder

XLDnaute Junior
Re : Recherchev en vba

Bonjour Chti,
Ci-joint un fichier Excel en version simplfié de ce que je souhaite.
Deux combobox, je choisis une valeur dans celle du haut, celle du bas doit s'alimenter en fonction de la base de données. Bien sûr la seconde doit pourvoir modifiée.

Merci du coup de main.
 

Pièces jointes

  • TESTS.xls
    39 KB · Affichages: 204
  • TESTS.xls
    39 KB · Affichages: 208
  • TESTS.xls
    39 KB · Affichages: 225

Mulder

XLDnaute Junior
Re : Recherchev en vba

Nickel Chti, c'est exactement ce qu'il me fallait.
Concernant ta remarque, le combobox2 devait rester modifiable sans impact sur le combobox1.
C'est pas très clair, mais en pratique, ce que tu as fait est nickel.
Si j'ai bien compris, c'est le ws.range qui me manquait...
Merci l'ami !!
 

Mulder

XLDnaute Junior
Re : Recherchev en vba

Aïe, chui tombé sur un os. Ta solution est bonne Chti, mais je viens de terminer mon fichier Excel, et détail que j'ai oublié de préciser : la feuille Settings est cachée (et dois le rester : elle n'est affichée qu'en début d'utilisation pour stocker les paramètres, elle ne doit plus apparaître ensuite).
Du coup, une fois Settings masquée, ta marco n'est pas opérationnelle puisqu'il ne trouve pas Settings...

J'ai intégré une ligne de code permettant d'afficher la feuille avant ton code et de la masquer après ton code, mais ça ne fonctionne pas...

Need help !!! D'avance merci !!
 

Mulder

XLDnaute Junior
Re : Recherchev en vba

Aïe, chui tombé sur un os. Ta solution est bonne Chti, mais je viens de terminer mon fichier Excel, et détail que j'ai oublié de préciser : la feuille Settings est cachée (et dois le rester : elle n'est affichée qu'en début d'utilisation pour stocker les paramètres, elle ne doit plus apparaître ensuite).
Du coup, une fois Settings masquée, ta marco n'est pas opérationnelle puisqu'il ne trouve pas Settings...

J'ai intégré une ligne de code permettant d'afficher la feuille avant ton code et de la masquer après ton code, mais ça ne fonctionne pas...

Need help !!! D'avance merci !!

Up ??
Je cherche toujours, mais en vain...
 

Mulder

XLDnaute Junior
Re : Recherchev en vba

J'ai réussi à adapter via un affichage de la feuille "Settings" dans le Combobox.Change.
Avec un p'tit Application.Screenupdating = False, on la voit pas apparaître.
Donc c'est good pour moi !!
Merci à Chti pour la soluce qui fonctionne impec' !!
 

sbalat

XLDnaute Nouveau
Re : Recherchev en vba

Bonjour,

Suite à la lecture de ce post, j'ai essayé de m'en inspirer pour également faire un RECHERCHEV dans une macro.
Cependant j'utilise des variables pour ce qui est du Range et j'ai toujours, quelque soit la méthode utilisé la même erreur "Erreur d'exécution '1004'".
Pouvez vous m'aider?

Voici les divers codes que j'utilise :

Première version (simple) :
Code:
ActiveCell.FormulaR1C1 = "=VLookup(Cells(1, i), Sheets("Feuil2").Range(Columns(dataFirstCol), Columns(dataEndCol)), 4, False)"

Première version (complexe) :
Code:
ActiveCell.FormulaR1C1 = "=VLookup(Cells(1, i), Feuil2!" & dataFirstCol & ":" & dataEndCol & ", 4, False)"

Seconde version :
Code:
With Sheets("Feuil1").Cells(downBound + 1, i).Value = WorksheetFunction.VLookup(Cells(1, i), _
            Sheets("Feuil2").Range(Columns(dataFirstCol), Columns(dataEndCol)), 4, False)
End With

mes variables de colonnes sont bien définies.
Merci d'avance pour votre aide.

Cdt,
Sylvain.
 

Djorge84

XLDnaute Nouveau
Re : Recherchev en vba

Bonjour,

je me permets de poursuivre ce fil de discussion car mon problème est très similaire et que je ne trouve rien sur le forum ou ailleurs pour le résoudre...

Je veux transposer en VBA quelquechose qui fonctionne bien sous Excel, à savoir l'utilisation de la fonction RechercheV.

J'ai le code suivant qui fonctionne très bien :

Code:
Sub Test()

Dim Formule As String
Dim Valeur As Variant

'Insertion de la formule
Formule = "=VLookUp(RC5,Données,13,FALSE)"
ActiveCell.Value = Formule

'lire la valeur
    Valeur = ActiveCell.Value
    
    'lire la formule
    Formule = ""
    Formule = ActiveCell.FormulaR1C1
    
    MsgBox ActiveCell.Value
    MsgBox ActiveCell.FormulaR1C1
    
End Sub

Sauf qu'à terme je veux pouvoir créer une fonction à partir de ce code pour pouvoir la tirer sur une ligne entière. Mais il faudrait pour cela que l'index de la colonne qui doit être renseigné dans la fonction VLookUp (qui vaut 13 dans mon code précédent) s'incrémente d'une unité à chaque fois. Et c'est là que réside mon problème...

J'ai réussi à obtenir un début de réponse à partir du code suivant, qui me donne bien ce que je veux :

Code:
Dim IndexColonne As Integer

'Calcul de l'index de la colonne au sein de la sélection Données_Radiologiques = "D3:AZ118"

IndexColonne = Range(.Cells(4, 16).Address).Column - (Range("$D$3:$AZ$118").Columns(1).Column - 1)

MsgBox IndexColonne

Mais si j'inclus ça dans mon code de départ, la fonction VLookUp ne tourne plus, alors que le MsgBox IndexColonne donne la valeur numérique qui va bien (à savoir 13)...

Code:
Sub Test()

Dim Formule As String
Dim Valeur As Variant
Dim IndexColonne As Integer

'Calcul de l'index de la colonne au sein de la sélection Données_Radiologiques = "D3:AZ118"

IndexColonne = Range(.Cells(4, 16).Address).Column - (Range("$D$3:$AZ$118").Columns(1).Column - 1)

MsgBox IndexColonne

'Insertion de la formule
Formule = "=VLookUp(RC5,Données,IndexColonne,FALSE)"
ActiveCell.Value = Formule

'lire la valeur
    Valeur = ActiveCell.Value
    
    'lire la formule
    Formule = ""
    Formule = ActiveCell.FormulaR1C1
    
    MsgBox ActiveCell.Value
    MsgBox ActiveCell.FormulaR1C1
    
End Sub

Je comprends vraiment pas pourquoi...

Quelqu'un aurait une idée? (j'espère que je suis assez clair...)


Merci par avance
 

ROGER2327

XLDnaute Barbatruc
Re : Recherchev en vba

Bonsoir Djorge84
Peut-être quelque chose comme :
Code:
'Insertion de la formule
Formule = "=VLookUp(RC5,Données," & IndexColonne & ",FALSE)"
(Solution non testée faute de support ; je suppose que Données représente une plage nommée…)​
ROGER2327
#5242


Lundi 2 Merdre 138 (Le Moutardier du Pape, V)
30 Floréal An CCXIX
2011-W20-4T22:19:56Z
 

ROGER2327

XLDnaute Barbatruc
Re : Recherchev en vba

Re…
(…)
Je ne savais pas qu'il fallait insérer des &. (…)
Dans votre code, IndexColonne est le nom d'une variable dont la valeur est un nombre (disons 13 pour l'exemple).
En écrivant
Code:
Formule = "=VLookUp(RC5,Données,IndexColonne,FALSE)"
vous utilisez le nom de la variable (pas sa valeur) puisque ce nom est intégré à la chaîne de carctères. Vous obtenez donc le texte :
=VLookUp(RC5,Données,IndexColonne,FALSE)

En écrivant
Code:
Formule = "=VLookUp(RC5,Données," & IndexColonne & ",FALSE)"
le nom de la variable n'est pas intégré à la chaîne de caractères. Alors, dans l'évaluation du code, la valeur est substituée au nom de la variable et vous obtenez le texte :
=VLookUp(RC5,Données,13,FALSE)
Bonne journée.

ROGER2327
#5246


Mardi 3 Merdre 138 (Saint Siège, sous-pape, SQ)
1er Prairial An CCXIX
2011-W20-5T09:59:57Z
 

Pookie

XLDnaute Nouveau
Re : Recherchev en vba

Bonjour tout le monde!

Je me joins à votre fil de discussion car j'ai un soucis dans le même genre.
Voilà le problème :
J'ai réalisé un fichier avec des tonnes de macros. Le principe c'est de rechercher une valeur (de 4 ou 6 chiffres) et de trouver le nom correspondant. Mais c'est là que ça se complique! A chaque fois que le fichier s'ouvre, il se mets à jour car il est en relation avec d'autres tables, puis il demande (par une inputbox) le code à 4 ou 6 chiffres.
Ex : je tape le code "6763", il la range sur la feuille "Nouvelle_recette" en $C$5 et en $D$5 il doit afficher "Saucisson".
Voici la formule que j'ai utilisé :
=SI(ESTNA(RECHERCHEV($C$5;Table_consignes!$A$2:$G$657;2));"";(RECHERCHEV($C$5;Table_consignes!$A$2:$G$657;2)))

Avec une silmple recherchev ça marchait jusqu'à ce que j'augmente la taille de la recherche (A2 : G657 à A2 : G 696).
Pourquoi ça ne fonctionne plus?
Est-ce possible de faire cette recherche directement sur un autre classeur avec le chemin suivant :
='Z:\Export Tables\[Table_Article.XLS]Résultats'!A2 ?
Par l'intermédiaire d'une macro?

J'espère avoir été clair...
Merci de vos réponses et conseils!

Pookie
 

da silva

XLDnaute Junior
Bonjour,
J'essai aussi de mettre en place votre comme mais il me sort aussi erreur 1004 impossible de lire la propriété
vlookup de la classe?mais je n'arrive pas a le débuger mais avec te explication.

With ActiveWorkbook.Sheets("L2")
.Range("C2").Value = WorksheetFunction.VLookup(.Range("A2").Value, _
ActiveWorkbook.Sheets("L1").Range("A5:C500"), 3, False)
End With

Merci d'avance!
 

Discussions similaires

Réponses
7
Affichages
391

Statistiques des forums

Discussions
311 730
Messages
2 081 989
Membres
101 856
dernier inscrit
Marina40