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:

sans titre

le fichier est trop volumineux, mais voici son nom

sans titre2
 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 ! bonne nuit à toi aussi !

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 d'le remplacer par path1 !

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

Rechercher des sujets similaires à "concatenation date nom fichier"