VBA Création d'un répertoire pour save .xls

Fermé
dy - 26 nov. 2008 à 11:36
 dy - 26 nov. 2008 à 14:24
Bonjour,
voilà suite un ma macro en excel je voudrais savegarder des données dans un nouveau fichier exel mais à chaque fois que cette macro tournera je voudrais un créer un fichier avec un nom + la date du jour
mais aji un probleme lors de la création du répertoire! j'ai essayer avec mkdir ou sans !
je ne vois pas trop c'est la premiere fois que je dois utilisé se genre de traitement

ReDim Tableau(100)
'date du jour
DateJ = Now
NomDossier = "D:\XXXX\TEST" & DateJ & "/"

I = 3
J = 1
L = 3
NumProjetRef = Cells(I, 4).Value
NumtacheRef = Cells(I, 5).Value

While Cells(I, 4).Value <> ""

    While NumProjetRef = Cells(L, 4).Value And NumtacheRef = Cells(L, 5).Value
     
    NumArticle = Cells(L, 1).Value
    NumArticle = Left(NumArticle, 8)
    Tableau(J) = NumArticle
    
    If Cells(L, 7).Value <> "" Then
        NomDoc = Cells(L, 8).Value & " " & "/" & " " & Cells(I, 9).Value
    Else
        NomDoc = Cells(L, 4).Value & " " & "/" & "" & Cells(I, 5).Value
    End If
    L = L + 1
    J = J + 1
    Wend
    
    'On créer l'objet Excel
    Set xlApp = CreateObject("Excel.Application")
    'On défini le nombre d'onglets (ici 5)
    xlApp.SheetsInNewWorkbook = L
    'On ajoute un classeur
    Set xlBook = xlApp.Workbooks.Add
    'On donne un nom au classeur
    MkDir NomDossier
    xlBook.SaveAs NomDossier & NomDoc & ".xls"
    'On rend le classeur visible
    xlApp.Visible = True
    'On créer l'objet onglet dans le nouveau classeur créé
    For V = 1 To J
    Set xlSheet = xlBook.Worksheets(1)
    'On affecte un nom aux l'onglets
    xlSheet.Name = Tableau(V)
    'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
    Next V
    'On remet la propriété de l'application à 3 (par défaut)
    xlApp.SheetsInNewWorkbook = 3
    'On ferme l'application
    xlApp.Quit
    
    I = I + 1
    
Wend
End Sub


la partis en gras me génére l'erreur

merci de bien m'aider
A voir également:

5 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
26 nov. 2008 à 12:02
Bonjour

j'ai un doute sur cette ligne :
NomDossier = "D:\XXXX\TEST" & DateJ & "/"
pour moi ca serait :
NomDossier = "D:\XXXX\TEST" & DateJ & "\"

alors :
NomDossier = "D:\XXXX\TEST" & DateJ
Ensuite :
On error resume next ' Permet de ne pas planter si le dossier existe deja
MkDir NomDossier
On error Goto 0 ' On rend le control d'erreur à VBA
NomDossier = NomDossier & "\"

0
j'ai tjr une erreur sur xlBook.SaveAs NomDossier & NomDoc & ".xls"

erreur 1004 fichier inaccessible et je vois pas dans mon disque D:/ mon fichier
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
26 nov. 2008 à 12:18
re:

reposte ta macro, modifiée avec ce que je t'ai donné
0
'date du jour
DateJ = Now
NomDossier = "D:\XXXX\TEST" &" " &  DateJ

I = 3
J = 1
L = 3
NumProjetRef = Cells(I, 4).Value
NumtacheRef = Cells(I, 5).Value

While Cells(I, 4).Value <> ""

    While NumProjetRef = Cells(L, 4).Value And NumtacheRef = Cells(L, 5).Value
     
    NumArticle = Cells(L, 1).Value
    NumArticle = Left(NumArticle, 8)
    Tableau(J) = NumArticle
    
    If Cells(L, 7).Value <> "" Then
        NomDoc = Cells(L, 8).Value & " " & "/" & " " & Cells(I, 9).Value
    Else
        NomDoc = Cells(L, 4).Value & " " & "/" & "" & Cells(I, 5).Value
    End If
    L = L + 1
    J = J + 1
    Wend
    
    'On créer l'objet Excel
    Set xlApp = CreateObject("Excel.Application")
    'On défini le nombre d'onglets (ici 5)
    xlApp.SheetsInNewWorkbook = L
    'On ajoute un classeur
    Set xlBook = xlApp.Workbooks.Add
    'On donne un nom au classeur
    NomDossier = "D:\XXXX\TEST" & DateJ

    On Error Resume Next ' Permet de ne pas planter si le dossier existe deja
    MkDir NomDossier
    On Error GoTo 0 ' On rend le control d'erreur à VBA
    NomDossier = NomDossier & "\"

    xlBook.SaveAs NomDossier & NomDoc & ".xls"
    'On rend le classeur visible
    xlApp.Visible = True
    'On créer l'objet onglet dans le nouveau classeur créé
    For V = 1 To J
    Set xlSheet = xlBook.Worksheets(1)
    'On affecte un nom aux l'onglets
    xlSheet.Name = Tableau(V)
    'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
    Next V
    'On remet la propriété de l'application à 3 (par défaut)
    xlApp.SheetsInNewWorkbook = 3
    'On ferme l'application
    xlApp.Quit
    
    I = I + 1
    
Wend
End Sub


teins
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
26 nov. 2008 à 13:52
tu as des caracteres qui ne vont pas dans le chemin

DateJ = Date
NomDossier = "D:\XXXX\TEST" &" " & Format(DateJ,"dd-mm-yyyy")

ensuite :

    If Cells(L, 7).Value <> "" Then
        NomDoc = Cells(L, 8).Value & " - " & Cells(I, 9).Value
    Else
        NomDoc = Cells(L, 4).Value & " - " & Cells(I, 5).Value
    End If

0
bon je viens faire des test en effet c'est là date qui ne lui plais pas !
mm avec DateJ = Format(DateJ, "dd-mm-yyyy")
j'ai les / qui géne jai essayer en enlevant là date sa fonctionne bien
le probleme c'est quil me faudrais une astuce pour avoir la date dans mon fichier

merci encore wil si tu à une diée je suis là
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 nov. 2008 à 14:21
Bonjour,

Au moment de la création d'un dossier, il faut s'assurer d'être au bon endroit.
J'entends par là, sur le bon lecteur.

Suggestion :

Sub Creer_Dossier()

    Dim NomDossier As String
    Dim Lecteur As String

    NomDossier = "C:\Document\TEST" & " " & Format(Date, "dd-mm-yyyy")
    MsgBox NomDossier
    Lecteur = Mid(NomDossier, 1, 2)
    ChDrive Lecteur
    MkDir NomDossier

End Sub
'


Ce code est testé sous Office 2003 et WXP.

Lupin
0
ok merci de l'astuce lupin je vais essayer sinon j'ai trouvé l'erreur pour mon post juste avant mon dateJ etait en format date un format string me permet d'avoir les "-"

merci je vosu redit ca
0