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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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, _...
Okayyy ! Que de belles informations que vous m'avez donné là.

Merci à tous les deux @D.D. et @Etoto pour vos contributions oh combien riches.

Je vais faire ce qu'il y a de plus intelligent, c'est à dire fusionner vos deux contributions.

Après, je vous avoue que je n'ai pas encore compris le truc du aray que je ne connaissais pas. Je ne connais que le copier/coller 🙁.

Merci encore, vous êtes Géniaux 🙏
 
Re,

Petite info ! Si tu utilises ce code :
VB:
Sub Import_Data()
    Dim Chemin As String
    Dim NomFichier As String
    Chemin = [B1]
    NomFichier = [B2]
    Workbooks.Open Filename:= Chemin & NomFichier, 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)
End Sub

Tu ne dois pas oublier de mettre "\" à la fin du chemin dans la cellule B1. Ou alors tu utilises ce code :
VB:
Sub Import_Data()
    Dim Chemin As String
    Dim NomFichier As String
    Chemin = [B1]
    NomFichier = [B2]
    Workbooks.Open Filename:= Chemin & "\" & NomFichier, 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)
End Sub

Cordialement mon cher 😉
 
Re,

Petite info ! Si tu utilises ce code :
VB:
Sub Import_Data()
    Dim Chemin As String
    Dim NomFichier As String
    Chemin = [B1]
    NomFichier = [B2]
    Workbooks.Open Filename:= Chemin & NomFichier, 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)
End Sub

Tu ne dois pas oublier de mettre "\" à la fin du chemin dans la cellule B1. Ou alors tu utilises ce code :
VB:
Sub Import_Data()
    Dim Chemin As String
    Dim NomFichier As String
    Chemin = [B1]
    NomFichier = [B2]
    Workbooks.Open Filename:= Chemin & "\" & NomFichier, 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)
End Sub

Cordialement mon cher 😉
Justement je suis en train d'essayer d'intégrer le code que vous avez proposé mais je crois que dois m'y prendre mal car j'ai des erreurs de débogage à chaque fois.

Je vais essayer avec le dernier que tu viens d'ajouter avec le "\" puis je reviens vous dire plus
 
Justement je suis en train d'essayer d'intégrer le code que vous avez proposé mais je crois que dois m'y prendre mal car j'ai des erreurs de débogage à chaque fois.

Je vais essayer avec le dernier que tu viens d'ajouter avec le "\" puis je reviens vous dire plus
Re,

N'oublie pas !! Le nom du fichier comporte aussi son extension (exemple : .xlsx, .xlsm, .xls, etc....)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
489
Réponses
17
Affichages
936
Retour