Recherche d'informations dans un autre fichier ouvert

Bonjour,

J'ai peu d'expérience en VBA et je bloque sur un problème qui paraît simple :

J'ai 2 fichiers différents ouverts ; "inventaire.xlsx"

13inventaire.xlsx (8.12 Ko)

et "approvisionnement.xlsm"

situés dans 2 dossiers différents.

J'aimerai, lorsque j'appuie sur le bouton du fichier d'approvisionnement, que la colonne "localisation" affiche le numéro d'armoire et de tiroir dans lequel se trouve l'objet demandé (ou alors rien si l'article n'est pas trouvé), et ceci pour chaque ligne de la feuille. (par exemple: en cellule "C9" du fichier "approvisionnement.xlsm" je voudrais y voir "6.2 / 3". Dans la cellule C3, rien du tout et dans les cellules "C4" et "C12" doit s'afficher "1.1 / 4"

J'ai essayé plusieurs possibilités avec les fonction de recherche "rechercheV" ou la méthode "find" mais je n'arrive jamais à faire une macro sans plantage.

Qui aurait une idée pour m'aider à jongler avec ces classeurs? (il va de soi que ces fichiers sont des exemples et que mes fichiers peuvent avoir plusieurs miliers de lignes)

Merci d'avance

Sardaukar

Bonjour,

Je suis arrivé à quelquechose qui à l'air de fonctionner :

Sub rechFichExt()

Dim wbInv As Workbook
Dim wbAppro As Workbook
Dim wsInv As Worksheet
Dim wsAppro As Worksheet
Dim i As Long
Dim dernLigAppro As Long
Dim article As String
Dim index As String
Dim cible As Range

Set wbInv = Workbooks("inventaire.xlsx")
Set wbAppro = Workbooks("approvisionnement.xlsm")
Set wsInv = wbInv.Sheets(1)
Set wsAppro = wbAppro.Sheets(1)

dernLigAppro = Range("A" & Rows.Count).End(xlUp).Row  'trouve la dernière ligne

For i = 3 To dernLigAppro
    article = Cells(i, 1)
    Set cible = wsInv.Cells.Find(article)
    If Not cible Is Nothing Then
        wsAppro.Cells(i, "C").Value = wsInv.Cells(cible.Row, "C").Value & " / " & wsInv.Cells(cible.Row, "D").Value
    End If
Next i

End Sub

ça paraît un peu lourd mais ça m'accélère déjà passablement mon travail.

Si vous avez d'autres suggestions, je suis toujours à l'écoute

Sardaukar

Bonjour,

Ci-joint une proposition à tester.

Le principe : on lit dans un premier temps le fichier inventaire pour constituer un "dictionnaire" (collection), et on alimente dans un second le fichier approvisionnement.

Ceci devrait accélérer le traitement (indexation sur le n° d'article), évite de lancer une recherche pour chaque ligne.

Bouben

Merci beaucoup Bouben!

Une très bonne idée d'utiliser une collection. ça marche nikel!

Je vais faire quelques tests, mais ça m'a l'air parfait

Cordiales salutations

Sardaukar

Rechercher des sujets similaires à "recherche informations fichier ouvert"