Conflit workbook et macro

Résolu
Bonjour,

Je rencontre un problème avec une macro.

Je m'explique :
J'ai une macro qui me permet d'exporter mon fichier en pdf.
J'ai également un règle dans le workbook (before_save) pour empècher l'utilisateur d'enregistrer le fichier.

Le problème est que c'est deux macro rentre en conflit, et j'ai cherché à réglé le problème de différente solution, mais j'ai toujours un message d'erreur.

"Erreur d'éxécution '5':

Argument ou appel de procedure incorrect"

Et excel me dit que l'erreur vient de ce bout de code :

.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Si quelqu'un peut m'aider je lui serais très reconnaissant!

10 réponses

  1. J'ai finalement trouvé le problem!!!!

    La macro ne fonctionnait pas, parce que la feuille que je souhaitais imprimer était masquée.

    Merci!
    1. Merci pour cette réponse.

      Cependant j'ai créé ce fichier pour qu'il soit utilisé par différents utilisateurs sur des ordinateurs également différents.

      Si l'utilisation de cette macro demande des conditions spécifiques d'utilisation,
      cela peut engendrer des problèmes.
      1. Modérateur
        Bon.
        La macro fonctionne très bien chez moi.

        J'en reviens donc à mon message 7 à savoir une erreur, un manque dans l'installation d'excel (cf ICI).

        Bon, il existe, heureusement, d'autres manières d'enregistrer en pdf une feuille excel. Tu pourras en trouver pas mal, ici sur ce site ou sur Internet en général.
        Comme cela dépends de ton logiciel de pdf, je te laisse le soin de chercher.
        1. Bonjour,

          Veuillez trouver ci-dessous le lien du fichier.

          http://www.cjoint.com/c/FBzkLBaEfpT
          1. Modérateur
            Bonjour,
            Je regarde ça
        2. Je suis sous la version Excel 2010 .
          1. Modérateur
            Pour continuer, il faudrait voir le fichier incriminé.
            Au besoin supprime les données confidentielles.
            Pour nous le faire passer ici, il faut le charger sur cjoint.com et revenir ici nous donner le lien ainsi créé
          2. Je vous envoie ça.
        3. Modérateur
          Le souci ne vient pas de BeforeSave.
          Qu'elle version d'Excel?
          Si 2007, voir ceci : http://www.microsoft.com/fr-fr/download/details.aspx?id=7

          1. Oui je te l'ai mis plus haut.

            workbook

            Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

            Dim sPass As String

            If Autorise_A_Sauver = True Then

            Exit Sub

            Else

            sPass = InputBox("Veuillez saisir le mot de passe")

            If sPass = "mdp" Then

            Cancel = False

            Else

            MsgBox "Vous ne pouvez enregistrer le fichier, utilisez le bouton de validation du bon de commande": Cancel = True

            End If

            End If

            End Sub
            1. Bonjour Pijaku,

              Merci pour ces premiers éléments de réponse, mais j'ai toujours la même erreur.

              "Erreur d'éxécution '5':
              Argument ou appel de procedure incorrect"

              Module standard

              Option Explicit

              Public Autorise_A_Sauver As Boolean

              Sub Export_PDF()

              Autorise_A_Sauver = True

              Dim fichier As String
              Dim Adresse As String
              Dim Chemin As String

              With Worksheets("Format impression")
              fichier = "Bon de commande" & ".pdf"

              Chemin = ThisWorkbook.Path & "\" & fichier
              Adresse = Feuil2.Range("S5")

              .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
              IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
              End With

              MsgBox "Un Pdf a été généré pour votre commande, vous devez l'envoyer à l'adresse : " & Adresse

              Autorise_A_Sauver = False

              End Sub



              Workbook

              Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

              Dim sPass As String

              If Autorise_A_Sauver = True Then

              Exit Sub

              Else

              sPass = InputBox("Veuillez saisir le mot de passe")

              If sPass = "mdp" Then

              Cancel = False

              Else

              MsgBox "Vous ne pouvez enregistrer le fichier, utilisez le bouton de validation du bon de commande": Cancel = True

              End If

              End If

              End Sub
              1. Modérateur
                as tu modifié le code du BeforeSave?
              2. Oui je te l'envoi.
            2. Modérateur
              Bonjour,

              1- déclarer une vraiable de type booléenne en public dans un module standard
              2- les codes :

              Dans le module ThisWorkbook :
              Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
              If Autorise_A_Sauver = True Then Exit Sub
              Cancel = True: MsgBox "sauvegarde impossible"
              End Sub


              Dans le module standard :
              Option Explicit
              
              Public Autorise_A_Sauver As Boolean
              
              Sub enregistre()
              Autorise_A_Sauver = True
              ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                      "blabla\Classeur1.pdf"
              Autorise_A_Sauver = False
              End Sub

              Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
              1. .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _ 
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False