VBA Zone de texte dans en tête
Fermé
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
-
10 août 2011 à 09:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 août 2011 à 12:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 août 2011 à 12:11
A voir également:
- Msotextbox
- Zone telechargement - Accueil - Outils
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Un mot est caché dans l'en-tête du document. pour le trouver, modifiez sa couleur. ✓ - Forum Word
7 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 août 2011 à 09:49
10 août 2011 à 09:49
Bonjour,
Effectivement les zones de texte sont bien des "Shapes" (cochonnerie de shapes!!! ;-))
Pour boucler sur tes shapes :
Si tu veux en connaitre davantage sur la gestion de ces sales bêtes : Voici un très bon tuto très complet
Effectivement les zones de texte sont bien des "Shapes" (cochonnerie de shapes!!! ;-))
Pour boucler sur tes shapes :
Dim Obj As Shape For Each Obj In ActiveSheet.Shapes If Obj.Type = msoTextBox Then MsgBox "En v'la une!!!" End If Next Obj
Si tu veux en connaitre davantage sur la gestion de ces sales bêtes : Voici un très bon tuto très complet
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
10 août 2011 à 09:47
10 août 2011 à 09:47
Bonjour,
Aurais-tu un peu plus de précisions stp ? Dans un userform? Pour des objets sur une feuille?
Aurais-tu un peu plus de précisions stp ? Dans un userform? Pour des objets sur une feuille?
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
10 août 2011 à 09:55
10 août 2011 à 09:55
merkiiiiiii,
bon je teste sa et je reviens vers vous.
pour répondre à Morgothal,
je suis sur VBA d'excel et la macro doit traiter le texte de word.
il s'agit d'arriver à modifier du texte situé dans une zone de texte dans le header et/ou footer du doc word (sa remplace bien partout sauf dans la zone de texte du header et footer).
bon je teste sa et je reviens vers vous.
pour répondre à Morgothal,
je suis sur VBA d'excel et la macro doit traiter le texte de word.
il s'agit d'arriver à modifier du texte situé dans une zone de texte dans le header et/ou footer du doc word (sa remplace bien partout sauf dans la zone de texte du header et footer).
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
10 août 2011 à 10:31
10 août 2011 à 10:31
re-bonjour,
J'ai essayé et sa boucle bien sur tous les shapes (j'ai mis Obj as Variant et ActiveDocument pour Word).
Mais comment agir sur le texte du shape (j'ai essayé text / Obj.TypeText Text:="y sans effet!!!).
merci encore pour vos réponses.
J'ai essayé et sa boucle bien sur tous les shapes (j'ai mis Obj as Variant et ActiveDocument pour Word).
Mais comment agir sur le texte du shape (j'ai essayé text / Obj.TypeText Text:="y sans effet!!!).
merci encore pour vos réponses.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 août 2011 à 10:35
10 août 2011 à 10:35
mmmmmm!! Toi tu veux du "tout-cuit"..... Tu n'as pas été consulter mon lien...
Tu me feras trois pâtés et deux courgettes farcies en pénitence...
Essaye quelque chose comme :
Tu me feras trois pâtés et deux courgettes farcies en pénitence...
Essaye quelque chose comme :
Sub test() Dim Obj As Shape For Each Obj In ActiveSheet.Shapes If Obj.Type = msoTextBox Then Obj.Select With Selection .Characters.Text = "ICI VIENDRA" & Chr(10) & "S'INSCRIRE VOTRE MESSAGE" End With End If Next Obj End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
10 août 2011 à 10:59
10 août 2011 à 10:59
oui Msieur,
ma pénitence sera hardue...
merci pour tout...
bon sa marche pas encore tout a fait correctement mais je bidouille pour essayer que cela marche.
je reviens vite !
ma pénitence sera hardue...
merci pour tout...
bon sa marche pas encore tout a fait correctement mais je bidouille pour essayer que cela marche.
je reviens vite !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 10/08/2011 à 11:09
Modifié par pijaku le 10/08/2011 à 11:09
N'hésite pas à poser toutes tes questions...
Par exemple, si tu as, dans ta zone, comme texte : "ICI VIENDRA S'INSCRIRE VOTRE MESSAGE" et que tu souhaites remplacer "MESSAGE" par "TEXTE" tu peux utiliser la méthode Replace en passant par une variable de type string, comme ceci:
Syntaxe :
Replace(dans quoi, mot à remplacer, mot de remplacement)
Par exemple, si tu as, dans ta zone, comme texte : "ICI VIENDRA S'INSCRIRE VOTRE MESSAGE" et que tu souhaites remplacer "MESSAGE" par "TEXTE" tu peux utiliser la méthode Replace en passant par une variable de type string, comme ceci:
Sub test() Dim Obj As Shape Dim Contenu As String For Each Obj In ActiveSheet.Shapes If Obj.Type = msoTextBox Then Obj.Select With Selection Contenu = Replace(.Characters.Text, "MESSAGE", "TEXTE") .Characters.Text = Contenu End With End If Next Obj End Sub
Syntaxe :
Replace(dans quoi, mot à remplacer, mot de remplacement)
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
10 août 2011 à 11:36
10 août 2011 à 11:36
ok merci,
j'ai déjà fait la fonction Replace.
Le grooooooos problème c'est que ma zone de texte (situé dans le header d'un word n'est pas reconnue !!!!!). c'est fou sa !
j'essaie d'activer les header/footer et de compter le nombre de shape et c'est égal à 0 !!! (alors qu'il y en a bien !!)
la macro ci dessous
Dim DocWord As New Word.Application
Dim monTexte As Variant
Dim Obj As Shape
Dim TexteShapeAmodifier As String
DocWord.Documents.Open NomFichier & "/" & Repertoire
DocWord.Visible = True
DocWord.Activate
Word.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
MsgBox Word.ActiveWindow.Document.Sections(1).Headers(wdHeaderFooterPrimary).Shapes.Count
For Each Obj In Word.ActiveDocument.Sections(1).Headers(1).Shapes
If Obj.Type = msoTextBox Then
TexteShapeAmodifier = Obj.TextFrame.TextRange.Text
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB111", "MTB")
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB 111", "MTB")
Obj.TextFrame.TextRange.Text = TexteShapeAmodifier
End If
Next Obj
j'ai déjà fait la fonction Replace.
Le grooooooos problème c'est que ma zone de texte (situé dans le header d'un word n'est pas reconnue !!!!!). c'est fou sa !
j'essaie d'activer les header/footer et de compter le nombre de shape et c'est égal à 0 !!! (alors qu'il y en a bien !!)
la macro ci dessous
Dim DocWord As New Word.Application
Dim monTexte As Variant
Dim Obj As Shape
Dim TexteShapeAmodifier As String
DocWord.Documents.Open NomFichier & "/" & Repertoire
DocWord.Visible = True
DocWord.Activate
Word.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
MsgBox Word.ActiveWindow.Document.Sections(1).Headers(wdHeaderFooterPrimary).Shapes.Count
For Each Obj In Word.ActiveDocument.Sections(1).Headers(1).Shapes
If Obj.Type = msoTextBox Then
TexteShapeAmodifier = Obj.TextFrame.TextRange.Text
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB111", "MTB")
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB 111", "MTB")
Obj.TextFrame.TextRange.Text = TexteShapeAmodifier
End If
Next Obj
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 août 2011 à 12:11
10 août 2011 à 12:11
Peut être que ta zone de texte est un "Canvas"...
Voir la méthode AddCanvas sur le site de Microsoft
Je ne suis pas un spécialiste VBA Word et donc je ne sais pas te répondre correctement.
Cependant, s'il s'agit d'un Canvas, la réponse se trouve dans le .Anchor (texte du canvas).
Bonne suite
Voir la méthode AddCanvas sur le site de Microsoft
Je ne suis pas un spécialiste VBA Word et donc je ne sais pas te répondre correctement.
Cependant, s'il s'agit d'un Canvas, la réponse se trouve dans le .Anchor (texte du canvas).
Bonne suite
wiidle
Messages postés
16
Date d'inscription
mardi 3 mai 2011
Statut
Membre
Dernière intervention
5 octobre 2011
10 août 2011 à 11:53
10 août 2011 à 11:53
yipeeeeeeeeee enfin !!!! sa compte mes zone de texte.
mais j'ai encore un ptit soucis (t'arrive à faire quelque chose et tu te redns compte que ce n'ets toujours pas fini).
j'ai deux zone de texte qui sont groupées et donc il n'en compte qu'une et ne modifie pas.
comment faire pour dissocier dans le header ?
je mets la macro ci-dessous si cela peut servir à quelqu'un
Dim DocWord As New Word.Application
Dim monTexte As Variant
Dim Obj As Word.Shape
Dim TexteShapeAmodifier As String
DocWord.Documents.Open NomFichier & "/" & Repertoire
DocWord.Visible = True
DocWord.Activate
Word.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
'pour contrôler le nombre de zone du header
'MsgBox Word.ActiveWindow.Document.Sections(1).Headers(1).Shapes.Count
For Each Obj In Word.ActiveWindow.Document.Sections(1).Headers(1).Shapes
If Obj.Type = msoTextBox Then
TexteShapeAmodifier = Obj.TextFrame.TextRange.Text
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB111", "MTB")
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB 111", "MTB")
End If
Next Obj
en tout cas merci à vous (et surtout à pijaku qui a assuré).
mais j'ai encore un ptit soucis (t'arrive à faire quelque chose et tu te redns compte que ce n'ets toujours pas fini).
j'ai deux zone de texte qui sont groupées et donc il n'en compte qu'une et ne modifie pas.
comment faire pour dissocier dans le header ?
je mets la macro ci-dessous si cela peut servir à quelqu'un
Dim DocWord As New Word.Application
Dim monTexte As Variant
Dim Obj As Word.Shape
Dim TexteShapeAmodifier As String
DocWord.Documents.Open NomFichier & "/" & Repertoire
DocWord.Visible = True
DocWord.Activate
Word.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
'pour contrôler le nombre de zone du header
'MsgBox Word.ActiveWindow.Document.Sections(1).Headers(1).Shapes.Count
For Each Obj In Word.ActiveWindow.Document.Sections(1).Headers(1).Shapes
If Obj.Type = msoTextBox Then
TexteShapeAmodifier = Obj.TextFrame.TextRange.Text
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB111", "MTB")
TexteShapeAmodifier = Replace(TexteShapeAmodifier, "MTB 111", "MTB")
End If
Next Obj
en tout cas merci à vous (et surtout à pijaku qui a assuré).