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 :

Insérer une zone de texte par Macro


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut Insérer une zone de texte par Macro
    J'essaie de créer une macro qui insère une zone de texte dans mon doc, tout le temps au même endroit (disons à 3 cm du bord gauche de ma page, et à mi-hauteur). Je peux être amené à insérer plusieurs zone de texte sur la même page (que je positionne ensuite manuellement haut/bas avec les flèches du clavier, mais au moins elles ont toutes la même distance au bord gauche de la feuille. Je n'ai plus au'à les monter ou les descendre)

    Dans cette zone de texte, j'aimerais que la macro fasse apparaitre tout le temps le même texte, avec la même mise en forme (police 8, gras, italique)


    J'ai presque trouvé ce qu'il faut, mais comme je suis passé par une macro en enregistrement auto pour la partie mise en page du code, je bloque car la macro ne reconnait la "text box 32" (c'est la zone de texte où j'ai cliqué pour enregistrer le code de mise en page)

    Vous pourriez me dire ce qu'il faut que je me modifie svp?


    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
    19
    20
    21
    22
    23
    24
     
     
     Dim myS As Shape
     
    Set myS = ActiveDocument.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=30, Top:=200, Width:=100, Height:=100)
    With myS
        .Line.Transparency = 1
     
     
    End With
     
    myS.Select
    Selection.Range.Text = "nom société"
    myS.Select
    Selection.Font.Bold = True
    myS.Select
    Selection.Font.Size = 8
    myS.Select
    Selection.Paragraphs.Alignment
     
    Set myS = Nothing
     
     
    End Sub
    J'édite mon message car j'ai trouvé ce que je voulais.

  2. #2
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut
    enfin presque...

    Si qq'un pouvait me dire, dans le code ci-dessus, quelle ligne rajouter pour supprimer les espacements avant et après mon texte (les mettre à 0), ce serait cool :




    edit : ok voilà le code qui fonctionne

    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
     
    myS.Select
    Selection.Range.Text = "nom société"
    myS.Select
    Selection.Font.Bold = True
    myS.Select
    Selection.Font.Italic = True
    myS.Select
    Selection.Font.Size = 8
    myS.Select
    Selection.Paragraphs.Alignment = wdAlignParagraphRight
    myS.Select
    Selection.Range.ParagraphFormat.SpaceBefore = 0
    myS.Select
    Selection.Range.ParagraphFormat.SpaceAfter = 0

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut
    ce coup-ci je sèche...

    Je ne sais pas si ce que je souhaite faire est possible... Qq'un peut-il me dire si c'est réalisable ou si je peux arrêter de chercher?

    Je m'explique : sur mon document j'ai 3 paragraphes qui correspondent au Style "para1".

    Une fois que la macro a fait apparaître la zone de texte, je la déplace vers le haut ou le bas avec les flèches du clavier pour l'aligner avec mon paragraphe. Bon ça fonctionne, mais c'est un peu long de faire comme ça.

    Alors j'aimerais pouvoir déplacer cette zone de texte avec les flèches du clavier (haut/bas) de manière à ce que la zone de texte s'aligne à la même hauteur que celle de la 1ère ligne du paragraphe "para1" (qu'il soit juste en face).

    Est-il possible en VBA d'identifier un Style? est-ce la bonne méthode?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 419
    Par défaut
    Bonjour,

    Mais, en fait, tu tiens à réinventer l'eau chaude ?
    Une macro pour ça est inutile... tu n'as qu'à enregistrer ta zone de texte en tant que bloc de construction zone de texte avec toutes les caractéristiques nécessaires, il suffira d'utiliser le raccourci + F3 ou de cliquer dans la galerie des zones de texte.

    Maintenant pour aligner ta zone de texte avec le paragraphe, je ne vois pas vraiment de solution simple parce que la position d'un texte sur une page est en nombre de lignes (c'est l'information que tu vois en bas sur la barre d'état) alors que ta zone de texte qui a donc un habillage et ne fait pas partie de la couche texte, a une position en cm ou en pouces sur une page.

    En fait, je ne sais pas où tu veux en arriver, mais j'ai doute sur le process !

    m@rina

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut
    hello

    Oops.. je connaissais pas la fonction "bloc de construction zone de texte". Cela dit, il faut que j'explique mieux là où je veux en venir.

    Voilà un aperçu du template :



    Ce template est fait sur 1 seule colonne (il n'est pas non plus en mode tableau car je souhaiterais essayer de m'en passer pour les raisons évoquées précédemment). La zone que j'ai surlignée en bleu (ce surlignage ne fait pas partie du template, c'est juste pour localiser ce dont je parle), je veux m'en servir pour insérer un petit texte qui sert à introduire de temps en temps mes paragraphes.

    Donc ça veut dire que ce ptit texte introductif doit toujours être aligné de la même manière (alignement sur le trait rouge). Je dois y avoir accès rapidement car sur un doc de 300 pages j'appelle souvent cette zone de texte et si elle est bien alignée (sur le trait rouge) dès son insertion ca me fait gagner du temps. Je n'ai plus qu'à ajuster manuellement son positionnement vertical pour que la zone de texte soit positionnée en face du début d'un paragraphe...alors j'appuie 10 fois ou 50 fois sur les flèches haut/bas pour la monter ou la faire descendre

    C'est cette dernière étape, que je fais manuellement, que je cherche à automatiser car c'est un peu longuet d'appuyer sur les flèches haut/bas du clavier sur un doc de 300 pages.

    C'est pour ça que je me demande si c'est possible de déplacer verticalement la zone de texte, avec les flèches haut/bas du clavier, en faisant en sorte que ses déplacements s’arrêtent en face la 1ère ligne de chaque paragraphe (qui a un Style propre) : s'il y a 3 paragraphes sur ma page, ca me ferait QUE 3 possibilités de déplacement vertical de la zone de texte (zone de texte que j'ai au préalable sélectionner avec la souris)

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 419
    Par défaut
    Bonjour,

    En fait c'est très simple. Tu crées ta zone de texte avec la position horizontale précise, et la mise en forme que tu souhaites. Pour la position verticale, tu choisis une position absolue par rapport au paragraphe et tu enregistres la zone en tant que bloc de construction que tu mets où tu veux, dans les zones de texte de préférence, histoire de s'y retrouver.

    Je te mets un exemple ici :
    https://www.cjoint.com/c/KBmozh4nLZH

    Les blocs de construction ne pouvant se mettre que dans un modèle (building blocks.dotx par défaut ou un modèle quelconque), le fichier que je te joins est donc un modèle.
    Fais un test : positionne le curseur à la fin d'un paragraphe quelconque et tape "gauche" (sans les " ") suivi par F3. La zone de texte va automatiquement s'insérer sur le paragraphe où tu te trouves. Concernant la hauteur, la zone de texte va s'agrandir' en fonction du texte saisi à l'intérieur.
    J'ai mis un fond jaune à la zone histoire de la voir.

    m@rina

Discussions similaires

  1. [XL-2003] insertion de lien hypertexte dans une zone de texte par un bouton parcourir
    Par csophie49 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/02/2012, 17h55
  2. Réponses: 5
    Dernier message: 23/01/2010, 20h57
  3. Réponses: 3
    Dernier message: 03/08/2007, 17h34
  4. Effacer une zone de text par l'intermediaire d'un bouton
    Par claire_cartier dans le forum GTK+ avec C & C++
    Réponses: 25
    Dernier message: 18/04/2007, 15h59
  5. Remplir une zone de texte par rapport à une checkbox
    Par beegees dans le forum Général JavaScript
    Réponses: 43
    Dernier message: 04/09/2006, 17h01

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