IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro pour enregistrement d'un classeur et numérotation en fonction de date et heure [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut Macro pour enregistrement d'un classeur et numérotation en fonction de date et heure
    Bonjour,
    Par une Macro, j'aimerais enregistrer dans un dans un dossier précis un classeur fichier Excel .
    La ligne suivante est en erreur : ActiveWorkbook.SaveAs Filename:=cheminComplet, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Avez-vous une solution ?
    Merci pour votre aide.
    Rpolpere

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Que contient ton : cheminComplet

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    ' Définir le chemin complet du fichier
    cheminComplet = cheminDossier & nomFichier

  4. #4
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Merci pour ta réponse Igloobel.
    Comment joindre Le code entier à mon message ?

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que l'on attend, c'est la chaîne de caractères que vous avez utilisée pour le chemin complet + nom du fichier, comme Filename:="C:\Users\phili\Documents\Test SaveAs.xlsm"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut complément
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Ce que l'on attend, c'est la chaîne de caractères que vous avez utilisée pour le chemin complet + nom du fichier, comme Filename:="C:\Users\phili\Documents\Test SaveAs.xlsm"
    ' Définir le dossier où enregistrer le fichier
    cheminDossier = " C:\Users\Roland Polonyi\Dropbox\TJAP\Centrale\Vérifications"

    nomFichier = "Journalier_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsx"

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si le chemin et le nom du fichier sont stockés dans deux variables n'auriez vous pas omis le séparateur \ en concaténant les deux variables et de plus si c'est un classeur avec macro (xlOpenXMLWorkbookMacroEnabled), le suffixe doit être xlsm et pas xlsx
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Si le chemin et le nom du fichier sont stockés dans deux variables n'auriez vous pas omis le séparateur \ en concaténant les deux variables et de plus si c'est un classeur avec macro (xlOpenXMLWorkbookMacroEnabled), le suffixe doit être xlsm et pas xlsx
    Bonjour,
    En fait, j'apporte 2 corrections, la première est : cheminComplet = cheminDossier & nomFichier et la seconde : cheminComplet = Replace(cheminComplet, ".xlsx", ".xlsm") bien que suffixe soit déjà déterminé plus haut = nomFichier = "Journalier_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsm"

    cheminComplet = cheminDossier & nomFichier

    cheminDossier = " C:\Users\Roland Polonyi\Dropbox\TJAP\Centrale\Vérifications"
    et
    nomFichier = "Journalier_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsm"


    Comment ajouter l'ensemble de la macro en fichier joint ?

    Et merci pour vos réponses

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En fait, j'apporte 2 corrections, la première est : cheminComplet = cheminDossier & nomFichier et la seconde : cheminComplet = Replace(cheminComplet, ".xlsx", ".xlsm"
    Comme je l'ai précisé dans ma réponse précédente, vous avez omis le séparateur \ en concaténant le chemin du dossier et le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cheminComplet = cheminDossier & "\" & nomFichier
    Pour insérer votre code

    Nom : dvp Editeur Balises Code.gif
Affichages : 73
Taille : 24,2 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Comme je l'ai précisé dans ma réponse précédente, vous avez omis le séparateur \ en concaténant le chemin du dossier et le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cheminComplet = cheminDossier & "\" & nomFichier
    Pour insérer votre code

    Nom : dvp Editeur Balises Code.gif
