[RESOLU]Aide sur une macro

hypo78

XLDnaute Impliqué
Bonjour à tous,
sur un autre fil (ICI) avec l'aide précieuse de Efgé, je pense avoir une macro pas très loin de ce que je recherche, mais à chaque fois elle s'arrête sur la ligne Activeworkbook SaveAs... et quand je ferme le volet VBA qui met fin au débogage, la macro m'a bien créé mon classeur comme souhaité.
J'ai tenté de mettre le chemin du dossier plutôt que ActiveWorkbook.path et là c'est le EndWith puis EndIf qui pose problème.
Je compte sur vous pour me dire ce qui cloche.
Merci d'avance
Code:
Sub Creation_classeur_nommé()

DateDeSaisie = InputBox("Saisir la date de la garde que vous voulez préparer sous la forme jj/mm/aaaa")
If DateDeSaisie = "" Then Exit Sub
    On Error Resume Next
    
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
Const modele As String = _
"C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
Workbooks.Open modele

With ActiveWorkbook
    .Sheets("01").Range("AK1") = Format(DateDeSaisie, "mm/dd/yyyy")
        rep = MsgBox("Le classeur " & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls" & " existe déja" _
            & vbLf & "Voulez vous le remplacer ?", _
            vbYesNo + vbExclamation + vbDefaultButton1, "Avertissement")
        If rep = vbNo Then
            .Close False
            Exit Sub
        Else
            ActiveWorbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls"
End If
End With


On Error GoTo 0
Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Aide sur une macro

Bonjour hypo78, Bonjour Hasco,
Dans le code que montre il y a un problème lié à l'utilisation de "ActiveWorkBook" dans un "With ActiveWorkBook"
Avec ça il n'y a pas de problème:
VB:
Sub Creation_classeur_nommé_3()
Application.ScreenUpdating = False: Application.DisplayAlerts = False
DateDeSaisie = InputBox("Saisir la date de la garde que vous voulez préparer sous la forme jj/mm/aaaa")
    On Error Resume Next
Const modele As String = _
"C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
Liste = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
Workbooks.Open modele
With ActiveWorkbook
    .Sheets("01").Range("AK1") = DateDeSaisie
    sDossier1 = .Path & "\" & Year(DateDeSaisie)
    If Dir(sDossier1, vbDirectory) = "" Then MkDir sDossier1
    sDossier2 = sDossier1 & "\" & Liste(Month(DateDeSaisie)) & Year(DateDeSaisie)
    If Dir(sDossier2, vbDirectory) = "" Then MkDir sDossier2
    If Dir(sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls") = "" Then
        .SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
        Else
            rep = MsgBox("Le classeur " & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls" & " existe déja" _
                & vbLf & "Voulez vous le remplacer ?", _
                vbYesNo + vbExclamation + vbDefaultButton1, "Avertissement")
            If rep = vbNo Then
                .Close False
                Exit Sub
            Else
                .SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
            End If
    End If
    .Close True
End With
Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub
Cordialement
 

hypo78

XLDnaute Impliqué
Re : Aide sur une macro

Re,
toujours Erreur d'éxécution '438'. Propriété non gérée par cet objet. Le débogage me surligne la ligne :
Code:
.SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
Et quand je sors du débogage mon classeur est créé.... et quand je place mon curseur sur sDossier2 il me donne bien un chemin qui existe à savoir "C:users\thierry\desktop\versaillesbis\2011\mars2011
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Aide sur une macro

Re
Désolé j'ai totalement raté le fait que tu es sous 2007:
Prend un classeur vierge. Inscrit une date en A1. Lance l'enregistreur de macro et met un format de date personalisé. Regarde le format enregistré par Excel et applique le dans la macro Creation_classeur_nommé_3()
Cordialement
 

hypo78

XLDnaute Impliqué
Re : Aide sur une macro

Re,
pour avoir une date en A1 sous la forme jj/mm/aaaa çà donne le code:
Code:
Sub Macro2()

    Range("A1").Select
    Selection.NumberFormat = "m/d/yyyy"
End Sub

Pour la forme 01septembre2011 :
Code:
Selection.NumberFormat = "ddddmmmmyyyy"

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611