Erreur '1004' - Macro enregistrement

  • Initiateur de la discussion Initiateur de la discussion Kahyasse
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kahyasse

XLDnaute Nouveau
Bonjour à tous et à toutes,

Grace à tous les forums du site j'ai toujours pu me débrouiller mais là je coince.
J’essaie de réaliser un macro qui me permettra à l’aide d’un bouton d’effectuer une copie de mon fichier actuel. Jusque là aucun problème, mon macro me permettait très bien d’enregistrer ma copie dans le même dossier que mon fichier d’origine.

Maintenant je souhaiterais enregistrer mes copies dans un dossier ‘enregistrement’ présent dans le dossier où se trouve le fichier d’origine. Et pour corset la chose (à mon niveau) je voudrais que le dossier ‘enregistrement’ contienne des sous-dossiers ‘années’ (2011, 2012, etc.). En gros si on a le dossier Y qui contient mon fichier originale je voudrais : Y\Enregistrement\2011\Copie.xls.

De plus je veux que le macro créer tout-seul le dossier ‘enregistrement’ et les sous-dossiers ‘année’.

Pour cela j’ai essayé de me débrouiller et je pense que je ne suis pas loin du compte mais un problème persiste à la ligne surligné, l’erreur ‘1004’.

Public Sub CommandButton1_Click() 'Enregistrement
Dim Dossier, SousDossier
Dossier = ActiveWorkbook.Path & Enregistrement
SousDossier = Dossier & Year(Date)
Call RépertoireExiste("Dossier")
Call RépertoireExiste("SousDossier")
Dim Nom As String
Nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs SousDossier & "\" & Nom
rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & Nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub

Function RépertoireExiste(Chemin As String) As Boolean
On Error Resume Next
RépertoireExiste = GetAttr(Chemin) And vbDirectory
If RépertoireExiste = True Then
Exit Function
Else
MkDir (Chemin)
End If
End Function


Si vous pourriez m’éclairer sur mes erreurs je vous en remercie d’avance.
Kahyasse
 
Re : Erreur '1004' - Macro enregistrement

Bonjour,

si tu passes une variable en argument, il ne faut pas mettre les guillemets :

Code:
Call RépertoireExiste (Dossier)

bon après midi
@+

Bonjour 🙂

J'allais le dire en effet. Idem pour :

Code:
Call RépertoireExiste(SousDossier)


---------------------
Donc ça donne :

Code:
Sub test()
Dim Dossier As String, SousDossier As String
 Dossier = ActiveWorkbook.Path & "\Enregistrement"
 SousDossier = Dossier & "\" & Year(Date)
 Call RépertoireExiste(Dossier)
 Call RépertoireExiste(SousDossier)
 Dim Nom As String
 Nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs SousDossier & "\" & Nom
 rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & Nom, vbYes + vbInformation, "Copie sauvegarde classeur")
 
End Sub


Function RépertoireExiste(Chemin As String) As Boolean
 On Error Resume Next
 RépertoireExiste = GetAttr(Chemin) And vbDirectory
 If RépertoireExiste = True Then
 Exit Function
 Else
 MkDir (Chemin)
 End If
 End Function
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
1 K
Réponses
9
Affichages
590
Réponses
2
Affichages
456
Réponses
16
Affichages
2 K
Retour