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

fonction RECHERCHE avec VBA

M

Mathieu

Guest
Bonjour à tous
J'ai un petit souci ... Je m'explique
D'un coté, j'ai un fichier xls avec une liste de composants avec des quantités (ayant été extrait d'un schéma de principe) caractérisé par un CODE ARTICLE
De l'autre, j'ai un classeur xls avec tous les composants existant dans mon entreprise.
Moi, il faut que je fasse le lien pour mettre les quantités des composants extraits dans l'autre classeur. Je pense que la solution serait de comparer les codes articles
Cette fonction est possible avec excel avec RECHERCHEV mais je ne trouve pas une fonction qui me ferait la meme chose avec Visual Basic for Application(VBA)
Merci pour votre aide ...
 
J

jacquesderyes

Guest
Bonjour Mathieu et les amis du forum
A priori il me semble que le méthode Find devrait résoudre ton pb.
Je n'ai pas très bien capté ta manip aussi selon le cas tu peux coller la méthode find dans une boucle.Un petit bout de fichier pour exemple me permettrait peut-être de t'aider un peu plus.

Bien amicalement
jacques de ryes
 
M

Mathieu

Guest
Bonjour jacques et tout le forum,



Comme tu le voulais je t’envoie ces deux fichiers pour t’expliquer plus en détails mon pb :
Extraction.xls
Exemple.xls

Dans le fichier extraction.xls, tu as un CODE_ARTICLE et un nombre correspondant à une quantité
Dans le fichier exemple.xls, il y a deux feuilles :
« FeuilleC », avec un bouton de commande. Dès qu’on l’actionne, une fenêtre apparaît où l’on va chercher le fichier « extraction.xls » sur le disque dur. Ensuite on appui sur « FIN DE SAISIE » et c’est a ce moment là que ça cloche…
« FeuilleV », avec une liste de CODE_ARTICLE et une colonne avec des quantités que je doit compléter.(Ces quantités sont dans le fichier « extractions.xls »

Le but total est : *DES L’APPUI SUR LE BOUTON « FIN DE SAISIE ET VALIDATION » IL FAUT QUE LES QUANTITES DE LA FEUILLE « SORTIE » DU FICHIER « EXTRACTION.XLS » COMPLETE LA FEUILLE « FEUILLEV » DU FICHIER « EXEMPLE .XLS »
*ET SI UN CODE_ARTICLE DU FICHIER « EXEMPLE » N’EST PAS PRESENT DANS LE FICHIER « EXTRACTION.XLS » ALORS IL NE FAUT RIEN AFFICHER

C’est un peu lourd mais je pense que c’est clair
Merci d’avance …J
 

Pièces jointes

  • test.zip
    34.6 KB · Affichages: 42
  • test.zip
    34.6 KB · Affichages: 41
  • test.zip
    34.6 KB · Affichages: 44
M

Mathieu

Guest
Bonjour jacques et tout le forum,

Comme tu le voulais je t’envoie ces deux fichiers pour t’expliquer plus en détails mon pb :
Extraction.xls
Exemple.xls

Dans le fichier extraction.xls, tu as un CODE_ARTICLE et un nombre correspondant à une quantité
Dans le fichier exemple.xls, il y a deux feuilles :
« FeuilleC », avec un bouton de commande. Dès qu’on l’actionne, une fenêtre apparaît où l’on va chercher le fichier « extraction.xls » sur le disque dur. Ensuite on appui sur « FIN DE SAISIE » et c’est a ce moment là que ça cloche…
« FeuilleV », avec une liste de CODE_ARTICLE et une colonne avec des quantités que je doit compléter.(Ces quantités sont dans le fichier « extractions.xls »

Le but total est : *DES L’APPUI SUR LE BOUTON « FIN DE SAISIE ET VALIDATION » IL FAUT QUE LES QUANTITES DE LA FEUILLE « SORTIE » DU FICHIER « EXTRACTION.XLS » COMPLETE LA FEUILLE « FEUILLEV » DU FICHIER « EXEMPLE .XLS »
*ET SI UN CODE_ARTICLE DU FICHIER « EXEMPLE » N’EST PAS PRESENT DANS LE FICHIER « EXTRACTION.XLS » ALORS IL NE FAUT RIEN AFFICHER

C’est un peu lourd mais je pense que c’est clair
Merci d’avance …J
 
M

Mathieu

Guest
Bonjour Wally et tout le forum

J'ai essayé avec la méthode que tu m'as donné mais l'aide de VBA ne m'indique rien et comme je ne connaît pas les instructions qu'il faut mettre je suis bloqué... ((

Merci d'avance

Mathieu
 
W

wally

Guest
Bonjour Mathieu et le forum,

Dans la fonction VBA VLookup, il faut indiquer les mêmes paramètres que dans RECHERCHEV, soit :

MaValeur = Application.WorksheetFunction.VLookup(valeur_cherchée;table_matrice;no_index_col;valeur_proche)

Prenons un exemple et admettons que la cellule D1 de la feuille "Feuil1" contienne la formule suivante :

=RECHERCHEV(1;A1:B10;2;VRAI)

L'équivalent VBA correspond à :

Worksheets("Feuil1").Range("D1") = Application.WorksheetFunction.VLookup(1, Worksheets("Feuil1").Range("A1:B10"), 2, True)


@+

wally
 
M

Mathieu

Guest
Bonjour wally et le forum,

Merci pour l'explication mais il me reste encore un petit souci

J'aimerais cibler une cellule appartenent à une feuille et cette feuille appartient à un classeur (rien d'anormale !!!)

Je dis ca parce que je doit comparer deux cellules appartenant à deux fichiers xls différents...

Il m'est donc obliger de les cibler

si tu ne voit pas trop ce que je recherche j'ai joint test.zip et les explications sont dans les messsages précédents envoyés à jacques
 
M

Mathieu

Guest
Re wally et le forum,

dans la formule que tu m'a donné ...

Worksheets("Feuil1").Range("D1") = Application.WorksheetFunction.VLookup(1, WORKSHEETS("Feuil1").Range("A1:B10"), 2, True)

En fait à la place de WORKSHEETS("Feuil1").Range("A1:B10") j'aimerais que ce soit un chemin d'accès de n'importe quel fichier car ce n'est jamais le même fichier que je travaille et en plus avec une sélection de cellules telles que Range("B2:C30") qui sera toujours la même !!!
 
M

Mathieu

Guest
Re wally,

C bon ca marche ... mais cette boucle ne marche pas !!!

For x = 11 To 62

Workbooks("essai1.xls").Worksheets(8).Cells(x, 4).Value = Application.WorksheetFunction.VLookup(Workbooks("essai1.xls").Worksheets(8).Cells(x, 1).Value, Workbooks("extraction3.xls").Worksheets(1).Range("B2:C30"), 2, False)

Next x

En fait ligne par ligne ca marche mais une boucle FOR...NEXT est bien plus pratique mais il doit y avoir une erreur sur ma ligne

Merci d'avance
 
C

coco

Guest
Bonjour Wally, le forum
A la recherche d'une solution à un de mes problèmes je suis tombé sur ce fil et la fonction recherche en VBA m'est nécessaire. En suivant les indications de Wally j'ai créé le code suivant :

Private Sub TextBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Dim annonce
Dim FOURN

FOURN = TextBox2
annonce = Application.WorksheetFunction.VLookup(FOURN, Worksheets("paramètres").Range("A9:B1000"), 2, False)
TextBox3 = annonce
End Sub


et un message d'erreur apparaît. Il semblerait que la variable FOURN ne soit pas appréciée comme valeur cherchée.


Quelqu'un aurait-il une idée de ce qui se passe?

Merci à tous ceux qui s'interesseraient à mon pb.
 

Discussions similaires

Réponses
1
Affichages
436
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…