Affichages : 73
Taille : 24,2 Ko
    cheminComplet = cheminDossier & "" & nomFichier

  11. #11
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par rpolpere Voir le message
    cheminComplet = cheminDossier & "" & nomFichier
    Correction apportée :
    cheminComplet = cheminDossier & " \ " & nomFichier

    Mais problème non résolu

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Publiez votre code.
    Quel texte et quel numéro d'erreur renvoie le VBA ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #13
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Publiez votre code.
    Quel texte et quel numéro d'erreur renvoie le VBA ?
    Bonjour,
    Le numéro d'erreur était : 1004
    Etait, parce que mon problème est résolu, il s'agissait d'une mauvaise indication dans le chemin pour atteindre le dossier final.

    J'ignore comment publier l'ensemble de la macro, ce serait plus explicite, pourriez-vous me guider.

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Comme je l'ai précisé dans ma réponse précédente, vous avez omis le séparateur \ en concaténant le chemin du dossier et le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cheminComplet = cheminDossier & "\" & nomFichier
    Hello,

    Une solution moderne à ce problème récurant ne serait-il pas de passer par FSO ?
    Cette bibliothèque prend en charge l'absence ou présence des antislash.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Fso As Scripting.FileSystemObject
    Set Fso = CreateObject("Scripting.FileSystemObject")
     
    Debug.Print Fso.BuildPath("C:\monDossier", "monFichier.xlsx")   '// Affiche: C:\monDossier\monFichier.xlsx
    Debug.Print Fso.BuildPath("c:\mondossier\", "monFichier.xlsx")  '// Affiche: c:\mondossier\monFichier.xlsx

  15. #15
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Hello,

    Une solution moderne à ce problème récurant ne serait-il pas de passer par FSO ?
    Cette bibliothèque prend en charge l'absence ou présence des antislash.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Fso As Scripting.FileSystemObject
    Set Fso = CreateObject("Scripting.FileSystemObject")
     
    Debug.Print Fso.BuildPath("C:\monDossier", "monFichier.xlsx")   '// Affiche: C:\monDossier\monFichier.xlsx
    Debug.Print Fso.BuildPath("c:\mondossier\", "monFichier.xlsx")  '// Affiche: c:\mondossier\monFichier.xlsx
    Bonjour,
    Mon problème est donc réglé mais je suis toujours incapable de vous communiquer l'ensemble de code.

    Nouveau chalenge pour moi : Créer un raccourci sur le bureau pour ouvrir le dernier fichier d’un dossier déterminé

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Pour poster un code source, utilises la balise Code (le bouton # dans l'éditeur).

    Tu copies / colles ton code,
    Tu le sélectionne,
    Tu click sur le bouton.

    Il y a également un bouton pour envoyer des pièces jointes (celui qui ressemble à un trombone),
    pour peut que ton fichier ne contienne pas de données sensibles.

  17. #17
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Pour poster un code source, utilises la balise Code (le bouton # dans l'éditeur).

    Tu copies / colles ton code,
    Tu le sélectionne,
    Tu click sur le bouton.

    Il y a également un bouton pour envoyer des pièces jointes (celui qui ressemble à un trombone),
    pour peut que ton fichier ne contienne pas de données sensibles.
    Journalier_20250227_094205.xlsm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    Private Sub ENREGISTRER_Click()
     
     
        Dim cheminDossier As String
        Dim nomFichier As String
        Dim cheminComplet As String
     
            ' Définir le dossier où enregistrer le fichier
        cheminDossier = "C:\Users\Roland Polonyi\Dropbox\TJAP\Centrale\Vérifications\"
     
            ' Vérifier si le dossier se termine par "\"
        If Right(cheminDossier, 1) <> "\" Then
            cheminDossier = cheminDossier & "\"
        End If
     
     
            ' Générer le nom du fichier basé sur la date et l'heure
        nomFichier = "Journalier_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsm"
     
            ' Vérifier si un classeur est actif
        If ActiveWorkbook Is Nothing Then
            MsgBox "Aucun classeur actif à enregistrer.", vbExclamation, "Erreur"
            Exit Sub
     
        End If
     
     
            ' Définir le chemin complet du fichier
        cheminComplet = cheminDossier & nomFichier
     
     
        ' Vérifier si le classeur contient des macros et ajuster l'extension
            Dim formatFichier As Long
            If ActiveWorkbook.HasVBProject Then
             formatFichier = xlOpenXMLWorkbookMacroEnabled ' Format XLSM (52)
        Else
            formatFichier = xlOpenXMLWorkbook ' Format XLSX (51)
            cheminComplet = Replace(cheminComplet, ".xlsm", ".xlsx") ' Ajuster le nom
        End If
     
        ' Enregistrer avec gestion d'erreur
             On Error Resume Next
             ActiveWorkbook.SaveAs Filename:=cheminComplet, FileFormat:=formatFichier
             If Err.Number <> 0 Then
     
            MsgBox "Erreur lors de l'enregistrement : " & Err.Description, vbCritical, "Erreur"
            Exit Sub
     
        End If
        On Error GoTo 0 ' Réactiver les erreurs normales
     
     
        ' Message de confirmation
        MsgBox "Fichier enregistré avec succès : " & nomFichier, vbInformation, "Succès"
     
    End Sub
    Merci pour ta réponse

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Comme je l'ai indiqué plus tôt, passe par FSO pour construire tes chemins, ca t'éviteras les tests de vérification de la présence de l'antislash final.
    Le type du format de fichier n'est pas Long, mais Excel.XlFileFormat.
    Tu peux omettre l'extension du fichier, la fonction SaveAs le prendra en charge pour peut que le format lui soit fourni.
    Revoit ton gestionnaire d'erreur, on fait du VBA, pas du VBScript.

    PS:
    Quelques liens:
    Principe de Responsabilité Unique: https://en.wikipedia.org/wiki/Single...lity_principle
    Loi de Demeter: https://en.wikipedia.org/wiki/Law_of_Demeter
    Respecter ces 2 principe améliorera la qualité de tes futur développements.

  19. #19
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Février 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2023
    Messages : 13
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Comme je l'ai indiqué plus tôt, passe par FSO pour construire tes chemins, ca t'éviteras les tests de vérification de la présence de l'antislash final.
    Le type du format de fichier n'est pas Long, mais Excel.XlFileFormat.
    Tu peux omettre l'extension du fichier, la fonction SaveAs le prendra en charge pour peut que le format lui soit fourni.
    Revoit ton gestionnaire d'erreur, on fait du VBA, pas du VBScript.

    PS:
    Quelques liens:
    Principe de Responsabilité Unique: https://en.wikipedia.org/wiki/Single...lity_principle
    Loi de Demeter: https://en.wikipedia.org/wiki/Law_of_Demeter
    Respecter ces 2 principe améliorera la qualité de tes futur développements.
    Merci pour ta réponse mais tout est résolu ( Publication précédente)

    Mais Nouveau chalenge pour moi : Créer un raccourci sur le bureau pour ouvrir le dernier fichier d’un dossier déterminé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Tableur] Macro pour enregistrer le classeur actif
    Par Fanolito dans le forum OpenOffice & LibreOffice
    Réponses: 10
    Dernier message: 20/09/2019, 15h46
  2. Crée macro pour enregistrer en fichier .csv
    Par jonki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2008, 14h24
  3. Réponses: 12
    Dernier message: 31/07/2007, 15h21
  4. [VB] macro pour enregistrer sous
    Par CélineM dans le forum SDK
    Réponses: 1
    Dernier message: 07/06/2007, 12h28
  5. macro pour enregistrer sous
    Par macromega dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/05/2007, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo