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 :

ExportAsFixedFormat PdF Erreur 1004


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut ExportAsFixedFormat PdF Erreur 1004
    Bonjour,

    Je suis nouvellement inscrit sur ce forum. J'ai toutefois pu trouver de nombreuses réponses à mes questions dans les différents sujets déjà ouverts.

    Je rencontre un problème avec la fonction ExportAsFixedFormat.

    Via une première macro, je crée une quittance de Loyer en passant par la création d'une nouvelle feuille excel, renommée "Quitt Temp". A la fin de cette macro, je cherche à exécuter une exportation au format pdf de la quittance créée (afin de pouvoir l'envoyer automatiquement par mail) en utilisant le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
             With ThisWorkbook
     
            Worksheets("Quitt Temp").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "Test", Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            From:=1, To:=1, OpenAfterPublish:=False
     
            End With
    Lorsque ce code est exécuté à la suite de ma première macro, il renvoi l'erreur 1004 "Erreur définie par l'application ou par l'objet".

    Une fois l'erreur indiquée, je sauvegarde mon classeur, je quitte excel. Ensuite, Je ré-ouvre mon classeur, j’exécute la seconde macro seule (celle indiquée ci dessus) qui maintenant fonctionne...

    J'ai essayé de faire une sauvegarde du classeur (ActiveWorkbook.Save) entre les deux macros, sans que cela ne change le problème.

    N'étant pas un spécialiste du vba, je m'en remets donc à votre savoir.

    Merci d'avance

    Alexis

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    Bonjour,

    bienvenue sur DVP

    Si tu utilises le mot cle With, il faut l'utiliser dans la suite du code (il manque ici un point avant worksheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ThisWorkbook
    .Worksheets("Quitt Temp").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "Test", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    From:=1, To:=1, OpenAfterPublish:=False
    End With
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Bonjour,

    Merci pour votre réponse rapide!!!

    J'ai donc modifié le code en y ajoutant le point manquant... A nouveau, l’exécution de cette seule macro fonctionne. (En créant manuellement une feuille nommée "Quitt Temp")

    Malheureusement, en passant par une création de cette feuille via une autre macro, même sanction (code erreur 1004) mais le motif de l'erreur change : dimension spécifiée non valide pour le type de graphique en cours.

    A noter qu'à nouveau, après une sauvegarde du classeur tel quel (et donc avec cette feuille créée via la macro) et après avoir complétement quitté l'application Excel, à la ré-ouverture de mon classeur, l’exécution de la macro ne renvoie pas de code d'erreur et crée bien le pdf souhaité...

    Dois je changer quelque chose dans la première macro pour rendre "visible" cette feuille créée pour la seconde macro?

    Pour info, ci dessous la macro utilisée pour création de la feuille à exporter en .pdf :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Private Sub RechercheDate_Change()          'J'ai essayé de supprimer "Private" sans effet sur le pb en question
     
    If RechercheDate = "" Then
        MsgBox "Il faut ajouter le paiement avant d'éditer la quittance !!!", vbInformation, "Mauvaise Manip"
        Unload Me
        Exit Sub
    End If
     
    Worksheets("Modele Quittance").Visible = True
    RechercheDate = RechercheDate.Value
    NomLoc = EditionQuittances.RechercheLocataire.Value
    Quitt = "Quitt Temp"
     Worksheets("Modele Quittance").Copy After:=Sheets(NomLoc)
     
     With ActiveSheet
                .Name = "Quitt Temp" 'on renomme
                'on remplit notre modèle comme on ut...
     
                .Range("C1") = EditionQuittances.NomProprio & " " & EditionQuittances.AdresseProprio & " " & EditionQuittances.CPProprio & " " & EditionQuittances.CmneProprio
     
     
                .Range("A7") = EditionQuittances.NomProprio
                .Range("A8") = EditionQuittances.AdresseProprio
                .Range("A9") = EditionQuittances.CPProprio & " " & EditionQuittances.CmneProprio
     
     
     
                If NomCoLocataire.Value = "" Then
                .Range("G9") = EditionQuittances.RechercheLocataire.Value
                .Range("G10") = EditionQuittances.AdresseLocataire
                .Range("G11") = EditionQuittances.CPLocataire & " " & EditionQuittances.CmneLocataire
     
                    Else
     
                 .Range("G9") = EditionQuittances.RechercheLocataire.Value
                .Range("G10") = EditionQuittances.NomCoLocataire & " " & EditionQuittances.PrenomCoLocataire
                .Range("G11") = EditionQuittances.AdresseLocataire
                .Range("G12") = EditionQuittances.CPLocataire & " " & EditionQuittances.CmneLocataire
     
                End If
     
     
                .Range("A12") = "Bien:" & " " & EditionQuittances.Bien & " de type" & " " & EditionQuittances.TypeBien
                .Range("A13") = EditionQuittances.AdresseLocation
                .Range("A14") = EditionQuittances.CPLocation & " " & EditionQuittances.CmneLocation
                .Range("A19") = EditionQuittances.Bien & " " & EditionQuittances.TypeBien
                .Range("B22") = EditionQuittances.Etage
                .Range("E22") = EditionQuittances.Porte
                .Range("J27") = CDbl(EditionQuittances.APLLocataire)
                .Range("E11") = CDate(RechercheDate)
                .Range("I19") = CDbl(EditionQuittances.LoyerLocataire)
                .Range("I21") = CDbl(EditionQuittances.ChargesLocataire)
                .Range("I36") = CDbl(EditionQuittances.LoyerLocataire)
                .Range("I38") = CDbl(EditionQuittances.ChargesLocataire)
                .Range("A49") = EditionQuittances.RechercheLocataire.Value
                .Range("J43") = CDbl(EditionQuittances.APLLocataire)
                End With
     
                If Sheets(NomLoc).Range("M8").Value > 1 Then
                ActiveSheet.Range("I23") = CDbl(EditionQuittances.Retard)
                ActiveSheet.Range("I40") = CDbl(EditionQuittances.Retard)
     
                Else: ActiveSheet.Range("J25") = -CDbl(EditionQuittances.Retard)
                End If
     
                Application.Dialogs(xlDialogPrint).Show
     
     
     
                     If MsgBox("Souhaitez vous adresser cette quittance par mail ?", vbYesNo, "Demande de confirmation") = vbYes Then
            Call Exportpdf
     
            MsgBox "Quittance Envoyée!"
        End If
     
    Unload Me
     
    Worksheets("Modele Quittance").Visible = False
    Worksheets(Quitt).Delete
    Worksheets("Accueil").Activate
    End Sub

    Merci d'avance,

    Alexis

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    ‼ (cf règles du forum)

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir ici

    P.-S. : Balise ton code

  6. #6
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Bonjour Kiki29,

    Merci pour ta réponse. (J'ai modifié mon précédent message en y ajoutant les balises ;-) )

    C'est effectivement le code de Ron de Bruin que j'utilise afin d'adresser par mail une feuille excel exportée au format pdf.

    Ce code fonctionne très bien lorsque la feuille est créée soit manuellement, soit après un reboot complet de l'application excel, mais je n'arrive malheureusement pas à l'utiliser à la suite du code précédemment joint (et maintenant balisé :-D )

    Il semblerait d'ailleurs que le problème vienne de l'export au format pdf et non de l'envoi par mail (le code renvoi une erreur à cette étape la)

    Une idée de la raison?

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Je suis sur Mac aussi (je sais on est pas bcp ), je veux bien tester pour voir ou se trouve le problème ,
    mais ayant peu de temps en ce moment, ce qui m'arrangerai serait d'être en condition réel,
    et donc d'avoir le fichier (contenant le code actuel) avec de fausse données bien sur (au moins pour 1 ou 2 exemples);
    les explications de son fonctionnement serait un plus aussi.

    Voilà

    Pour info : pour envoyer un fichier il faut utiliser le bouton avec "le trombone et la mini feuille",
    qui se trouve juste à droite du bouton "smileys"
    Voilà

  8. #8
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Salut,

    Mon fichier est trop volumineux pour être joint via le forum... :-/ (3.9 Mo)

    Je peux mettre un lien google drive pour le partager, soit par MP, soit sur cette discussion si cela est autorisé...

    Merci

  9. #9
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Il me semble que le lien est autorisé. Faut regarder dans les règles du forum; ou un modérateur pourra le confirmer …
    Mais le but est de laisser le strict nécessaire dans le fichier, c'est à dire 1 ou 2 exemples avec fausses données pour faire marcher la macro, le reste étant supprimé,
    ça devrait alléger le fichier; voir en plus le zipper ce qui va réduire encore plus la taille

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    Salut,

    tu peux potentiellement nettoyer ton fichier pour le rendre plus petit, sinon on tolere les liens, mais la perte tot ou tard du fichier ne permettra pas aux autres membres de prendre connaissance de ton cas.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Ci dessous le lien avec le fichier en question

    http://www.cjoint.com/c/FJCoYHZeGH8


    Merci

  12. #12
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    ok je vais pas regarder ça de suite je dois y aller
    j'aurais juste besoin du détails afin de faire les mêmes manip afin de voir se qui'il se passe

  13. #13
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Re,

    Ci dessous quelques détails sur le problème rencontré et la manip à réaliser pour le rencontrer.

    Ce fichier provient, à l'origine, d'un site internet. Je l'ai modifié "à ma sauce" pour qu'il puisse convenir à mon usage.

    Étant un néophyte en vba, il comporte certainement des erreurs, et l'organisation des macros est loin d'être conventionnelle... Une bonne optimisation s'impose mais je souhaiterai d'abord terminer le "développement" de mon fichier... ;-)

    A l'ouverture du fichier, il indique un pb de liaison, je lui indique de les ignorer.

    Dans ce fichier arrangé pour l'occasion, je rencontre le problème évoqué en cliquant sur le bouton quittance de l'onglet "Accueil".

    Pour éditer une quittance, il suffit alors de sélectionner le locataire souhaité, et le mois concerné. La macro utilisée pour générer cette quittance se nomme RechercheDate_change et est appliquée à la combox RechercheDate de l'userfom EditionQuittances.

    Cette macro génère la quittance, me propose de l'imprimer (pour le moment, je me sers de cette écran d'impression pour exporter cette feuille au format pdf et l'envoyer manuellement par e-mail via l'appli mail) puis appelle la macro Exportpdf située dans le module1. (à terme, j'utiliserai la macro située au dessus de celle ci dans le module1, soit exportpdfenvoimail)

    Comme déjà indiqué sur le forum, ces deux macros fonctionnent si je souhaite envoyer une feuille déjà créée à l'ouverture du classeur. Par contre, elles me renvoient l'erreur 1004 quant il s'agit d'envoyer une feuille nouvellement créée par la marco RechercheDate_Change.

    Par contre, une fois la quittance temporaire créée, le code erreur retourné, je réinitalise la macro, je sauvegarde le fichier (Lors de la sauvegarde, excel lance une macro permettant de transférer des données de feuilles en feuilles), je quitte complétement l'application Excel, je ré ouvre le classeur et lance la macro exportpdf (ou exportpdfenvoimail) seule et la ça fonctionne...

    J'ai cherché par mal sur le net histoire de trouver une réponse mais manquant peut etre de vocabulaire technique, mes recherches n'aboutissent pas...

    Je te remercie par anticipation pour le temps que tu voudras bien accorder à mon problème

    J'ai déjà passé pas mal de temps à fouiner sur le net pour aboutir à un classeur plus ou moins complet pour mon usage, il manque encore deux ou trois petits trucs et celui ci en fait parti...

    Alexis

  14. #14
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    J'ai fait plusieurs captures d'écran et à fin de donner des indications au forum, mais aussi pour les explications des erreurs; je n'ai pas eu le temps de tout voir.
    Il est vrai que ce fichier est assez complexe vu le nombre de d'éléments à droite à gauche de ce fait plus difficile de s'y retrouvé. Surtout qu'à première vu bcp de nommage sont assez proche
    Pour ma part, je referai ce fichier en partant de zéro, en me basant sur le fichier utilisé pour avoir qq chose de plus propre et aussi (peut-être) revoir la structuration des données. Mais je suppose qu'il y'a un travail déjà conséquent.

    Dans la 1ère capture nous avons les onglets à l'ouverture du fichier (concernant la liaison demandé à l'ouverture je l'ai supprimé car apparemment elle ne sert à rien)
    Faut noter ici l'existence de la feuille "Quitt temp" supposé d'après ce que je comprends, être temporaire (que fait elle là)
    Nom : 1.png
Affichages : 1904
Taille : 25,4 Ko

    1ère manipulation avec le bouton quittance. D'ailleurs il m'a semblé avoir vu un code pour la transformation des chiffres en lettres, dans ce cas, @patricktoulon a posté un code très pratique à ce sujet (mieux que celui que j'ai vu).
    Nom : 2.png
Affichages : 1969
Taille : 28,5 Ko

    Pour les 3 captures :
    Ici l'erreur 1004 est évidente, on dupique la feuille "Modele Quittance" et on veut lui donné le nom de "Quitt Temp" qui elle existe déjà (pas possible d’avoir 2 fois le même nom de feuille); on se retrouve avec une nouvelle feuille "Modele Quittance 2" qui ne sert à rien.
    Il faut revoir la gestion de la feuille "Quitt Temp". On ne doit pas la retrouver à l'ouverture du fichier => à supprimer une fois le processus accompli.
    Nom : 3.png
Affichages : 1946
Taille : 31,7 Ko
    Nom : 4.png
Affichages : 1923
Taille : 24,5 Ko
    Nom : 5.jpeg
Affichages : 1896
Taille : 50,1 Ko

    On recommence la procédure (on a viré la feuille "Quitt Temp", on a plus l'erreur 1004), on voit que la date n'apparait pas correctement (je suppose que cela à une conséquence par la suite)
    Voir : Post problème de date
    on voit que la date apparait comme ceci : 01/02/
    Nom : 6.png
Affichages : 1931
Taille : 13,2 Ko

    Les 3 autres captures représentent la nouvelle erreur (je suppose que c'est dû à la date dans le useform)
    Nom : 7.png
Affichages : 1946
Taille : 23,7 Ko

    Nom : 8.png
Affichages : 1911
Taille : 17,1 Ko

    Nom : 9.png
Affichages : 2014
Taille : 127,9 Ko

    voilà je n'ai pas eu le temps d'aller plus loin; de plus je n'ai pas encore vu les useforms, donc je vais y travailler pour en voir le fonctionnement
    PS : j'ai vu pas mal de Select dont on pourrait se passer

  15. #15
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Bonjour,

    Merci pour ta réponse,

    Dans la macro nommée RechercheDate_Change(), si celle ci ne s'arrête pas en cours d’exécution à cause de l'erreur 1004, la quittance temporaire (Quitt Temp) est supprimée et le feuille "modele quittance" est cachée. J'avais volontairement laissé ces feuilles visibles pour qu'elles puissent être plus facilement identifiées. Aussi, à l’ouverture "normale" du fichier, la feuille "quitt temp" n'existe pas.

    Tu dis : "On recommence la procédure (on a viré la feuille "Quitt Temp", on a plus l'erreur 1004), on voit que la date n'apparait pas correctement (je suppose que cela à une conséquence par la suite)".

    De mon côté, à l’exécution de la macro RechercheDate_Change() via le bouton Quittance, la macro semble se dérouler correctement. La quittance temporaire est créée (ici), la macro me propose bien l'impression de cette quittance, puis me renvoi le code erreur 1004 ( et ), au moment d'exporter au format pdf.

    Du coup, elle n’exécute pas la suite, et notamment la suppression de la feuille temporaire. (actuellement j'utilise ce classeur sans l'export ni l'envoi et tout cela semble fonctionner correctement)

    As tu essayé d’exécuter la macro Exportpdf() seule, en conservant la quittance temporaire créée par la macro précédente, mais en ayant sauvegardé puis quitté Excel au préalable? Est ce qu'elle fonctionne aussi de ton côté?

    Je ne parviens pas à ouvrir tes captures d'écran qui illustre les erreurs de dates dont tu parles

    Est il possible que l'export au format pdf ne fonctionne pas à cause de cela?

    Alexis

    Merci pour la modification de ton message précédent.

    De mon côté, le liste déroulante présente des dates complètes. (ici)

    Les dates dans la colonne B de la feuille du locataire sont également au bon format (complet) en ajoutant le règlement via le bouton ajouter paiement par exemple.

    Est ce le cas chez toi?

  16. #16
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,
    je viens de tester sur un autre ordi (pas même version de système) et là ça passe, donc je me retrouve bien avec l'erreur 1004 signalée ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .Worksheets("Quitt Temp").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "Test", Quality:= _
            xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
            From:=1, To:=1, OpenAfterPublish:=False
    il faut que je regarde ce qu'il va pas sur mon ordi perso si c'est l'installation d'excel ou se fameux bug sur la date.

    Quel version de système utilisez vous?

  17. #17
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    Sur mon macbook, je suis encore sur l'OSX 10.9.4 soit Mavericks si je ne me trompe pas (Ordi fournit et mis à jour via mon organisme pro, je ne peux le mettre à jour moi même)

    Par contre, sur mon mac perso, depuis lequel je ne me sers pas de ce classeur, je suis sur la version 10.12.1 (Sierra) et je rencontrais le même problème que vous pour les dates...

    J'ai donc appliqué la commande dans Terminal et cela a réglé celui ci

    Une fois le problème de date réglé, la macro renvoi toujours le même code erreur...

  18. #18
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    ok avec ces infos, c'est bien on avance; étant donné que j'ai peu de temps là, je vais rectifier l'erreur de date sur mon ordi perso ce soir et investir plus sur le problème

    C'est effectivement le code de Ron de Bruin que j'utilise afin d'adresser par mail une feuille excel exportée au format pdf.
    je pourrais avoir le lien direct sur le code de Ron de Bruin pour éviter de chercher svp
    je vais le regarder de plus près afin d'isoler le problème

  19. #19
    Membre régulier
    Homme Profil pro
    Prof Lib
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Prof Lib
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Par défaut
    La macro demandée est disponible ici

    J'ai recopié les codes dans le module 3 de mon classeur.

    Il existe cette page ou il aborde l'envoi de pdf via sa fonction.

  20. #20
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Ça avance doucement mais ça avance car il y a tellement de code qui intervient dans le pas à pas.
    Donc je vais commencer par de petite recommandation de modif de code :

    - Dans Private Sub RechercheLocataire_Change()
    pour régler une bonne fois pour tout le problème de date dans le UserForm quelque soit l'ordi (Mac; puisque la correction avec le terminal ne sera pas forcément faite si la macro est utilisé sur un autre ordi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Compteur = 1 To 120
     
        ValeurDate = Format(ActiveCell, "dd/mm/yyyy") 'modification de cette ligne
     
        RechercheDate.AddItem ValeurDate
    …
    - concernant la conversion de la somme (j'ai pas regardé dans le détails, puisque à l'activation de la macro on y passe avec le pas à pas => super long) voir le code long :
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    Option Explicit
     
     
    '***********
    ' Devise=0   aucune
    '       =1   Euro €
    '       =2   Dollar $
    ' Langue=0   Français
    '       =1   Belgique
    '       =2   Suisse
    '***********
    ' Conversion limitée à 999 999 999 999 999 ou 9 999 999 999 999,99
    ' si le nombre contient plus de 2 décimales, il est arrondit à 2 décimales
     
     
    Public Function ConvNumberLetter(Nombre As Double, Optional Devise As Byte = 0, _
                                        Optional Langue As Byte = 0) As String
        Dim dblEnt As Variant, byDec As Byte
        Dim bNegatif As Boolean
        Dim strDev As String, strCentimes As String
     
        If Nombre < 0 Then
            bNegatif = True
            Nombre = Abs(Nombre)
        End If
        dblEnt = Int(Nombre)
        byDec = CInt((Nombre - dblEnt) * 100)
        If byDec = 0 Then
            If dblEnt > 999999999999999# Then
                ConvNumberLetter = "#TropGrand"
                Exit Function
            End If
        Else
            If dblEnt > 9999999999999.99 Then
                ConvNumberLetter = "#TropGrand"
                Exit Function
            End If
        End If
        Select Case Devise
            Case 0
                If byDec > 0 Then strDev = " virgule"
            Case 1
                strDev = " Euro"
                If byDec > 0 Then strCentimes = strCentimes & " Cents"
            Case 2
                strDev = " Dollar"
                If byDec > 0 Then strCentimes = strCentimes & " Cent"
        End Select
        If dblEnt > 1 And Devise <> 0 Then strDev = strDev & "s"
        ConvNumberLetter = ConvNumEnt(CDbl(dblEnt), Langue) & strDev & " " & _
            ConvNumDizaine(byDec, Langue) & strCentimes
    End Function
     
    Private Function ConvNumEnt(Nombre As Double, Langue As Byte)
        Dim byNum As Byte, iTmp As Variant, dblReste As Double
        Dim strTmp As String
     
        iTmp = Nombre - (Int(Nombre / 1000) * 1000)
        ConvNumEnt = ConvNumCent(CInt(iTmp), Langue)
        dblReste = Int(Nombre / 1000)
        iTmp = dblReste - (Int(dblReste / 1000) * 1000)
        strTmp = ConvNumCent(CInt(iTmp), Langue)
        Select Case iTmp
            Case 0
            Case 1
                strTmp = "mille "
            Case Else
                strTmp = strTmp & " mille "
        End Select
        ConvNumEnt = strTmp & ConvNumEnt
        dblReste = Int(dblReste / 1000)
        iTmp = dblReste - (Int(dblReste / 1000) * 1000)
        strTmp = ConvNumCent(CInt(iTmp), Langue)
        Select Case iTmp
            Case 0
            Case 1
                strTmp = strTmp & " million "
            Case Else
                strTmp = strTmp & " millions "
        End Select
        ConvNumEnt = strTmp & ConvNumEnt
        dblReste = Int(dblReste / 1000)
        iTmp = dblReste - (Int(dblReste / 1000) * 1000)
        strTmp = ConvNumCent(CInt(iTmp), Langue)
        Select Case iTmp
            Case 0
            Case 1
                strTmp = strTmp & " milliard "
            Case Else
                strTmp = strTmp & " milliards "
        End Select
        ConvNumEnt = strTmp & ConvNumEnt
        dblReste = Int(dblReste / 1000)
        iTmp = dblReste - (Int(dblReste / 1000) * 1000)
        strTmp = ConvNumCent(CInt(iTmp), Langue)
        Select Case iTmp
            Case 0
            Case 1
                strTmp = strTmp & " billion "
            Case Else
                strTmp = strTmp & " billions "
        End Select
        ConvNumEnt = strTmp & ConvNumEnt
     
    End Function
     
    Private Function ConvNumDizaine(Nombre As Byte, Langue As Byte) As String
        Dim TabUnit As Variant, TabDiz As Variant
        Dim byUnit As Byte, byDiz As Byte
        Dim strLiaison As String
     
        TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
            "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", _
            "seize", "dix-sept", "dix-huit", "dix-neuf")
        TabDiz = Array("", "", "vingt", "trente", "quarante", "cinquante", _
            "soixante", "soixante", "quatre-vingt", "quatre-vingt")
        If Langue = 1 Then
            TabDiz(7) = "soixante dix"
            TabDiz(9) = "quatre vingt dix"
        ElseIf Langue = 2 Then
            TabDiz(7) = "septante"
            TabDiz(8) = "huitante"
            TabDiz(9) = "nonante"
        End If
        byDiz = Int(Nombre / 10)
        byUnit = Nombre - (byDiz * 10)
        strLiaison = "-"
        If byUnit = 1 Then strLiaison = " et "
        Select Case byDiz
            Case 0
                strLiaison = ""
            Case 1
                byUnit = byUnit + 10
                strLiaison = ""
            Case 7
                If Langue = 0 Then byUnit = byUnit + 10
            Case 8
                If Langue <> 2 Then strLiaison = "-"
            Case 9
                If Langue = 0 Then
                    byUnit = byUnit + 10
                    strLiaison = "-"
                End If
        End Select
        ConvNumDizaine = TabDiz(byDiz)
        If byDiz = 8 And Langue <> 2 And byUnit = 0 Then ConvNumDizaine = ConvNumDizaine & "s"
        If TabUnit(byUnit) <> "" Then
            ConvNumDizaine = ConvNumDizaine & strLiaison & TabUnit(byUnit)
        Else
            ConvNumDizaine = ConvNumDizaine
        End If
    End Function
     
    Private Function ConvNumCent(Nombre As Integer, Langue As Byte) As String
        Dim TabUnit As Variant
        Dim byCent As Byte, byReste As Byte
        Dim strReste As String
     
        TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
            "huit", "neuf", "dix")
     
        byCent = Int(Nombre / 100)
        byReste = Nombre - (byCent * 100)
        strReste = ConvNumDizaine(byReste, Langue)
        Select Case byCent
            Case 0
                ConvNumCent = strReste
            Case 1
                If byReste = 0 Then
                    ConvNumCent = "cent"
                Else
                    ConvNumCent = "cent " & strReste
                End If
            Case Else
                If byReste = 0 Then
                    ConvNumCent = TabUnit(byCent) & " cents"
                Else
                    ConvNumCent = TabUnit(byCent) & " cent " & strReste
                End If
        End Select
    End Function
    1e question : est-ce utile ? car dans la quittance je ne vois aucunement de chiffres écrit en lettres

    2 : si c'est vraiment utile je recommande la contribution de patricktoulon :
    chiffre en lettre arrondis a 2 chiffre apres la virgule et gestion monnaie avec orthographe nikel
    Attention faut tout lire car il a fait qq modif

    sinon concernant le problème avec l'erreur 1004 en faisant la même démarche, j'arrive au même résultat.
    Je continue de regarder pour déterminer ce qu'il ne va pas.

    Voilà

Discussions similaires

  1. [XL-2010] Enregistrement PDF - Erreur 1004
    Par Made62 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/07/2016, 16h01
  2. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 11h50
  3. [Excel] Erreur 1004 avec un search
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 14h54
  4. Insérer une image : Erreur 1004
    Par dp_favresa dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/10/2005, 15h01

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