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

Macros et VBA Excel Discussion :

[VBA-E]Insérer des autotext et les modifier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [VBA-E]Insérer des autotext et les modifier
    salut à tous,

    Je vous explique ce que j'aimerais faire.

    Je suis sous Excel, et j'ai une liste. Je construit à partir d'excel un document word (auquel j'attache un template contenant des autotext) dans lequel j'insère des autotext.

    Grâce à l'un des membres ici, j'ai réussi à faire marcher tout ca. L'insertion des autotext marche donc bien.

    Bon, là où je bloque maintenant c'est que j'aimerais modifier les autotext une fois insérés (par exemple remplacer '??' par '12:00'). Comment ils sont nombreux et tous différents, je ne peux pas m'en sortir avec une bete macro (bouge curseur 4 fois vers le haut puis 3 fois vers la droite, delete 4 caractères et insère '12:00'.). Par ailleurs, le remplacement de '??' selon l'autotext ne sera pas forcément '12:00' (donc pas possible de faire un 'replace all').

    Je pensais modifier ces autotext dans leur template en mettant des champs spéciaux (avec un nom de variable) puis les modifier une fois insérés par Excel dans Word.

    Mais je vois pas comment faire en pratique (quel champs mettre dans le template ? et comment les modifier en macro ?) :-(. Par ailleurs, peut-être qu'il existe une solution plus élégante. C'est un peu comme du mailing sauf qu'ici la structure des autotexts insérés varie.

    Je suis à l'écoute de vos idées ;-)

    Un grand merci pour l'aide.

    a+

    [TAG [VBA-E] rajouté par Khany]
    [Pensez-y vous-même à l'avenir. Merci. ]

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je t'avoue que je ne vois pas bien comment modifier un modèle de document en dynamique alors qu'un document est ouvert dans ce modèle...
    Quels sont ces "auto-tests" que tu souhaiterais modifier ?
    Sans garantie que je puisse t'aider
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    salut,

    En fait, dans le template (que j'attache au document Word crée par Excel), il y a une foule de petits modules (un exemple en fichier attaché).

    Le nom de cet autotext est indiquée en rouge. Dans mon document excel, j'ai la liste de tout les autotext disponibles dans ce template. En regard de chaque nom, j'ai un 'protocol time' (mettons 12H), et j'aimerais une fois le module inséré, remplacer le champ ?? par 12H.

    S'il y a avait moyen de faire ça élegamment, je serais bien content. Sinon, je vais devoir faire des magouilles par très belles (genre fonction replace). C'est pour ca que je pensais à un champ avec un nom de variable.

    Merci pour votre aide !

    a+
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tu pourrai utiliser les propriétés personnalisé de word... menu Fichier/propriétés/Personalisation puis tu rajoute une propriété texte Protocol_time avec ?? comme valeur par défaut , puis tu utilise le menu insertion /champ/ résumé/DocProperty ... : DOCPROPERTY "Protocol_time"

    ensuitue tu peu utiliser un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveDocument.CustomDocumentProperties("Protocol_time")= 12
    ActiveDocument.Fields.Update
    pour la mise à jour...

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    salut bbil,

    C'est ce genre de chose en effet qu'il me faudrait. Bien vu d'ailleurs.

    Seulement là, tu définit un champ commun à tout les modules contenus dans le template. Or dans mon template, j'ai des dizaines et des dizaines de modules (dont la plupart ont ce champ Protocol_time, dont la valeur pourra varier).

    A la limite, je pourrais créer un champ pour chaque module. Mais j'ai oublié de préciser un léger détail : un module autotext pourra être inséré plusieurs fois dans le document Word avec des valeur de protocol_time différentes... Donc, la mise à jour d'un champ pour 1 module, mettrais à jour tout les autres modules identiques, ce que je ne veux pas.

    Casse-tête pas vrai :-) ? Il faut donc travailler par module sans que cela joue sur les autres... Si tu as encore une idée de génie, je suis preneur

    Merci encore en tout cas pour ton aide ;-) Ca m'aide vraiment.

    a+

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    CustomDocumentProperties ... ne concerne qu'un document .., en l'occurence le document actif ., il n'y as rien de commun !!

    sinon mon probléme pour te répondre c'est que je sais pas utiliser "même manuellement" tes fameux modules auto_text....

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    salut

    en fait, c'est très simple et pratique. Tu crée un document Word et tu créé des petits modules (tableaux, blabla etc) avec un titre :

    titre
    <corps du module>

    ensuite, tu sélectionnes chaque module (avec le titre) et tu fais Insert > autotext > new. Si tu fais ça, il sera ajouté au normal.dot. Moi je préfère le créer dans un template personalisé. Donc il faut aller d'abord dans Insert > autotext > autotext et choisir un autre template.

    bref, tu sauves le document en .dot (un template donc).

    Ensuite, tu ouvres un autre document word et tu fais Tools > Template & add-in, tu cliques alors sur attach et tu vas chercher le document .dot qui contient les modules. Le fichier word est alors lié au template.

    Enfin, tu peux aller dans Insert > Autotext. Tu verras alors la liste des modules disponibles à inserer.

    C'est une technique très pratique.

    Moi, je voudrais donc, grâce à un tableau XL qui contient le nom des modules et certaines valeur (dont ce fameux protocol_time), je voudrais donc insérer ces modules dans un doc word en personalisant pour chaque module la valeur de protocol_time. Le hic avec ta méthode c'est que le champ serait commum à tout les modules. Or, admettons que j'insère 5 fois le même module, je ne veux pas qu'il ai le même protocol_time. Avec ta variable, ce serait pourtant le cas.

    J'espère t'avoir éclairé sur ces autotext ;-) Si tu as une idée pour résoudre mon problème, je t'écoute.

    merci !

    a+

Discussions similaires

  1. Comment insérer des onglets dans les pages ASP.NET ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/02/2007, 17h32
  2. Réponses: 9
    Dernier message: 19/02/2007, 21h33
  3. [VBA-E] Copier des cellules et les coller ?
    Par Trooper2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/01/2007, 18h29
  4. Réponses: 14
    Dernier message: 24/10/2006, 07h51
  5. [VBA-E]Insérer des autotext dans Word à partir d'excel
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2006, 16h34

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