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 :

Modifier des BuildingBlocks par macro


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    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 : 22
    Points : 14
    Points
    14
    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
    Invité
    Invité(e)
    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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    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 : 22
    Points : 14
    Points
    14
    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
    Invité
    Invité(e)
    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.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    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 : 22
    Points : 14
    Points
    14
    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
    Invité
    Invité(e)
    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.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    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 : 22
    Points : 14
    Points
    14
    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, 08h01
  2. Réponses: 4
    Dernier message: 04/06/2007, 11h04
  3. [Insoluble] Générer des commentaires par Macro
    Par Ziploppe dans le forum C++
    Réponses: 2
    Dernier message: 18/05/2007, 09h12
  4. [VBA-word] Table des matières par macro
    Par EvaristeGaloisBis dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/05/2007, 16h02
  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, 15h17

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