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