XL 2019 injecter fichier excel avec nom variable

Romain.Gib

XLDnaute Nouveau
Bonjour,

Dans le cadre de mon travail, j'aimerai pouvoir injecter un fichier excel dans un autre fichier via une macro de la manière automatique via un chemin d'accès.
Le fichier en question commence systématiquement par "cadencier" suivi d'une date.

Actuellement, j'injecte le fichier manuellement.

Voici le début de mon code :

Sub cadencierbefcodeinterne()
Dim FileToOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename(Title:="Injecter le cadencier BEF", FileFilter:="Excel Files (*.xls*),*xls*,All Files (*.*), *.*")
If FileToOpen <> False Then
Set OpenBook = Application.Workbooks.Open(FileToOpen)
OpenBook.Sheets(1).Range("A1:AC17000").Copy
ThisWorkbook.Worksheets("Cadencier BEFMOUV").Range("A1").PasteSpecial xlPasteValues
OpenBook.Close False
' Application.ScreenUpdating = False
MsgBox "Traitement terminé !", 64
End If


End Sub


J'aimerai de ce fait, qu'en cliquant sur un bouton, injecter le fichier "cadencier" (exemple : cadencier 2023-10-30.xlsx) qui se trouve sous : "G:\Drive partagés\(030) Commun" de manière automatique.

Merci d'avance,
 

job75

XLDnaute Barbatruc
Bonjour Romain.Gib, le forum,

A priori il peut y avoir plusieurs fichiers "Cadencier" dans le dossier.

En choisir un par Application.GetOpenFilename convient très bien sur Windows (pas sur MAC).

Que voulez-vous de plus ?

A+
 

Romain.Gib

XLDnaute Nouveau
Bonjour,

Il n'y aura qu'un seul fichier commençant par "Cadencier" mais la date composant ce nom de fichier change.

Là actuellement je dois aller chercher le fichier "Cadencier" manuellement.
Je souhaiterai que cela se fasse en automatique en cliquant sur un bouton en sachant que le début du nom du ficher restera inchangé.

Cordialement,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Romain, Job,
Un essai en PJ avec :
VB:
Sub OuvreCadencier()
    ' Chemin = "C:\Users\PC_PAPA\Desktop\"  'pour test
    Chemin = "G:\Drive partagés\(030) Commun"
    Fichier = ChercheCadencier(Chemin)
    If Fichier <> "" Then Workbooks.Open Dossier & Fichier
End Sub
Function ChercheCadencier(Dossier)
Dim Fichier As String, i As Integer
i = 0: ChercheCadencier = ""
Fichier = Dir(Dossier)
Do While Fichier <> ""
    i = i + 1
    If Left(Fichier, 9) = "Cadencier" Then
        ChercheCadencier = Fichier
        Exit Function
    End If
    Fichier = Dir
Loop
End Function
Le Chemin doit être mis à jour si erroné.
 

Pièces jointes

  • OuvrirFichierCadencier.xlsm
    14 KB · Affichages: 1

job75

XLDnaute Barbatruc
Il n'y aura qu'un seul fichier commençant par "Cadencier" mais la date composant ce nom de fichier change.
Vous pouvez simplement placer cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_Activate()
Dim chemin$, fichier$
chemin = ThisWorkbook.Path & "\" 'pour tester plus facilement
'chemin = "G:\Drive partagés\(030) Commun\"
fichier = Dir(chemin & "Cadencier*.xls*")
If fichier = "" Then MsgBox "Pas de fichier à coper !", 48: Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False 'dèsactive les évènements
With Workbooks.Open(chemin & fichier)
    ThisWorkbook.Sheets("Cadencier BEFMOUV").[A1:AC17000] = .Sheets(1).[A1:AC17000].Value
    .Close False
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on ouvre ou active le fichier.

Pour tester téléchargez les fichiers joints dans le même dossier (le bureau).

Salut sylvanu.
 

Pièces jointes

  • Copier fichier.xlsm
    15.1 KB · Affichages: 1
  • Cadencier 2023-10-31.xlsx
    8.8 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35