Prob de placement dans WORD par VB

Seifer1 Messages postés 15 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 30 juillet 2003 - 18 juil. 2003 à 17:05
rachidos001 Messages postés 44 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 23 mars 2006 - 24 mai 2005 à 12:56
Slt tlm,

voilà je fais un prog permettant de modifier du texte dans un doc word a partir de vb,voilà mon code :

Private Sub Command2_Click()
Dim Apw As Object
Set Apw = CreateObject("Word.Application")
Apw.Documents.Open filename:=Label1.Caption, ReadOnly:=True '<= nom de doc
Apw.Visible = True
Set ww = Apw.activedocument

Apw.Selection.Find.ClearFormatting
'selectionne le mot #nom#, et remplace par ctlSUJET.Text
With Apw.Selection.Find
.Text = "#nom#"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Apw.Selection.Find.Execute
Apw.Selection.TypeText Text:=ctlsujet.Text
Wend

'selectionne le mot #prenom#, et remplace par ctlAUTRE.Text
Apw.Selection.Find.ClearFormatting
With Apw.Selection.Find
.Text = "#prenom#"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Apw.Selection.Find.Execute
Apw.Selection.TypeText Text:=CtlAUTRE.Text
Wend

End Sub

J'arrive a modifier les premieres donnée,c'est a dire #nom# mais par contre apres pour le #prenom# il ne modifie rien.Je crois savoir d'ou vient le prob, c'est que lorsque j'ai fini ma premiere recherche et modif,et bien le curseur se trouve a la fin de mon doc et donc quand il fait la 2° recherche il ne trouve plus rien.
J'ai fouiller sur le forum et j'ai decouvert que l'on pouvait replacer le curseur grace a l'APi setcursorpos, mais j'arrive pas a la faire marché dans word.
Je met entre les 2 recherches se code :

Dim x As Long, y As Long
x = CLng(5)
y = CLng(5)
SetCursorPos x, y

avec dans un module :

Declare Function SetCursorPos Lib "user32" ( _
ByVal x As Long, ByVal y As Long) As Long

et je crois que le curseur se deplace sur ma form vb et non sur word, je voudrais pouvoir le deplacer sur word.En fait je voudrais, dans word, revenir au debut de mon doc juste avant la 2° recherche, de cette facon il trouvera les #prenom# a modif.

Si qulqu'un pouvait m'aider ca serait cool :)

Un grand merci d'avance pour votre aide ;) ;)

>:) @pluch >:)

-----------------------------------------
L'amitié se nourrit de communication

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 juil. 2003 à 17:29
SetCursorPos deplace la MOUSE et non le CARET de selection.
BruNews, ciao...
0
Seifer1 Messages postés 15 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 30 juillet 2003
30 juil. 2003 à 10:19
Bon g trouvé une solution a mon prob
g utilisé :
Apw.Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:=""

donc mon code entier ca donne :

Private Sub Command2_Click()
'''-----si le label1 n'est pas vide,cad qu'un doc est séléctionné-----''''
If Label1.Caption <> "" Then
If CTLNOM.Text <> "" Then
Dim Apw As Object
'''-----Objet Word.Application-----''''
Set Apw = CreateObject("Word.Application")
Apw.Documents.Open filename:=Label1.Caption, ReadOnly:=True '<= nom de doc
Apw.Visible = True
Set ww = Apw.activedocument
ww.BuiltinDocumentProperties.Item("tittle").Value = CTLNOM.Text
If ctlsujet.Text <> "" Then
ww.BuiltinDocumentProperties.Item("subject").Value = ctlsujet.Text
End If
If CtlAUTRE.Text <> "" Then
ww.BuiltinDocumentProperties.Item("commentary").Value = CtlAUTRE.Text
End If
'''-----séléctionne le mot #nom#, et remplace par CTLNomClt.Text-----''''
With Apw.Selection.Find
.Text = "#nom#"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Apw.Selection.Find.Execute
Apw.Selection.TypeText Text:=CTLNomClt.Text
Wend

''''-----retour au début du document-----''''
Apw.Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:=""

''''-----séléctionne le mot #prenom#, et remplace par CTLPrenomClt.Text-----''''
Apw.Selection.Find.ClearFormatting
With Apw.Selection.Find
.Text = "#prenom#"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Apw.Selection.Find.Execute
Apw.Selection.TypeText Text:=CTLPrenomClt.Text
Wend

''''-----retour au début du document-----''''
Apw.Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:=""
TYPE_DOC.Caption = "modele"
Set Apw = Nothing
Else
REPONSE = MsgBox("Veuillez indiquer un nom de document", vbOKOnly, "Aucun nom")
Else
REPONSE = MsgBox("Veuillez séléctionner un document", vbOKOnly, "Attention")
End If
End Sub

Voili voilou, ca pourra pi etre servir a kelkes personnes on sait jamais.
En tout cas merci de votre aide a tous :)

L'amitié se nourrit de communication
0
rachidos001 Messages postés 44 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 23 mars 2006
24 mai 2005 à 12:56
bonjour
je crois quej'ai le meme problem
c'est que je sais pas comment proceder,mon prob c'est que j'ai deja un imprimée administratif e t je dois f un code qui m'aide a remplir ce formulaire a partir d'une interface vb6 sans avoir un decalage sur l'imprimée chaque information ds une place precise
j'ai pensé a utiliser word pour resoudre le prob mais j'arrive pas a trouver un code qui peux m'aider
ce que je veux c'est taper les info sur l'interface ,les enregistrer ds la base(facile), les visualiser sur un doc word puis les imprimer sur le formulaire par une imprimente matricielle (l'imprimer et deja tracer et chaque information doit etre afficher ds ca place consacré)
je suis un debutant en informatique et en vb6 ,j'accepte volantier toutes informations ou conseils
merci
raz_aziz@yahoo.com
0
Rejoignez-nous