Mettre en forme du texte word depuis excel en vba

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 336 fois - Téléchargée 18 fois

Contenu du snippet

Bonjour à tous,
Voilà je butte depuis 5 jours sur une mise en forme de texte de Word depuis Excel vba. Dans mon programme je mets en place dans un document Word en .dot des signets que je fais remplacer par la suite au cours de l'exécution depuis un document excel et ses textbox. Tout cela fonctionne. Le hic, par rapport à l'emplacement d'un signet je veux sélectionner une phrase bien précise dans le document word, et barrer le texte sélectionné (texte barré). Cette partie là ne fonctionne pas du tout. Mon code vient d'une macro faite de word et modifié pour qu'elle fonctionne via excel...Merci à tout ceux qui peuvent m'aider.

Source / Exemple :


Function compterendu()

Dim wordapp As Object ' OUVERTURE DE WORD ET DU FICHIER .DOT PUIS ENREGISTREMENT SOUS UN AUTRE NOM
Dim worddoc As Object
Set wordapp = CreateObject("word.application")
wordapp.Visible = True
wordapp.documents.Add template:="C:\Bureau\HYMENOPTERE\Compte-rendu hymenopteres.dot", newtemplate:=False, documenttype:=0

wordapp.ActiveDocument.SaveAs "C:\Bureau\HYMENOPTERE\guepe" & Format(Date, "yymmdd ") & Format(Time, "hhmm") & ".doc"

'REMPLACE LES SIGNETS DANS WORD PAR LES VALEURS TEXTBOX...
wordapp.ActiveDocument.Bookmarks("crss").Range.Text = Usfguepe.Label7
wordapp.ActiveDocument.Bookmarks("date").Range.Text = Usfguepe.TextBox1.Value
wordapp.ActiveDocument.Bookmarks("requerant").Range.Text = Usfguepe.TextBox4.Value
wordapp.ActiveDocument.Bookmarks("adresse").Range.Text = Usfguepe.TextBox3.Value
wordapp.ActiveDocument.Bookmarks("commune").Range.Text = Usfguepe.ComboBox1.Value
wordapp.ActiveDocument.Bookmarks("agres").Range.Text = Usfguepe.Label10
     
'Le bug commence ici***
wordapp.ActiveDocument.Bookmarks("deux").Select
     wordapp.ActiveDocument.Bookmarks.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
     Selection.MoveRight Unit:=wdWord, Count:=9, Extend:=wdExtend
     wordapp.ActiveDocument.Bookmarks.Selection.Font.Strikethrough = wdToggle

End function

A voir également

Ajouter un commentaire

Commentaires

mimiZanzan
Messages postés
309
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017
-
Salut phanoulevoyou,

Je ne suis pas expert en VBA Word, mais je viens d'essayer ceci qui marche dans Word et qui devrait te convenir:
wordapp.ActiveDocument.Bookmarks(deux").Select
Selection.Font.StrikeThrough = True
Mais ca me parait trop simple...
Cdt
phanoulevoyou
Messages postés
11
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
28 octobre 2012
-
Salut MIMIZANZAN,

bon tu m'as éclairé dans la solution de mon projet et j'ai maintenant la solution.
Donc j'ai repris la partie du bout de programmation que tu m'as donné,
Selection.Font.StrikeThrough = True
en le mettant directement cela ne fonctionnait toujours pas il manquait
wordapp.Selection.Font.StrikeThrough = True
ce bout de code met en forme la partie du signet sous Word en texte barré,
ensuite j'insère mon texte venant d'une textbox...
wordapp.activedocument.bookmarks("un").Range.Text = Usfguepe.OptionButton6.Caption
et voilà le tour est joué
je te remercie beaucoup tu m'as bien aidé MIMIZANZAN...
mimiZanzan
Messages postés
309
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017
-
phanoulevoyou,

Evidemment, j'avais oublié l'objet wordapp puique tu appelles Word de Excel...
Une petite remarque: il est encore plus simple de traiter Word sous Excel avec une seule ligne:

Dim worddoc As New Word.Application

A condition d'ajouter la référence à "Microsoft 11.0 (ou 12.0) Object Library" avec le menu VBA Outil/Références de Excel.
L'avantage, c'est que tu disposes directement des propriétés et méthodes liées à worddoc. (en tapant un point à la fin).
Ravi de t'avoir aidé.
Cdt
mimiZanzan
Messages postés
309
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017
-
phanoulevoyou,

Excuse, c'est la référence Microsoft Word 11.0 (ou 12.0) qu'il faut ajouter!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.