Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
963 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro insertion de paragraphes dans un document word

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro insertion de paragraphes dans un document word

n°1473314
argy
Posté le 10-11-2006 à 09:29:26  profilanswer
 

salut,
 
j'essaie de créer une macro avec des boutons pour choisir suivant les cas quels paragraphes insérer sous un titre donné (que j'ai repéré avec un signet)
 
pour 2 paragraphes mon code donne ceci:
 

Code :
  1. Private Sub CommandButton3_Click()
  2.         ChangeFileOpenDirectory "C:\ARCHIVES\travail word\essaisousdoc\"
  3.         If ToggleButton17.Value Then
  4.             ActiveDocument.Bookmarks("para" ).Select
  5.             Selection.MoveLeft
  6.             Selection.TypeParagraph
  7.             Selection.InsertFile ("voila.doc" )
  8.         End If
  9.         If ToggleButton18.Value Then
  10.             ActiveDocument.Bookmarks("para" ).Select
  11.             Selection.MoveLeft
  12.             Selection.TypeParagraph
  13.             Selection.InsertFile ("bon.doc" )
  14.         End If
  15.     Unload modes
  16. End Sub


 
en gros je retape a chaque fois la meme chose pour chaque paragraphe ... ce qui fait que le code va devenir très long lorsque je vais augmenter le nombre de paragraphes....
 
est ce qu'il n'y a pas un moyen de faire la meme chose en plus condensé et plus efficace??
(peut etre avec boucles ou autres mais je sais pas m'en servir)
 
merci d'avance


Message édité par argy le 10-11-2006 à 09:31:04
mood
Publicité
Posté le 10-11-2006 à 09:29:26  profilanswer
 

n°1473535
seniorpapo​u
Posté le 10-11-2006 à 15:34:25  profilanswer
 

Bonsoir,
en supposant que tu puisses nommer chaque togglebutton de la façon suivante :     Xbon       Xvoila     Xautrenom..... pour les toggles relatifs à cette fonction voilà une solution non testée:
 
Private Sub CommandButton3_Click()
        ChangeFileOpenDirectory "C:\ARCHIVES\travail word\essaisousdoc\"
For Each cc In ActiveDocument.InlineShapes
lenom = cc.OLEFormat.Object.Name
If Left(lenom, 1) = "X" Then
 if cc.OLEFormat.Object.value = true then
  nomdoc = Right(lenom, Len(lenom) - 1) & ".doc"
  ActiveDocument.Bookmarks("para" ).Select
            Selection.MoveLeft
            Selection.TypeParagraph
            Selection.InsertFile (nomdoc)
  end if
 
End If
Next cc      
   
    Unload modes
End Sub


Message édité par seniorpapou le 10-11-2006 à 15:48:42
n°1474332
argy
Posté le 13-11-2006 à 09:49:33  profilanswer
 

Salut,
 
tout d'abord merci pour ton aide :)
 
Il y a visiblement un petit problème avec le code que tu m'as donné.
Je l'ai recopié tel quel sans rien changer a part les noms de mes toggle boutons pour mettre le X devant.
Lorsque j'execute la macro il me trouve un problème à la ligne
 
"lenom = cc.OLEFormat.Object.Name"
 
le message affiché: "variable objet ou variable de bloc with non définie"
 
est ce que tu saurais comment corriger ce problème??
 
mis a part ca j'ai 2 chtites questions...
 
je crois comprendre a peu pres ce code mais...
 
quelle est la fonction inlineshapes???
qu'est ce que le OLEformat ???? ca sert a quoi ici??
 
merci d'avance  :jap:


Message édité par argy le 13-11-2006 à 09:50:28
n°1474632
seniorpapo​u
Posté le 13-11-2006 à 14:42:11  profilanswer
 

Bonjour,
 
pour avoir des informations sur OLEFormat   et InlineShape, tu les surlignes et tu appuyes sur la touche F1
Dans vba clic sur outils puis références et donnes-nous la liste des références qui sont cochées.
Normalement tu devrais avoir au moins:
Visual Basic for applications
Microsoft word 10.0 object library
Microsoft Form 2.0 object library
Microsoft office 10.0 object library
Ole automation
 
Normalement OLEFormat se trouve dans microsoft Word 10.0
 
Cordialement

n°1474680
argy
Posté le 13-11-2006 à 15:40:23  profilanswer
 

salut,
 
j'avais déja cherché dans l'aide pour OLEformat et InlineShape sans rien trouver
en les surlignant et en appuyant sur F1, je trouve bien ces 2 commandes mais je ne peux pas afficher l'aide (non installée)
 
liste des références cochées:
visual basic for applications
microsoft word 11.0 object library
OLE automation
Normal
microsoft office 11.0 object library
microsoft forms 2.0 object library
 
voila
 
sinon si je comprends bien, cc est une variable dans ton code .... qui devrait representer des togglebutton... est ce qu'il ne faudrait pas la déclarer comme un togglebutton?? est ce que c'est possible??
 
merci d'avance

n°1474718
seniorpapo​u
Posté le 13-11-2006 à 16:37:46  profilanswer
 

Bonsoir,
Dim cc As Word.InlineShape
mais je ne pense pas que cela vienne de cette décaration
Là je suis bloqué, n'ayant pas ta version de word.  
Dans vb regardes dans l'explorateur d'objets si tu trouves OLEFormat  
Si quelqu'un sait, il sera le bienvenu
Cordialement

n°1474750
argy
Posté le 13-11-2006 à 17:07:58  profilanswer
 

effectiment meme avec cette ligne en plus ca ne marche pas
 
En fait il suffisait d'installer le module d'aide correspondant ... j'ai donc pu lire les aides correspondant à OLEFormat et InlineShape.
 
merci quand meme pour ton aide, tu m'as fait avancer !! :)

n°1474774
seniorpapo​u
Posté le 13-11-2006 à 17:23:54  profilanswer
 

Bonsoir,
pour lever un doute sur l'existence d'inshapes d'autre type dans ton document, peux-tu faire un test avec uniquement un ou deux toggles et le bouton de command ?  
si c'était le cas, il faut éviter de traiter les cc dont le type n'est pas wdInlineShapeOLEControlObject
après for each......
if cc.type = wdInlineShapeOLEControlObject then
..
..
..
..
end if
Cordialement


Message édité par seniorpapou le 13-11-2006 à 17:27:21
n°1474785
argy
Posté le 13-11-2006 à 17:46:40  profilanswer
 

j'ai recréé un userform tout simple avec comme tu dis simplement 2 toggle et un command ....
 
je n'ai plus de bug ... mais le fichier ne s'insère toujours pas ... rien ne se passe! je vais revérifier que j'ai tout bien paramétré....
 
c'est vrai que dans mon précédent usereform j'avais toute sortes d'objets: des listbox, des textbox etc... ca aurait pu jouer???
 
merci :)

