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

Microsoft 365 Ouvrir un autre classeur excel (VBA) pour utiliser les données de celui dans le classeur actif

keriatsu

XLDnaute Nouveau
Bonjour,

Je souhaite à l'aide d'une macro ouvrir un classeur dans lequel il y a des données me permettant de les remplacer dans le classeur actif.

Je m'explique :
Sur une base de données en ligne, j'extrais en fichier excel des données (Le nom de ce fichier peut varier). Je souhaiterais indiquer sur ce fichier des informations d'un autre fichier fixes présent sur mon ordinateur.

J'arrive bien à ouvrir le fichier mais je ne sais pas comment retourner sur le classeur ou il y a mon extraction. Comment faire.

Voici un exemple anonymiser :

Dans un premier temps j'importe un fichier s'appelant "extraction(17)"

Dans la colonne C, je souhaite, à partir des noms de classe, renseigner le "niveau". Cette information se trouve dans un autre fichier : répartion.xlsx.
A la main, je sais faire en ouvrant le fichier puis en entrant la formule RECHERCHEV

Dans la macro, je sais ouvrir le fichier cependant je ne sais pas comment revenir sur le fichier de l'extraction car il n'a pas forcément le nom extraction(17). Il peut se nommer extraction(23).

Est-ce que quelqu'un pourrait m'indiquer comment faire.


Vous trouverez 4 fichiers :
- Le fichier de l'extraction
- Le fichier de l'extraction avec modification (le fichier que je souhaite obtenir)
- Le fichier répartition (fichier ou contient les informations que je souhaite récupérer pour remplir celui de l'extraction)
Et voici le code (Qui ne marche uniquement pour un fichier se nommant "extraction(17)")
VB:
Sub reeeeee()
'
' reeeeee Macro
'

'
    Workbooks.Open Filename:= _
        "C:\Users\Micka\Documents\ALAE\Test\répartition.xlsx"
    Windows("Extraction(17).xlsx").Activate
    Range("C4").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],[répartition.xlsx]Feuil1!R2C1:R21C2,2)"
    Range("C4").Select
    Selection.AutoFill Destination:=Range("C4:C11"), Type:=xlFillDefault
    Range("C4:C11").Select
End Sub

Merci pour votre aide
 

Pièces jointes

  • Extraction(17).xlsx
    11.3 KB · Affichages: 5
  • Extraction(17).final.xlsx
    11.4 KB · Affichages: 3
  • répartition.xlsx
    16.2 KB · Affichages: 7
Solution
Bonjour,

Merci beaucoup pour votre aide. La solution que j'ai trouvé est de fermer le fichier. Je n'en ai plus besoin.

Merci encore pour votre aide.

VB:
Private Sub FA_Repartition()
    Dim WbkSrc As Workbook, RngCbl As Range
    Set RngCbl = ActiveSheet.[C4:C350]
    Set WbkSrc = Workbooks.Open(Filename:= _
        "C:\Users\Micka\Documents\ALAE\Test\répartition.xlsx")
    RngCbl.FormulaR1C1 = "=VLOOKUP(RC4," & _
        WbkSrc.Worksheets(1).[A2:B21].Address(True, True, xlR1C1, True) & ",2)"
    Application.Goto RngCbl
    Workbooks("répartition.xlsx").Close SaveChanges:=False

End Sub

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez ça :
VB:
Sub reeeeee()
   Dim WbkSrc As Workbook, RngCbl As Range
    Set RngCbl = ActiveSheet.[C4:C11]
    Set WbkSrc = Workbooks.Open(Filename:= _
        "C:\Users\Micka\Documents\ALAE\Test\répartition.xlsx")
    RngCbl.FormulaR1C1 = "=VLOOKUP(RC4," & _
        WbkSrc.Worksheets(1).[A2:B21].Address(True, True, xlR1C1, True) & ",2)"
    Application.Goto RngCbl
   End Sub
 

Dranreb

XLDnaute Barbatruc
Ben enlevez la dernière instruction.
Non, je dis une bêtise. Normalement la plage cible est bien justement dessus, non ?
Donc Application.GoTo RngCbl devrait y aller.
La macro est où ? Vous n'avez joint que des .xlsx …
 
Dernière édition:

keriatsu

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour votre aide. La solution que j'ai trouvé est de fermer le fichier. Je n'en ai plus besoin.

Merci encore pour votre aide.

VB:
Private Sub FA_Repartition()
    Dim WbkSrc As Workbook, RngCbl As Range
    Set RngCbl = ActiveSheet.[C4:C350]
    Set WbkSrc = Workbooks.Open(Filename:= _
        "C:\Users\Micka\Documents\ALAE\Test\répartition.xlsx")
    RngCbl.FormulaR1C1 = "=VLOOKUP(RC4," & _
        WbkSrc.Worksheets(1).[A2:B21].Address(True, True, xlR1C1, True) & ",2)"
    Application.Goto RngCbl
    Workbooks("répartition.xlsx").Close SaveChanges:=False

End Sub
 

Discussions similaires

Réponses
32
Affichages
960
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…