macro insertion de paragraphes dans un document word

macro insertion de paragraphes dans un document word - VB/VBA/VBS - Programmation

Marsh Posté le 10-11-2006 à 09:29:26    

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
Reply

Marsh Posté le 10-11-2006 à 09:29:26   

Reply

Marsh Posté le 10-11-2006 à 15:34:25    

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
Reply

Marsh Posté le 13-11-2006 à 09:49:33    

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
Reply

Marsh Posté le 13-11-2006 à 14:42:11    

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

Reply

Marsh Posté le 13-11-2006 à 15:40:23    

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

Reply

Marsh Posté le 13-11-2006 à 16:37:46    

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

Reply

Marsh Posté le 13-11-2006 à 17:07:58    

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 !! :)

Reply

Marsh Posté le 13-11-2006 à 17:23:54    

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
Reply

Marsh Posté le 13-11-2006 à 17:46:40    

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 :)

Reply

Marsh Posté le 13-11-2006 à 18:15:53    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed