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 :

Modifier des BuildingBlocks par macro


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : août 2017
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Modifier des BuildingBlocks par macro
    Bonjour,

    je cherche à réorganiser mes BuildingBlocks en changeant tantôt leur Type, tantôt leur Catégorie. Seulement, ils sont tellement nombreux que je souhaite le faire en code et non via l'Organisateur de blocs qui est vraiment mal foutu de mon point de vue.

    Le problème c'est que je n'arrive pas à modifier à proprement parler les BuildingBlocks. Tout ce que j'arrive à faire c'est à ouvrir le BB à modifier et à en créer un nouveau après avoir récupérer les éléments.

    En gros ça donne ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim objBBE As BuildingBlockEntries
    Dim objBB As BuildingBlock
    Dim myRange As Range
     
    Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustom1).Categories(i).BuildingBlocks(ii) (je vous épargne les boucles i et ii)
    Set Doc = Word.Application.Documents.Add
    Insertion du BB dans Doc
    Set myRange = Doc.Range(0, Doc.Paragraphs(Doc.Paragraphs.Count).Range.End)
    objBBE.Add objBB.Name, wdTypeAutoText, objBB.Category.Name, myRange
    Sauf que cette méthode m'oblige à chaque fois à ouvrir un doc et à insérer le BB parce que j'ai besoin de récupérer un objet Range ce que je n'arrive pas à faire directement en code.

    D'ailleurs ce n'est peut-être pas possible car autant j'arrive à modifier le nom des BB via la propriété Name, autant l'aide en ligne m'indique que la propriété Type est en lecture seule.

    Mais d'un autre côté l'organisateur de bloc lui permet ce genre de modifications donc je ne vois pas pourquoi on ne pourrait pas le faire directement via une macro.

    Du coup j'ai deux question :

    1) Est-il quand même possible de modifier directement un BB ce qui m'épargnerait le processus artisanal de Création/Suppression
    2) Si non, puis-je récupérer l'objet range d'un BB existant pour le transmettre à celui qui va le remplacer ?

    Je m'excuse d'ores et déjà pour le mal de crâne que j'ai peut-être occasionné à certains...

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    4 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : avril 2013
    Messages : 4 331
    Points : 11 028
    Points
    11 028
    Billets dans le blog
    30
    Par défaut
    Citation Envoyé par ulyssep Voir le message
    Bonjour,

    Regardez cette discussion pour voir si elle peut vous être utile pour identifier vos objets : Creation-ex-3-documents-partir-d-modele-contenant-blocs-construction
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : août 2017
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Bonjour Eric, merci pour votre réponse et surtout merci pour le partage de cette discussion qui m'a permis d'en apprendre beaucoup.

    Hélas, cela n'a trait qu'à de l'insertion et de l'affichage/présentation des BB et non de leur modification à proprement parler. Je garde cependant les marcos qui y ont été partagés et qui vont me permettre de grandement améliorer certaines parties de code.

    Bonne journée.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    4 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : avril 2013
    Messages : 4 331
    Points : 11 028
    Points
    11 028
    Billets dans le blog
    30
    Par défaut
    Citation Envoyé par ulyssep Voir le message
    Ben non. Dès lors que l'objet est identifié (une variable instanciée), vous devez pouvoir travailler dessus.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : août 2017
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Dans ce cas il y a quelque chose qui m'échappe.

    Si j'écris objBB.Name = "NouveauNom" effectivement je n'ai pas de souci.

    Mais lorsque je fais objBB.Type.Index = 29 j'ai une erreur de compilation impossible d'affecter à une propriété en lecture seule.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    4 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : avril 2013
    Messages : 4 331
    Points : 11 028
    Points
    11 028
    Billets dans le blog
    30
    Par défaut
    Citation Envoyé par ulyssep Voir le message
    Tout n'est pas modifiable. Il faut aller voir dans l'aide en ligne pour l'objet et regarder ses propriétés pour voir celles qui sont en lecture/écriture.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : août 2017
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Tout n'est pas modifiable. Il faut aller voir dans l'aide en ligne pour l'objet et regarder ses propriétés pour voir celles qui sont en lecture/écriture.
    C'est ce que j'ai fait en tout premier lieu bien sûr.

    C'est pour ça que dans mon premier message j'écris :

    D'ailleurs ce n'est peut-être pas possible car autant j'arrive à modifier le nom des BB via la propriété Name, autant l'aide en ligne m'indique que la propriété Type est en lecture seule.

    Mais d'un autre côté l'organisateur de bloc lui permet ce genre de modifications donc je ne vois pas pourquoi on ne pourrait pas le faire directement via une macro.

    Du coup j'ai deux question :

    1) Est-il quand même possible de modifier directement un BB ce qui m'épargnerait le processus artisanal de Création/Suppression
    2) Si non, puis-je récupérer l'objet range d'un BB existant pour le transmettre à celui qui va le remplacer ?

Discussions similaires

  1. modifier une équation par macro
    Par lnhau dans le forum VBA Word
    Réponses: 4
    Dernier message: 06/08/2014, 09h01
  2. Réponses: 4
    Dernier message: 04/06/2007, 12h04
  3. [Insoluble] Générer des commentaires par Macro
    Par Ziploppe dans le forum C++
    Réponses: 2
    Dernier message: 18/05/2007, 10h12
  4. [VBA-word] Table des matières par macro
    Par EvaristeGaloisBis dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/05/2007, 17h02
  5. Modifier des images par programmation : C ou Flash ou ?
    Par R.L. dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 11/05/2007, 16h17

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