n°1474798
seniorpapo​u
Posté le 13-11-2006 à 18:15:53  profilanswer
 

Re,re,
Essayes de mettre le if cc.... qui peut éliminer des types qui n'auraient pas d'accès au   .name    d'où le message d'erreur. J'avoue que j'ignore lesquels.
Maintenant, tu peux repèrer les coupables en mettant un msgbox cc.type après le for each cc...
tu verras celui qui fait planter
Je n'ai pas testé l'insertion des paragraphes car je n'ai pas eu le courage de créer un document et le mettre un bookmark "para"
 
Si tu ne t'en sors pas je ferai le test
 
edit: bon, j'ai fait le test et j'insère le contenu du .doc derrière le signet "para" sans pb
Cordialement


Message édité par seniorpapou le 13-11-2006 à 18:31:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro insertion de paragraphes dans un document word

 

Sujets relatifs
lecture doc word sous VBA AccessTeste si une ligne est vide: ds un fichier Word
[VB WORD] selection texte entre parenthèse + grasMacro Word qui enregistre ou je veux
[résolu] Prendre un nom de fichier + répertoire en macro pour excelMalgré le loop, pas moyen de ré-executer la macro?!
Probleme insertion <ul> ds un <div>Tri par insertion ...
VBA Word interdiction creation style paragraphe 
Plus de sujets relatifs à : macro insertion de paragraphes dans un document word


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR