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

Microsoft 365 Créer une macro qui va dans un dossier récupérer un fichier

Excellerateur

XLDnaute Occasionnel
Bonjour chers membres!



Je voudrais pourvoir faire une macro qui va aller dans un dossier de mon pc, puis récupérer un fichier qui se trouve dans un dossier, l'ouvrir et copier toute une plage de ce fichier et venir la coller dans l'onglet de destination prévu dans mon fichier (celui de la macro).



Je ne sais pas si il faudrait que je produise le fichier , mais je n'en suis pas sûr.



Néanmoins voici ce que j'ai obtenu comme code:

VB:
Sub maj_extraction_de_donnees()

'

' maj_extraction_de_données Macro

'


'

    Sheets("Donnees").Select

    Range("A2:E3138").Select

    Selection.ClearContents

    Range("A1:E2644").Select

    Selection.Copy

    Windows("Outil de franchissement.xlsm").Activate

    Sheets("Donnees density").Select

    Range("A2").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Range("A1").Select

    Windows("Equity.csv").Activate

    Application.CutCopyMode = False

    Windows("Outil de franchissement.xlsm").Activate

End Sub

Mais mon code n'est pas optimal car quand je ferme et qu'une autre personne l'ouvre, il ne part pas ans le réseau chercher le ficher dans lequel la copie doit être faite.



Merci de votre aide.



Bien cordialement,
 
Solution
Exemple avec le code :

VB:
Sub Import_Data()
    Dim Chemin As String
    Chemin = [B1]
    Workbooks.Open Filename:= Chemin, ReadOnly:=True
    Sheets("Deliveries").Select
    last = Range("A1048576").End(xlUp).Row
    oArray = Range("A2:S" & last)
    Workbooks("Fichier.xlsx").Close SaveChanges = 0
    Windows(NomFichier).Activate
    Sheets("Data").Select
    On Error Resume Next
    Sheets("Data").ShowAllData
    On Error GoTo 0
    Range("T3:AG1048576").Clear
    Range("A2:S1048576").ClearContents
    Range("A2:S" & last) = oArray
    Erase oArray
    Range("T2:AG2").AutoFill Destination:=Range("T2:AG" & last)
    Range("la zone à convertir").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _...

Etoto

XLDnaute Barbatruc
Re,

Je vois que tu fais un lien entre des classeurs et un fichier CSV ? Tu sais que c'est aussi le job de Power Query ?

EDIT : Mais ça fonctionne seulement avec une plage qui est un tableau.
 
Dernière édition:

Etoto

XLDnaute Barbatruc
Ah mince, je connais pas encore Power Query

Mais le EDIT je vais essayer de voir comment ça marche.


Merci pour ta bonne humeur @Etoto
Re,

Power Query sert à tirer des données, voici ce qu'il peut faire :

Access à Power BI
Excel à Power BI
Web à Power BI
CSV à Excel
Access à Excel
CSV à Excel
TXT à Excel
PDF à Excel
Web à Excel
etc.....


Tu peux même utiliser des tableaux de Wikipédia dans Excel grâce à Power Query, c'est vraiment pratique.

Mais si tu veux que cela fonctionne il faut que ce soit un tableau et en plus les données se réactualise toutes seules !!

Et de rien pour ma bonne humeur
 

Excellerateur

XLDnaute Occasionnel
Re,

Mais si tu veux de l'aide plus personnalisée, rien ne vaut un bon petit fichier tout chaud sorti du four sans données confidentielles (au sinon je le remet dans le four )
En fait je ne sais pas si mettre un fichier serait nécessaire;

moi je cherche à programmer un code qui ira ouvrir un certain dossier nommé "excellerateur" par exemple
puis qui ouvrirait ce dossier contenant un certain fichier excel puis copier l'onglet (données) et revenir coller cette copie sur une autre fichier excel déjà ouvert sur mon pc;

je ne sais pas si tu vois ce que je veux dire.
 

Excellerateur

XLDnaute Occasionnel
Salut la team!

Je viens de joindre un fichier pour illustrer ma problématique qui réside toujours!

J'aimerais en effet savoir coment récupérer un fichier dans un dossier qui est sur mon pc.

J'ai essayé avec l'instruction Dir mais rien n'y fait
 

Pièces jointes

  • pays-et-ratios-V10.xlsm
    20.1 KB · Affichages: 3

Etoto

XLDnaute Barbatruc
Re,

1) Lance l'enregistreur de macro dans le fichier qui va recevoir la copie

2) Ouvre le fichier source

3) Copie la plage

4)Colle sur l'autre fichier

5) Stoppe l'enregistrement de la macro

5(Optionnel) Améliore la macro.


EDIT : Tu dois ouvrir le fichier pendant l'enregistrement et pas avant.

Cordialement
 
Dernière édition:

Excellerateur

XLDnaute Occasionnel
Re,

1) Lance l'enregistreur de macro dans le fichier qui va recevoir la copie

2) Ouvre le fichier source

3) Copie la plage

4)Colle sur l'autre fichier

5) Stoppe l'enregistrement de la macro

5(Optionnel) Améliore la macro.

Cordialement
Oui c'est exactement ce que j'ai fait mon très cher @Etoto, mais le code n'enregistre pas le chemin dans vba.

je ne comprends justement pas pourquoi
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…