Importé données d'un autre Excel via une macro

J'ai trouvé quelque post sur le sujet, mais aucun avec la particularité que j'ai.

Donc voilà, dans mon excel que je travail chaque jour, je dois y faire ajouter des info dans un onglet à chaque jour à un moment précis de la journée (Ceci n'est pas pertinent à ma situation).

J'ai un fichier excel (en .csv) qui se créé chaque jour, je dois aller prendre l'info de ce fichier et l'ajouter dans mon excel de travail. Ce excel à pour nom de fichier, ceci la-date-aujourd'hui_plan_match.csv (exemple: 2016-05-01_plan_match.csv), donc le nom change chaque jour, ceci est ma particularité que j'ai pas trouvé dans aucun post sur le suhet. Présentement, je l'ouvre chaque jour, fait un copié/collé dans mon fichier excel que je travail.

Est-ce qu'il aurait moyen d'avoir une macro qui ferait cette action. L'onglet de mon fichier de travail ou je veux l'info est celui-ci: INPUT_CSV


Important...le fichier dont le nom est la date d'aujourd'hui est dans le dossier ........../input/

À la base, j'ai été capable avec ceci dans VBA.

Sub test()
Dim classeurSource As Workbook, classeurDestination As Workbook

'ouvrir le classeur source (en lecture seule)
Set classeurSource = Application.Workbooks.Open("Q:\misc\MOBAT\test_plan_match.csv", , True)
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "test_plan_match" du classeur source vers la "TEST_INPUT" du classeur destination
classeurSource.Sheets("test_plan_match").Cells.Copy classeurDestination.Sheets("INPUT_CSV").Range("A1")

'fermer le classeur source
classeurSource.Close False

End Sub

Mais ce code prend compte que le fichier doit toujours avoir le même nom alors que le mien change chaque jour en fonction de la date.

bonsoir,

Tu peux bricoler un truc comme ça :

Sub test()
Dim a, chemin$, StrDat$, WBkSource As Workbook, WBkDestination As Workbook
chemin = "Q:\misc\MOBAT\"
a = InputBox(Space(15) & "Saisir la date sous la forme" & Chr(13) & Space(30) & "JJ/MM/AAAA")
On Error GoTo GESTERR
a = CDate(a)
StrDat = chemin & Mid(a, 7, 4) & "-" & Mid(a, 4, 2) & "-" & Mid(a, 1, 2) & "_plan_match.csv"
'ouvrir le WBk source (en lecture seule)
Set WBkSource = Application.Workbooks.Open(StrDat, , True)
'définir le WBk destination
Set WBkDestination = ThisWorkbook

'copier les données de la "test_plan_match" du WBk source vers la "TEST_INPUT" du WBk destination
WBkSource.Sheets("test_plan_match").Cells.Copy WBkDestination.Sheets("INPUT_CSV").Range("A1")

'fermer le WBk source
WBkSource.Close False
Exit Sub
GESTERR:
 MsgBox "Date invalide"
End Sub

Ou encore fournir le String date mis en forme dans une cellule quelconque...

Sinon automatiser avec la date de la veille, j'y crois pas trop, à cause des fériés et autres exceptions en tout genre...

A+

On avance...la fenêtre pour choisir la date apparaît.

Sa fonctionne pas, je recois se message d'erreur.

"Nous sommes désolées, mai <Q:\misc\MOBAT\2-05-6--20_plan_match.csv est introuvable."

Je sais pas si ça peu avoir un lien, mais le nom de mon fichier avec la date est celui-ci 20160502_plan_match.csv et dans la solution que tu me donne, ça me demande d'inscrire la date comme ceci 02/05/2016.


À noter que dans cette ligne d'info..

WBkSource.Sheets("test_plan_match").Cells.Copy WBkDestination.Sheets("INPUT_CSV").Range("A1")

("test_plan_match"). est le nom de l'onglet du fichier que j'importe les données, il a le même nom que le fichier, donc 20160502_plan_match

bonsoir,

Boire ou conduire il faut choisir !

Dans ton premier fil tu dit que le fichier est au format "2016-05-01"

Et maintenant il est au format "20160502"

si le nom du fichier change tant que ça il va falloir passer per un GetOpenFileNAme...

mais avant de tout changer, merci de préciser...

A+

galopin01 a écrit :

bonsoir,

Boire ou conduire il faut choisir !

Dans ton premier fil tu dit que le fichier est au format "2016-05-01"

Et maintenant il est au format "20160502"

si le nom du fichier change tant que ça il va falloir passer per un GetOpenFileNAme...

mais avant de tout changer, merci de préciser...

A+

Oui, désolé, ça été mon erreur...le format est vraiment ceci..20160502_plan_match.csv... demain sera 20160503_plan_match.csv.

Ne pas oublié que l'onglet dans le fichier porte le même nom que le fichier .csv en moins.

J'ai pensé passer par un "GetOpenFileName", mais je suis pas capable de le faire. Car en effet, je croyais que ça serait la solution la plus facile.

bonsoir,

Ce ne serait pas vraiment plus facile, il faudra de toute façon extraire le nom de la feuille...

Essaie comme ça :

Sub test()
Dim a, chemin$, StrNam$, StrExt$, WBkSource As Workbook, WBkDestination As Workbook
'définir le WBk destination
Set WBkDestination = ThisWorkbook
chemin = "Q:\misc\MOBAT\"
a = InputBox(Space(15) & "Saisir la date sous la forme" & Chr(13) & Space(30) & "JJ/MM/AAAA")
On Error GoTo GESTERR
a = CDate(a)
StrExt = ".csv"
StrNam = Mid(a, 7, 4) & Mid(a, 4, 2) & Mid(a, 1, 2) & "_plan_match"
StrFile = chemin & StrNam & StrExt
'ouvrir le WBk source (en lecture seule)
Set WBkSource = Application.Workbooks.Open(StrFile, , True)

'copier les données de la "test_plan_match" du WBk source vers la "TEST_INPUT" du WBk destination
WBkSource.Sheets(StrNam).Cells.Copy WBkDestination.Sheets("INPUT_CSV").Range("A1")

'fermer le WBk source
WBkSource.Close False
Exit Sub
GESTERR:
 MsgBox "Date invalide"
End Sub

A+

merci de m'aider..

J'ai encore la même erreur.


Solutionné merci.

Avec un collègue, nous avons pris ton code et voir se qui clochait, il a trouvé la solution et ça fonctionne.

Rechercher des sujets similaires à "importe donnees via macro"