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 :

Copier un bouton de commande AVEC son code par macro word


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Copier un bouton de commande AVEC son code par macro word
    Bonjour à tous,

    En espérant être sur le bon forum ?

    Ma question est simple mais en même temps je ne trouve rien dessus :

    J'ai fait une macro (code VBA) dans un formulaire WORD avec des boutons de commandes pour effectuer des tâches particulières (copie de zone ou suppression), mais je souhaite que le bouton de commande AINSI que son code puisse être copié lorsqu'il est dans la zone sélectionnée !

    Car j'arrive bien à copier la zone avec le bouton, mais le bouton n'a plus son code vba attaché : il ne sert donc plus à rien...

    Comment puis-je copier la 'zone' et que le bouton de commande conserve son code associé : "Private Sub CommandButton1_Click()"?
    D'avance merci

    PS : exemple code du bouton de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ActiveDocument.Bookmarks(ZONE).Select
        Selection.Copy
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.PasteAndFormat Type:=wdFormatOriginalFormatting

  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,

    Le problème, c'est que le nom du bouton de commande va être incrémenté après sa copie.
    Ce qui fait que le code ne va plus fonctionner.

    Que souhaites tu faire exactement, on peut peut-être y parvenir autrement ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Effectivement le bouton de commande voit son nom incrémenté mais justement je pensais qu'on pouvait copier le bouton et que le code se retrouverait dans la nouvelle "Private Sub CommandButtonX_Click()" ?
    En fait le but est de pouvoir ajouter ou supprimer une zone du formulaire à l'identique... 2 boutons en debut de la zone du formulaire, dont Un qui copie la zone pour la coller après (on dédouble en quelque sorte) et un autre bouton pour permettre de supprimer la zone copiée !
    Ainsi chaque zone se retrouve avec ses 2 boutons...
    Je ne sais pas si j'ai été clair ?
    En tout cas tout idée serait bienvenue, merci.

  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,

    Pourquoi ne pas exclure les boutons du document pour les mettre dans une barre d'outils ou dans un onglet.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Il s'agit d'un formulaire, je veux éviter toute interaction avec quoi que ce soit, le document doit s'autoporter tout seul, l'avantage du bouton dans le texte c'est qu'il porte avec lui son point d'insertion, nul besoin de chercher où débute la zone à copier ou à supprimer dans le document...

    Donc pas de solution ? à priori

    Merci je vais réfléchir à faire autrement alors, mais je n'ai pas encore d'idée...

  6. #6
    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,

    Les barres d'outils et les onglets sont "autoportés" dans le document.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Oui mais cela ne me facilite pas du tout la tâche de jouer avec des boutons à l'extérieur du texte...
    Dernière petite question : Puis-je en VB balayer les "objets" du document (par exemple rechercher tous les "boutons de commande" et voir si un code leur est associé sur l'évènement "Click()" et sinon leur ajouter ? Tout ca en VB...

    Merci

  8. #8
    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,

    Oui, on peut intervenir sur le code par le code.
    Mais pour des raisons de sécurités, il faut autoriser ces manipulations de façon explicite et ce pour et par tous les utilisateurs.

    Voilà le lien d'un tuto pour la manipulation du code par le code.

    http://silkyroad.developpez.com/VBA/VisualBasicEditor/

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci pour ce tuto qui m'a l'air très très bien fait...
    Je vais tenter de comprendre comment je vais pouvoir lors de la copie de la zone écrire les lignes de code pour l'évènement "Click" du bouton de commande qui a été copié...
    Dans une première étape, je cherche le nom de ce nouveau bouton de commande, puis en une seconde étape j'écris dans "ThisDocument", la procédure "Private Sub CommandButtonX_Click()"... et ceci à chaque copie

    J'essaye et vous tiens au courant du résultat
    Merci

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je bloque sur la première étape, qui consiste à rechercher l'existence d'un bouton de commande dans le document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ctrl As Controls
    For Each Ctrl In ActiveDocument.VBProject.VBComponents("ThisDocument").Controls
        Debug.Print Ctrl.Name 'Nom
        Debug.Print TypeName(Ctrl) 'Type de contrôle
    Next Ctrl
    Ne fonctionne pas avec l'erreur 438 (méthode non gérée...)
    C'est encore pire avec le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Obj As OLEObject
    For Each Obj In ActiveDocument.VBProject.VBComponents("ThisDocument").OLEObjects
    	Debug.Print Obj.Name 'Nom
    	Debug.Print TypeName(Obj.Object) 'Type de contrôle
    Next Obj
    Quelqu'un a t'il une idée pour lister tous les "objets" de mon document en VB Word ?
    D'avance merci de votre aide

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Y a t'il quelqu'un qui sait pourquoi le code pour lister la collection d'objet "Controls" ne marche pas sous WORD ?

    D'avance merci de votre aide.
    Bonne journée

  12. #12
    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,

    Simplement parce que les controls du document ne sont pas dans les composant VBA.

    en fait, tu dois vérifier les controls du document et vérifier ensuite les composants VBA.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Merci pour l'explication, mais comment avec du code VBA, puis-je vérifier les controls du documents alors ?
    Car je croyais qu'avec "For Each Ctrl In ActiveDocument.VBProject.VBComponents("ThisDocument").Controls" me permettrait de voir les controls du document...
    Malheureusement je ne connais pas et ne trouve pas non plus la syntaxe pour chercher sans VBComponents ?
    Pouvez-vous m'aiguiller vers la bonne syntaxe ? d'avance merci

  14. #14
    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 faire le tour des olecontrols qui sont des inlineshapes.

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Merci encore pour cet éclaircissement, mais il me faudrait un peu plus de précision, car j'ai bien essayé des choses, et la seule probante est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function test()
    Set doc = ActiveDocument
    MsgBox "InlineShape = " & doc.InlineShapes.Count & _
        vbCr & "Shapes = " & doc.Shapes.Count
    Dim i As Integer
    For i = 1 To doc.InlineShapes.Count
        With doc.InlineShapes(i)
            .Select
            ' .Name propriété non géré par l'objet ??
            'Debug.Print .Name
            Debug.Print .Type
        End With
    Next i
    Sauf que si ".Select" fonctionne bien, les propriétés de l'objet ne sont toujours pas accessibles : PAS de .Name (non géré pour l'objet) et le .Type donne systématiquement la valeur "5" quelque soit l'objet ??
    Donc comment récupéré le NOM de l'objet et son TYPE (commandbutton par exemple) ? Merci de ton aide précisieuse

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Vraiment personne pour me dire comment extraire le nom (propriété ".Name") et le Type (propriété ".Type") des objets InLineShapes ?

    Merci d'avance.

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut

    Bon n'ayant eu aucun retour, j'ai continué à chercher pour finalement enfin trouver la bonne syntaxe, qui est la suivante, si cela peut aider d'autres personnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Recherche des objets
    Dim NbObj
    For NbObj = 1 To doc.InlineShapes.Count
    	With doc.InlineShapes(NbObj)
    		Debug.Print .OLEFormat.Object.Name
    		Debug.Print .OLEFormat.ClassType
    	End With
    Next NbObj
    Bonne continuation à tous

  18. #18
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Chr22,

    Bravo . N'oublie pas de cliquer sur :Resolu: pour que les autres DVPnautes puissent encore mieux profiter de ta solution.

    @+

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bsr, ok pour mettre RÉSOLU mais avec mon navigateur portable, je ne voie pas comment le faire ?
    Désolé de vous embêter avec ça !
    Ah si je l'ai finalement trouvé en bas de la page...

    Juste pour conclure que du coup mon souhait de départ de copier/coller une zone de texte contenant un bouton de commande et lui attribuer son code, tout ça en VB fonctionne parfaitement !
    MERCI à tous pour vos conseils.

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

Discussions similaires

  1. lier un bouton de commande avec excel sur un interface VB6.
    Par famdsm dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/08/2008, 16h48
  2. copier/coller bouton de commande et codes
    Par froggyaz dans le forum VBA Word
    Réponses: 3
    Dernier message: 03/05/2008, 01h17
  3. Bouton de commande avec message box
    Par safrane dans le forum IHM
    Réponses: 37
    Dernier message: 21/11/2007, 10h46
  4. Réponses: 10
    Dernier message: 19/03/2007, 15h37
  5. Bouton de commande avec condition
    Par rogeryzf dans le forum Access
    Réponses: 5
    Dernier message: 22/02/2006, 14h13

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