macro insertion de paragraphes dans un document word - VB/VBA/VBS - Programmation
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
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  
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
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
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 
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 !! 
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
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 
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
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:
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