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 :

Problème code VBA sur Excel


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Problème code VBA sur Excel
    Bonjour,

    Je ne comprends pas car mon code ne fonctionne plus. Il a fonctionné au début mais d'un coup il ne veut plus...

    Est-ce que quelqu'un peut m'aider à comprendre ?

    Merci


  2. #2
    Membre expérimenté
    Voici votre code corrigé (Voir fichier en annexe):

    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
    Sub EnregistreFacture()
     
        'Déclaration des variables
        Dim NomDossier As String
        Dim CheminDossier As String
     
     
        'Nom de dossier
        'Utilisez plutôt "Nom du fichier" car "dossier" fait allusion à un répertoire (ou chemin)
        NomDossier = Application.InputBox("Nom du fichier :", "Fichier")
        CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients\2019" & NomDossier & "\"
     
        'Enregistrement au format PDF
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        CheminDossier & "Facture_" & Range("H4").Value & " - " & Range("C12").Value & ".pdf", quality:= _
        xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
        from:=1, to:=1, openafterpublish:=True
     
        'On réinitialise et on incrémente le numéro de la facture
        With Sheets("Facture 2019") 'Le nom de votre feuille était "Facture", alors qu'elle s'appelle "Facture 2019"
            .Range("C12:C15").ClearContents 'Si les cellules sont fusionnées, cette opération ne fonctionnera pas.
            .Range("B19:F41").ClearContents
            .Range("H4").Value = .Range("H4").Value + 1
        End With
     
    End Sub

  3. #3
    Rédacteur

    Bonjour,
    Si je puis me permettre, il faut éviter de "hardcoder" des chemins, nom de ficher à sauver, etc. comme par exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients\2019" & NomDossier & "\"

    En privilégiant, une feuille contenant les paramètres (ou éventuellement fichier INI), on rend pérenne l'application.
    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  4. #4
    Responsable
    Office & Excel

    Salut

    100% d'accord avec Philippe

    On nomme les plages, et on utilise les plages nommées dans le code.




    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Futur Membre du Club
    Bonsoir,

    Désolé de vous répondre à cette heure. Merci à vous d'avoir répondu. Mais je suis vraiment débutant et vous m'avez déjà perdu


    Mais j'ai toujours la même erreur :





    Est-ce que je fais mal quelque chose ?

    Quand je clique sur le bouton, le pop up s'ouvre, je lui met "decembre", le dossier de destination du pdf. Et du coup, j'ai l'erreur...

  6. #6
    Futur Membre du Club
    J'ai trouvé, c'est à priori parcque j'ai rajouté "2019" à la fin de :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients\2019" & NomDossier & "\"



    Mais je ne comprends pas pourquoi, si quelqu'un peut m'expliquer ?

  7. #7
    Membre régulier
    Bonjour,

    est-ce que le répertoire 2019NomDossier existe ?
    je ne crois pas,

  8. #8
    Responsable
    Office & Excel

    Citation Envoyé par cyrpio Voir le message
    Mais je ne comprends pas pourquoi, si quelqu'un peut m'expliquer ?
    "Je ne comprends pas pourquoi"... C'est toi qui a mis 2019 à la fin du chemin, puisque ce chemin est en dur dans ton code. Dès lors, nous saurions difficilement t'expliquer pourquoi tu as mis 2019 à la fin du chemin? Ta variable doit contenir le chemin exact du dossier dans lequel tu vas déposer ton fichier. C'est à toi de vérifier que ce que tu passes à ta variable est correct.

    Une bonne façon de s'assurer de cela est d'ouvrir ton explorateur, d'aller sur le dossier concerné, et de copier l'adresse affichée dans la barre d'adresse. Tu la colles dans ton code sur la ligne de la valorisation de la variable, entre guillemets
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Futur Membre du Club
    Bonjour,

    J'avais bien créé le dossier 2019, j'avais fait un copier /coller du chemin dans le code, c'est pour ça que je ne comprends pas.

    J'ai modifié le code en finissant par

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients 2019\" & NomDossier & "\"


    Et là, tout fonctionne.

    Donc c'est résolu mais sans comprendre.

    Tant pis, merci à tous pour m'avoir aider.

  10. #10
    Membre régulier
    Bonjour,

    le code (Factures clients et rattaché avec 2019)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients 2019\" & NomDossier & "\"




    n'est pas identique à celui-ci
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    CheminDossier = "C:\Users\Cyril\Documents\Audrey\Forever\Factures\Factures clients\2019" & NomDossier & "\"

    et ici 2019 est rattaché avec NomDossier

###raw>template_hook.ano_emploi###