Seifer1
Messages postés15Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention30 juillet 2003
-
18 juil. 2003 à 17:05
rachidos001
Messages postés44Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention23 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
Seifer1
Messages postés15Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention30 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 :)
rachidos001
Messages postés44Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention23 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