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 :

Macro qui marche, Bouton à cliquer qui y fait référence qui bugue


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Macro qui marche, Bouton à cliquer qui y fait référence qui bugue
    Bonjour à tous,

    J'ai créé un contrat type sous Word, avec des signets en première page, pour les données que je dois adapter.
    J'ai ajouté des champs REF dans le corps du contrat faisant référence à ces signets.
    J'ai fait un enregistrement automatique de macro du QuickPart "Demander / Ask" pour renseigner mes signets.

    Si je lance la macro depuis l'onglet Développeur / Exécuter, ça marche.
    Si je crée un bouton à cliquer, vers cette macro, ça bugue.
    Je n'y comprends rien.
    J'ai joint le contrat.

    Pourriez-vous m'aider à relier un bouton à cliquer à mes macros Demander / Ask ?

    Je vous remercie grandement
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Bonjour,

    Essayez le fichier joint.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je lis dans le code des boutons :

    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
     
    Option Explicit
     
     
    Private Sub CommandButton1_Click()
            Maj_Champ
    End Sub
     
    Private Sub CommandButton2_Click()
            Enregistrer_PDF
    End Sub
     
    Private Sub CommandButton3_Click()
    ' Résidence
     
            MsgBox "Procédure Résidence absente !", vbCritical, "CommandButton3"
     
    End Sub
    Est-ce bien ce que vous aviez écrit pour le bouton 3 ? En ce cas, pourquoi une MsgBox ?

    Les deux premiers fonctionnent, le bouton exécute la bonne commande.

    Concernant le 3e, à titre indicatif car je ne sais plus si les macros sont enregistrées dans le .docm ou sur mon PC (j'ai oubert le Word d'un autre PC, il n'y avait pas toutes les macros), voici comment sont rédigées les macros Ask qui ne veulent pas marcher avec un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Résidence()
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "ASK  Résidence_nom ""Résidence - Nom ?"" ", PreserveFormatting:=True
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "ASK  Résidence_adresse ""Résidence - Numéro et voie ?"" ", PreserveFormatting:= _
            True
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "ASK  Résidence_CP ""Résidence - Code postal ?"" ", PreserveFormatting:=True
        Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
            "ASK  Résidence_ville ""Résidence - Ville ?"" ", PreserveFormatting:= _
            True
    End Sub
    Cliquer sur le bouton (relié à la macro de la même façon que vous l'avez fait pour les deux autres macros) renvoie systématiquement une erreur 4605.

    Auriez-vous encore un peu de temps pour moi ?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub CommandButton3_Click()
    ' Résidence
     
            MsgBox "Procédure Résidence absente !", vbCritical, "CommandButton3"
     
    End Sub
    Est-ce bien ce que vous aviez écrit pour le bouton 3 ? En ce cas, pourquoi une MsgBox ?
    Oui, car il n'existe aucune procédure Résidence. J'imagine qu'elle correspond à celle appelée Lot.
    Conseil : Ne pas utiliser des caractères signés dans le nom de vos procédures (ni de vos variables) : A la place de Résidence, écrivez plutôt Residence.

    Sinon, j'ai du mal à comprendre comment votre document fonctionne pour cette procédure justement. Pourquoi ne pas utiliser directement vos signets ?
    Avec des questions à répétition comme vous l'avez fait, je pense que vous allez vite irriter vos utilisateurs. Il vaudrait mieux utiliser un userform pour saisir toutes les informations en même temps puis utiliser un bouton pour lancer la mise à jour.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Re bonjour,

    "Oui, car il n'existe aucune procédure Résidence. J'imagine qu'elle correspond à celle appelée Lot. "
    ---> Oui, désolé, ce sont toutes les mêmes, cf. lot ou l'exemple posté dans mon message précédent. Savez-vous pourquoi le lien avec un bouton échoue ? Pouvez-vous essayer dans le premier exemple de lier un bouton à cliquer avec une macro qui fait référence à des champs ASK ? Il s'agit spécifiquement de ce lien qui me pose un problème. J'arrive à lier un bouton à cliquer aux autres macros (et votre exemple également).


    "Sinon, j'ai du mal à comprendre comment votre document fonctionne pour cette procédure justement. Pourquoi ne pas utiliser directement vos signets ?
    Avec des questions à répétition comme vous l'avez fait, je pense que vous allez vite irriter vos utilisateurs. Il vaudrait mieux utiliser un userform pour saisir toutes les informations en même temps puis utiliser un bouton pour lancer la mise à jour. "

    ---> Le contrat comporte des champs à remplacer à chaque fois, et des champs qui seront identiques très souvent. Les mêmes champs apparaissent à plusieurs endroits du document.
    Mon idée était de créer 4 ou 5 boutons différents (résidence / investisseur / conditions du bail / lot) de 3 ou quatre questions chacun, pour que l'utilisateur (dont moi) puisse choisir précisément le paragraphe qu'il désire modifier sans avoir à répondre aux questions qui ne doivent pas être modifiées puis, sans quitter la première page, cliquer sur un bouton pour enregistrer le PDF).


    Conseillez-vous malgré tout le même principe d'userform ?

    Je vous remercie

    Edit : j'ai regardé l'USERFORM, je ne me sens pas d'apprendre à faire du VBA maintenant, je manque de temps. Je sais travailler par comparaison, grâce à Google et grâce à l'enregistrement automatique, mais pas beaucoup plus.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Un exemple dans le fichier joint. Pour Olivier LEBEAU : Si tu me lis, j'utilise ta fonction RemplacerTexteSignet.
    Si la valeur d'un signet doit se répercuter à plusieurs endroits, utilisez des renvois.
    Pour compartimenter les différentes parties à modifier, le plus lisible est de créer un champ multipage dans le Userform.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Woaw, ça c'est super !

    Je devrais largement bien m'en sortir avec, pour créer de nouvelles catégories ! J'ai essayé, j'y arrive

    Pour compartimenter les différentes parties à modifier, le plus lisible est de créer un champ multipage dans le Userform. Kézako ?

    En tous cas, merci infiniment

    Je mettrai ce thread résolu bientôt

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Pour compartimenter les différentes parties à modifier, le plus lisible est de créer un champ multipage dans le Userform. Kézako ?
    Ce serait d'avoir une présentation comme ça :
    Pièce jointe 494559

    Les parties 2 à 5 sont équivalentes à Résidence. Vous pourriez valider vos données partie par partie.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour votre aide jusqu'à maintenant,

    Mon Userform est en chantier, mais, je suis cependant face à un problème insoluble :

    J'ai repris votre exemple et l'ai extrapolé à tous mes signets, et chaque macro via Macro / Exécuter fonctionne, mais !

    Les boutons de mon UserForm qui redirigent vers des macros qui utilisent le code d'Olivier Lebeau ne fonctionnent pas (seuls Retour et Imprimer_PDF fonctionnent).

    J'ai joint une vidéo, si cela peut aider.... Je précise que j'ai bien évidemment laissé le code d'Olivier Lebeau, à la virgule près.

    Je vous remercie, s'il vous reste encore quelques minutes pour moi !

    Fichiers attachés Fichiers attachés

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Bonjour,

    J'ai du mal à me rendre compte. Avez-vous la possibilité de mettre votre modèle en ligne ?

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réactivité,

    Voici le fichier
    Fichiers attachés Fichiers attachés

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Ce sont les noms que vous donnez à vos frames qui coincent. Ils portent le même nom que les procédures. Je les ai rebaptisé en mettant Frame devant.

    J'ai également rebaptisé le Userform au cas où ce nom serait un mot réservé.

    Par ailleurs, paramétrez votre VBA pour rendre obligatoire la déclaration des variables et utilisez la commande Debogage.

    Pièce jointe 494790

    Dans la procédure maj_champs, vous avez deux fois End Sub. Indentez vos lignes de code pour le rendre plus lisible : Cf mon code maj_champs dans ma première réponse.


    Question qui tue : Pourquoi êtes-vous obligée de tout ressaisir ? J'imagine que toutes ces données sont déjà dans une base de données ou je me trompe.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ah ! Je vous remercie ! J'ai essayé rapidement, et ça marche ! Je vais tâcher de tout réintégrer dans mon fichier !
    Et puis me pencher sur vos autres idées.

    Pour vous répondre quant à la base de données :

    Oui pour certaines données, mais 1/ je suis trop débutant en VBA, 2/ les données ne sont pas toujours bien renseignées d'un point de vue qualitatif (pas d'accents par exemple), 3/ la base ne contient pas toutes les informations (beaucoup de documents scannés à consulter), 4/ les données sont parfois obsolètes.

    Ce qui, malgré tout, serait améliorable avec une fonction :

    - Une ligne dans le code d'Olivier Lebeau qui ne mette à jour que les signets renseignés, sans toucher à ceux laissés vide, pour par exemple changer de n° de lot et de surface sans renseigner étage et loyer, identiques et déjà renseignés pour le lot précédent, etc.


    (Ce n'est pas une demande, vous m'avez déjà aidé énormément !)

    Je teste vos nouvelles propositions et vous dis si je coince !

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Oui pour certaines données, mais 1/ je suis trop débutant en VBA, 2/ les données ne sont pas toujours bien renseignées d'un point de vue qualitatif (pas d'accents par exemple), 3/ la base ne contient pas toutes les informations (beaucoup de documents scannés à consulter), 4/ les données sont parfois obsolètes.
    Je pense que je serais parti de la base de données pour alimenter la boite de dialogue. Cela vous aurait permis de faire d'une pierre deux coups : 1 : fiabiliser la base de données, 2 : éditer vos documents.

    - Une ligne dans le code d'Olivier Lebeau qui ne mette à jour que les signets renseignés, sans toucher à ceux laissés vide, pour par exemple changer de n° de lot et de surface sans renseigner étage et loyer, identiques et déjà renseignés pour le lot précédent, etc.
    Il suffit de charger les TextBox avec le contenu des signets qui peuvent être réutilisés à l'ouverture du userform.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Immobilier
    Inscrit en
    Juillet 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Immobilier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai tout fait ! Tout fonctionne ! Merci !!!

    Enfin, quand je dis "tout" fait, j'entends adapter tout ce que vous avez fait pour moi !

    Une dernière chose m'échappe ! Que rajouter à ma macro enregistrer PDF pour que l'enregistrement soit automatique avec "Bail" + signet "nom investisseur" + signet "numéro de lot" + date du jour (jj-mm-aaaa) ? Idéalement, que l'enregistrement se fasse dans le répertoire de travail ?

    Après ça, promis, je ne vous embête plus

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cricriiii2A Voir le message
    Bonjour,

    Pour le répertoire de travail
    Pour le nom, il vous suffit de concaténer la valeur des différents signets en récupérant leur Range.Text.
    Pour la date, voir la commande Format dans l'aide en ligne.

    Pour vous assurer que votre nom de fichier est valide, regardez cette discussion : sauvegarde-pdf-partir-d-texte.

Discussions similaires

  1. [XL-97] Macro qui marche "pas à pas" mais pas avec le bouton
    Par Sarah775 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/07/2017, 17h38
  2. Macro qui fait planter Excel systématiquement lorsqu'un bouton lui est affecté
    Par SimonDelmarre dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/09/2014, 16h58
  3. Macro qui marche qu'une fois
    Par baski dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2007, 23h55
  4. [VBA-E] Macro qui fait Ctrl + F ?
    Par jefe.k dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2007, 12h04
  5. [Access 2003] Macro qui fait planter Access
    Par nuriel2 dans le forum Access
    Réponses: 5
    Dernier message: 10/05/2006, 15h00

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