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

VBA Word Discussion :

Formulaire et macro aperçu avant impression [WD-2003]


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut Formulaire et macro aperçu avant impression
    Bonjour,
    je suis en train de réaliser un formulaire et, pour faciliter le travail de l'utilisateur, je place 2 boutons en haut de page : l'un pour "enregistrer sous" et le second pour imprimer à partir de l'aperçu.
    Mon souci est le suivant :
    - je n'arrive qu'à enregistrer le document avec un nom prédéfini alors que je veux pouvoir passer par la fenêtre habituelle permettant de choisir l'emplacement.
    - la macro "ActiveDocument.PrintPreview" me retourne une "erreur 5895 - l'affichage demandé n'est pas disponible".

    Avez-vous des pistes de solution pour m'aider ?
    Merci
    Ils s'instruisent pour vaincre.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Quel code utilises-tu pour l'enregistrement?

    Pour l'afichage en mode preview, possible que le fait d'avoir un formulaire en mode design pose problème.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    J'ai placé sur le formulaire un bouton avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    ActiveDocument.PrintPreview
    End Sub
    Pour être certain, j'ai confirmé avec l'enregistreur de macro qui me donne le même code.
    J'ai même testé avec une feuille contenant seulement du texte et le résultat est le même
    Pour "enregistrer sous", j'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton4_Click()
    Application.Dialogs(xlDialogSaveAs).Show
    end sub
    mais cela retourne l'erreur "5941-le membre de la collection requis n'existe pas".
    Par défaut j'ai pris celui-ci mais il ne laisse pas de choix à l'utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton4_Click()
    ChangeFileOpenDirectory "F:\"
    ActiveDocument.SaveAs FileName:="Fiche" & "-" & Format(Date, "yyyy") & "-" & Format(Date, "mm") & "-" & Format(Date, "dd") & "-" & Format(Time, "hh") & "H" & Format(Time, "nn") & ".doc"
    ActiveDocument.Close
    End Sub
    Ils s'instruisent pour vaincre.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    En Wordn c'est normal que tu reçoives ce message d'erreur.

    C'est une constante Excel.

    Pour avoir une boîte de dialogue Word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.FileDialog(msoFileDialogSaveAs).Show
    Par contre, pas besoin de change l'openfiledirectory
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Impec ! je viens de tester et cela fonctionne comme je le souhaitais. Pourtant j'ai parcouru, via Google, pas mal de forum et je n'ai jamais trouvé cette syntaxe.
    Encore merci pour ton coup de main
    Pendant que j'y suis, j'ai un petit souci avec une combobox : dans mon formulaire, l'utilisateur appuie sur un bouton qui ouvre un UF avec une combobox comprenant un certain nombre d'entrées. Une fois qu'il clique sur l'entrée recherchée, l'entrée se place dans un champ texte de mon formulaire. Donc tout va bien.
    Par contre, lorsque la combobox s'ouvre, la fenêtre est vide et si je tape un caractère, la combobox se ferme immédiatement et inscrit la première entrée commençant par le caractère tapé dans la combobox.
    J'ai essayé de modifier la propriété MatchEntry, sans succès.
    voici les codes du UF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub userForm_Initialize()
    Me.ComboBox1.List() = Array("1 R", "2 R", "3 R", "3 B", "3 BT", "4 R", "5 R", "6 R", "7 RM", "8 R", "9 R", "10 R", "511 R")
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
    ActiveDocument.FormFields(3).Result = Me.ComboBox1.Value
    UserForm1.Hide
     
    End Sub
    Edit : et je n'ai toujours pas réglé mon problème d'aperçu avant impression
    Ils s'instruisent pour vaincre.

  6. #6
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Aïe! je me suis un peu emballé. Lorsque j'ai essayé ton code, je me suis arrêté à l'apparition de la fenêtre "enregistrer sous".
    Là, je viens de faire un essai d'enregistrement sur le bureau et...rien. Il n'y a pas de document enregistré !
    J'ai aussi essayé, mais sans plus de succès, avec le code donné par l'aide MS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton6_Click()
    'Sub ShowSaveAsDialog()
        Dim dlgSaveAs As FileDialog
        Set dlgSaveAs = Application.FileDialog(FileDialogType:=msoFileDialogSaveAs)
        dlgSaveAs.Show
    End Sub
    Ils s'instruisent pour vaincre.

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut l'exécuter.

    Ce que je t'ai donné était une piste, pas un code complet.

    Comme code complet, on a per exemple :

    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
    Sub MonFileDialog()
    Dim oDlg As FileDialog
     
    Set oDlg = Application.FileDialog(msoFileDialogSaveAs)
     
    With oDlg
        .Show
        .Title = "Mon titre"
    End With
     
    oDlg.Execute
     
    Set oDlg = Nothing
     
    End Sub
    Mais il faut gérer les erreurs et çà quelque que soitla voie que tu choisis.
    si l'utilisateur clique sur Annuler, il faut le gérer.

    Pour ton combo, il faut utiliser un autre évènement que change.

    Change se produit lors de chaque changement et donc à chaque lettre tapée au clavier.

    Si tu utilises AfterUpDate, ce serait plus pratique.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Pour le combo, cela fonctionne comme je le souhaite. Il me faut juste rajouter un bouton "OK" pour valider la sélection. Merci.
    Je creuse maintenant sur le SaveAs
    Ils s'instruisent pour vaincre.

  9. #9
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bon, j'ai joué les fainéants et recopié ton code et cela fonctionne parfaitement. J'ai juste ajouté Application.Quit en fin d'exécution.
    A quoi sert la ligne ".Title = ..." ? j'ai essayé de mettre entre "" le nom de fichier souhaité (FichVisit-date-heure) mais cela ne produit rien, il faut rentrer un nom pour accéder au bouton enregistrer.
    Je te remercie de ton aide. Je suis familiarisé avec le VBA mais sur Excel. C'est ma première sur Word !
    Ils s'instruisent pour vaincre.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Title met un titre à la boîte de dialogue obtenue.

    Pour le nom de fichier par défaut Initialfilename


    http://heureuxoli.developpez.com/off...-word/#LII-A-5
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Encore merci pour ton aide. Je rame un peu avec le VBA Word, d'autant qu'il est moins répandu que celui d'Excel (y compris sur les sites US).
    Ils s'instruisent pour vaincre.

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

Discussions similaires

  1. Concepteur RAVE sous DELPHI 7 : aperçu avant impression
    Par tarbala dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/06/2020, 00h37
  2. Aperçu avant impression d'un TRichEdit
    Par PoOky dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/01/2016, 23h19
  3. [XL-2010] Liste déroulante et macro aperçu avant impression
    Par tintin69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/04/2015, 08h44
  4. Réponses: 6
    Dernier message: 17/04/2013, 14h54
  5. [Débutante] Aperçu avant impression d'un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/07/2004, 09h52

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