Recherche d'une donnée dans un autre fichier

Bonjour,

Je souhaiterai créer un programme afin de récupérer des données d'un fichier excel vers un autre.

J'ai un fichier intitulé "A" et un 2ème fichier intitulé "B".

Dans le fichier "A" onglet "Plan audit" j'y ai intégré un bouton qui permettra de faire une recherche d'un numéro de rapport qui serait présent dans le 2ème fichier ( fichier "B"). Cette recherche du n° de rapport se fera dans le fichier intitulé "B" colonne « A » de la feuille "Planning 2012".

Dès qu'il a trouvé le numéro de rapport recherché, il ira copier le contenu de la cellule de la colonne A (contenant le n° de rapport) dans la cellule H8 de l'onglet "Plan audit" du fichier "A". Ainsi que le contenu de la cellule de la colonne C du fichier "B" de la ligne où se trouve le numéro de rapport recherché vers le fichier "A" onglet "Plan audit" cellule H9.

J’ai commencé à rédiger ce code mais je suis bloqué.

[code]Private Sub CommandButton1_Click()
Dim Wb As Workbook
Feuil4.Select 'feuille Plan audit'
chemin = "G:\S - ISO\A - Audits\B"
fichier = TextBox1.Text & ".xls"
feuille = "Planning 2012"

[/code]

Merci.

Bonjour

J'ai trouvé ça mais pas très content

Je n'ai pas trouvé de solution ni avec Evaluate , ni avec VLookup

Si quelqu'un a ça dans sa besace, merci d'avance

Le fichier n'est pas ouvert

Private Sub CommandButton1_Click()
Dim Chemin As String
Dim Fichier As String
Dim Feuille As String

Dim Recherche As String

  Feuil4.Select 'feuille Plan audit'
  Chemin = "G:\S - ISO\A - Audits\B"
  Feuille = "Planning 2012"

  Recherche = "Ta recherche"

  Range("H8:H9").ClearContents
  With Range("H9")
    .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$C,3,false)"
    If Not IsError(.Value) Then
      Range("H8") = Recherche
      .Value = .Value
    Else
      Range("H9").ClearContents
    End If
  End With
End Sub

Bonjour et merci Banzaï64

J'ai intégré le code malheureusement il me fait apparaître le message d'erreur suivant :

[Erreur d'execution '1004'

Erreur définie par l'application ou par l'objet]

et dans le code j'ai la ligne en jaune

.Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$C,3,false)"

Bonjour

Il faut que tu joignes ton fichier

je joins les fichiers A et B.

Dans le fichier A se trouve le code au niveau du bouton OK du userform2.

48fichier-a.xlsm (32.56 Ko)
51fichier-b.zip (27.79 Ko)

Bonjour

thomasdu40 a écrit :

fichier = TextBox1.Text & ".xls"

La variable Fichier a disparue

thomasdu40 a écrit :

Ainsi que le contenu de la cellule de la colonne Cdu fichier "B" de la ligne où se trouve le numéro de rapport recherché vers le fichier "A" onglet "Plan audit" cellule H9.

Tu n'as pas 3 colonnes mais 2

Alors dans la macro j'ai noté en dur le nom du fichier et la recherche est entrée dans le TextBox1

Private Sub CommandButton1_Click()
Dim Chemin As String
Dim Fichier As String
Dim Feuille As String
Dim Recherche As String

  If Trim(Me.TextBox1) = "" Then Exit Sub
  Feuil4.Select 'feuille Plan audit'
 Chemin = "F:\Bureau\Macro\B"
   Feuille = "Planning 2012"
  Fichier = "Fichier B.xls"
  Recherche = Me.TextBox1

  Range("H8:H9").ClearContents
  With Range("H9")
    .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$B,2,false)"
    If Not IsError(.Value) Then
      Range("H8").NumberFormat = "@"
      Range("H8") = Recherche
      .Value = .Value
    Else
      Range("H9").ClearContents
    End If
  End With
End Sub

Bonjour,

Merci pour ta réponse Banzaï64.

A ce stade il m'ouvre la fenêtre windows où se trouve le dossier contenant le fichier B. Pour remplir automatiquement les cellules H8 et H9 dans le fichier A il faut que j'aille dans le dossier pour double cliquez sur le nom du fichier B.

Est-il possible de faire remplir ces 2 cellules du fichier A automatiquement sans aller double cliquer sur le fichier B ?

