Concaténation date et nom fichier
Bonjour à tous,
je n'arrive pas à retrouver l'erreur qui m'affiche ce message quand je suis censé taper la date du fichier 08 10 2019:
le fichier est trop volumineux, mais voici son nom
dateI:
inputDate = InputBox("Choix du dossier pour remplir le fichier indicateur. La date doit être SEULEMENT au format JJ_MM_AAAA. Saisir la date : ")
If StrPtr(inputDate) = 0 Then 'Si l'utilisateur clique sur le bouton annulé, annule la procédure
Exit Sub
End If
'Récupère la date ajoutée par l'utilisateur et récupère la date, le mois et l'année
'pour les fichiers de François car les dates sont au format AAAAMMJJ. Les fichiers concernés sont : DSCC_NbAgentsHorsPIC, exportPA et IndicateurV2
day = Left(inputDate, 2)
month = Mid(inputDate, 4, 2)
year = Right(inputDate, 4)
dateOfFile = year & month & day
'Condition permettant de vérifier que les fichiers sont dans le dossier
If oFSO.FileExists(path & "\" & inputDate & "\IndicateurV2_" & dateOfFile & ".xlsx") Then
Set other = Workbooks.Open(path & "\" & inputDate & "\IndicateurV2_" & dateOfFile & ".xlsx", , False) 'Permet d'ouvrir le fichier indicateur en mode lecture/écriture
Else
MsgBox "Le fichier IndicateurV2_" & dateOfFile & " est introuvable"
Exit Sub
End If
If oFSO.FileExists(path & "\" & inputDate & "\DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx") Then
Set other = Workbooks.Open(path & "\" & inputDate & "\DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx", , False) 'Permet d'ouvrir le fichier indicateur en mode lecture/écriture
Else
MsgBox "Le fichier DSCC_NbAgentsHorsPIC_" & dateOfFile & " est introuvable"
Exit Sub
End If
merci de votre aide
Fronck
Bonjour Fronck,
path : est-ce une variable que tu as créée ? si oui, elle n'est pas renseignée ; mais comme path est un mot-clé de VBA, il ne faut pas l'utiliser en tant que nom de variable ! peut-être voulais-tu utiliser Application.Path
ou ThisWorkbook.Path
?
dhany
ajout : d'autre part, pour tester l'existence d'un fichier, au lieu d'utiliser oFSO.FileExists(..)
, c'est plus simple d'utiliser :
If Dir(Application.Path & "\" & FichierX & ".xlsx")<>"" Then
'ici, le fichier existe
Else
'ici, le fichier n'existe pas
End If
dhany
Bonjour Dhany,
Ce code est celui d'un utilisateur avec ce sujet.
Je préfère te donner le code en entier pour que tu comprennes mieux ce que tu pourras faire
c'est pas trop mon domaine les chemins et il est compliqué son code:
Private Sub openFile()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim repertoire As String
Dim wbook As Workbook
Dim inputDate As String
Dim bookName As String
Dim numberDSCC As String, numberDOMTOMDTC As String, numberSuivi As String, day As String, month As String, year As String, dateOfDir As String, dateOfFile As String
Dim test_numberSuivi As Boolean
Dim dateExtraction As String
Dim unFichier As Variant
Dim fichier_source As String
Dim path As String, test As Boolean
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.File
'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
fichier_source = ActiveWorkbook.Name 'le nom est récupéré lorsque l'utilisateur lance la macro depuis le fichier indicateur
'Vérifier que la macro est lancée à partir du fichier indicateur
If Not fichier_source Like "Suivi avancement*" Then
MsgBox "Veuillez lancer la macro depuis le fichier indicateur"
Exit Sub
End If
Dim file_macro As String, file_exportPA As String, WB_count As String, X As Integer
WB_count = Workbooks.Count
For X = 1 To WB_count ' permet de récupérer le nom du fichier contenant le code VBA
If Workbooks(X).Name Like "Macro_*" Then
file_macro = Workbooks(X).Name
Exit For
End If
Next X
For X = 1 To WB_count ' permet de récupérer le nom du fichier exportPA
If Workbooks(X).Name Like "exportPA*" Then
file_exportPA = Workbooks(X).Name
Exit For
End If
Next X
'Vérifier que le fichier exportPA a été ouvert
If file_exportPA = "" Then
MsgBox "Veuillez ouvrir le fichier exportPA"
Exit Sub
End If
test = False
path = Workbooks(file_macro).Sheets(1).Cells(10, 1) 'Récupère le chemin ajouté par l'utilisateur
If path = "" Then
MsgBox "Veuillez indiquer le dossier contenant les fichiers Gestion des activités"
Exit Sub
End If
dateI:
inputDate = InputBox("Choix du dossier pour remplir le fichier indicateur. La date doit être SEULEMENT au format JJ_MM_AAAA. Saisir la date : ")
If StrPtr(inputDate) = 0 Then 'Si l'utilisateur clique sur le bouton annulé, annule la procédure
Exit Sub
End If
'Récupère la date ajoutée par l'utilisateur et récupère la date, le mois et l'année
'pour les fichiers de François car les dates sont au format AAAAMMJJ. Les fichiers concernés sont : DSCC_NbAgentsHorsPIC, exportPA et IndicateurV2
day = Left(inputDate, 2)
month = Mid(inputDate, 4, 2)
year = Right(inputDate, 4)
dateOfFile = year & month & day
'Condition permettant de vérifier que les fichiers sont dans le dossier
If oFSO.FileExists(path & "\" & inputDate & "\IndicateurV2_" & dateOfFile & ".xlsx") Then
Set other = Workbooks.Open(path & "\" & inputDate & "\IndicateurV2_" & dateOfFile & ".xlsx", , False) 'Permet d'ouvrir le fichier indicateur en mode lecture/écriture
Else
MsgBox "Le fichier IndicateurV2_" & dateOfFile & " est introuvable"
Exit Sub
End If
If oFSO.FileExists(path & "\" & inputDate & "\DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx") Then
Set other = Workbooks.Open(path & "\" & inputDate & "\DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx", , False) 'Permet d'ouvrir le fichier indicateur en mode lecture/écriture
Else
MsgBox "Le fichier DSCC_NbAgentsHorsPIC_" & dateOfFile & " est introuvable"
Exit Sub
End If
repertoire = path & "\" & inputDate & "\"
unFichier = Dir(repertoire & "Gestion des activités*.xl*")
If StrPtr(inputDate) = 0 Then 'Si l'utilisateur clique sur le bouton annulé, annule la procédure
Exit Sub
ElseIf unFichier = "" Then 'Condition si l'utilisateur se trompe de date donc le dossier ne peut pas être trouvé ou si dans le dossier il n'y a pas les fichiers alors cela réaffiche la fenêtre
MsgBox "Dossier non trouvé, date incorrecte ou aucun fichier dans le dossier"
GoTo dateI
End If
While unFichier <> "" 'Boucle qui effectue les traitements sur tous les fichiers du dossier
Set wbook = Workbooks.Open(repertoire & unFichier, , False) 'Ouvre en lecture/écriture les fichiers à traiter du dossier
bookName = wbook.Name 'récupère le nom du fichier
'Ces conditions sont nécessaires lorsque le numéro de suivi est supérieur ou égale à 10
test_numberSuivi = True
numberSuivi = Mid(bookName, 41, 2) 'récupère le numéro de suivi
If numberSuivi Like "* " Then
numberSuivi = Left(numberSuivi, 1) 'enlever l'espace à la fin de la variable numberSuivi
test_numberSuivi = False
End If
If test_numberSuivi = False Then
numberDSCC = Mid(bookName, 64, 7) 'récupère la DSCC
Else
numberDSCC = Mid(bookName, 64, 8) 'récupère la DSCC
numberDSCC = Right(numberDSCC, 7) 'enlever l'espace au début de la variable numberDSCC
End If
'*******************************************************************
day = Left(inputDate, 2)
month = Mid(inputDate, 4, 2)
dateOfDir = day & "/" & month 'obtenir la date en version JJ/MM => Variable pour remplir la cellule à côté de la cellule contenant la valeur "Suivi X" (X numéro du suivi) et mettre au format JJ/MM + N° suivi
dateExtraction = day & "/" & month & "/" & year 'Cette variable permet de pouvoir filtrer dans le fichier IndicateurV2 la date du tableau croisé dynamique
Workbooks(unFichier).Activate
Call RemplirFichierIndicateur.addValue(numberDSCC, numberSuivi, dateOfDir, unFichier, fichier_source, inputDate, dateOfFile, dateExtraction, numberDOMTOMDTC)
Application.DisplayAlerts = False
Workbooks(unFichier).Save
Workbooks(unFichier).Close
Application.DisplayAlerts = True
unFichier = Dir
Wend
Application.Goto Worksheets(1).Range("C1"), True
Workbooks("IndicateurV2_" & dateOfFile & ".xlsx").Save
Workbooks("IndicateurV2_" & dateOfFile & ".xlsx").Close
Workbooks("DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx").Save
Workbooks("DSCC_NbAgentsHorsPIC_" & dateOfFile & ".xlsx").Close
Application.DisplayAlerts = False
Workbooks(file_macro).Save
Workbooks("exportPA_" & dateOfFile & ".csv").Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Macro exécutée"
End Sub
merci pour ton aide
fronck
oh là ! j'voulais juste te donner une piste ; j'voulais pas m'occuper d'un code aussi long, surtout qu'j'suis fatigué !
j'termine un ou deux trucs, et j'vais arrêter pour aller dormir !
dhany
Bonjour Dhany,
J'avais pas vu ton message, j'étais fatigué aussi
je me suis débrouillé avec tes explications et je suis allé jusqu'à la fin de la macro.
If Dir(path1 & "\" & "\IndicateurV2_" & dateOfFile & ".xlsx") <> "" Then
merci
fronck
Bonjour Fronck,
j'viens d'reprendre sur mon PC ; merci pour ton retour d'infos, et bravo pour avoir réussi à terminer ta macro !
j'savais bien que path était en cause !
t'as bien fait aussi d'suivre mon indication en remplaçant oFSO.FileExists(..) par Dir(..) !
merci pour avoir passé le sujet en résolu !
bonne continuation !
dhany