je joins le fichier A avec le code.

Merci.

30fichier-a.xlsm (33.21 Ko)

Bonjour

thomasdu40 a écrit :

il m'ouvre la fenêtre windows où se trouve le dossier contenant le fichier B.

Cela me 'avais fit lorsque j'avais mal orthographié le nom du fichier

Vérifies si le chemin et le fichier existe bien (attention aux espaces)

Normalement tu dois avoir

"F:\Bureau\Macro\Fichier B\Fichier B.xls"

Le fichier est correctement saisi dans le code et correspond à celui présent sur le F:\.

Je ne vois pas pourquoi il m'ouvre la fenêtre windows au lieu d'aller me cherche directement les données dans le fichier B.

Bonjour

thomasdu40 a écrit :

Le fichier est correctement saisi

Vérifies aussi le chemin

Fais un chemin et un nom de fichier sans espaces

Modifies dans la macro

et essaies

Voilà ce que j'obtiens si le nom du fichier ou le chemin n'est pas le bon

mettre a jour les valeurs

J'ai renommé mon fichier B (avec ou sans espace). J'ai même changé son emplacement. Rien n'y fait il m'ouvre toujours la fenêtre windows.

Bonjour

Je ne sais que dire

Mais ce que tu obtiens moi je l'obtiens seulement si les noms du chemin et/ou du fichier sont incorrects

Regardes l'edit de mon message précédent

En espérant que quelqu'un à une autre idée

Trouvé.

J'ai changé le chemin d'accès.

J'ai remplacé ce code

G:\S - ISO\Fichier B\Fichier B.xls

par ce code

"G:\S - ISO"

M'est il possible de rajouter d'autres cellules du fichierB vers le fichier A ? Je présume c'est le code ci-dessous à changer.

  Range("H8:H9").ClearContents
  With Range("H9")
    .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$B,2,false)"
    If Not IsError(.Value) Then
      Range("H8").NumberFormat = "@"
      Range("H8") = Recherche
      .Value = .Value
    Else
      Range("H9").ClearContents
    End If
  End With

Bonjour

Pourquoi ne pas mettre directement la formule dans la case

Plus facile à adapter en cas de changement

Formule en H9 et la recherche tu la tapes en H8

=SI(ESTNA(RECHERCHEV(H8;'G:\S - ISO\[Fichier B.xls]Planning 2012'!$A:$B;2;FAUX));"";RECHERCHEV(H8;'G:\S - ISO\thomasdu40\[Fichier B.xls]Planning 2012'!$A:$B;2;FAUX))

Oui je sais mais j'aimerai intégrer cette opération dans une macro mais je pense qu'il n'est pas possible d'extraire des données issues de plusieurs cellules du fichier B en gardant le même code ci-dessous :

Range("H8:H9").ClearContents
  With Range("H9")
    .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$B,2,false)"
    If Not IsError(.Value) Then
      Range("H8").NumberFormat = "@"
      Range("H8") = Recherche
      .Value = .Value
    Else
      Range("H9").ClearContents
    End If
  End With

Bonjour

C'est assez vague comme question

Il faudrait savoir ce que tu veux récupérer et où placer les infos

Ce n'est pas sur que j'y réponde mais ce qui est sur c'est que sans ces renseignements je n'y répondrais pas

Je n'ai voulu qu'avoir un début de programme afin d'essayer de le reproduire à mon fichier réel. Dans la réalité l'extraction se fait sur plusieurs cellules.

Je joins un .doc pour expliquer d'où sont extraites les données :

extraites de la feuille "planning 2012" du fichier B et

collées dans la feuille "plan audit" du fichier A.

Encore merci même sir cela peut paraitre énervant de poser toujours des questions ou de ne pas être très clair.

Voici mon code qui extrait plusieurs donnée présentes dans deux cellules et issues du fichier B vers le fichier A.

Code à adapter avec d'autres cellules si besoin est.

Range("H8").ClearContents
  With Range("H9")
    .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$T,2,false)"
 With Range("B6")  
  .Formula = "=VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A:$T,10,false)"
    If Not IsError(.Value) Then
      Range("H8").NumberFormat = "@"
      Range("H8") = Recherche
      .Value = .Value
     End If
 End With
  End With
Rechercher des sujets similaires à "recherche donnee fichier"