remplacer un chiffre

C@thy

XLDnaute Barbatruc
bonjour le forum:),

je cherche à remplacer dans un document un nombre par un autre, trouvé dans une cellule d'excel.
j'ai écrit le code suivant : (je suis sous mso 2010 mais je joins les fichiers en 2003 pour une plus large lecture)
Code:
'IMPORTANT!! Cocher la référence Microsoft Word x.x Object Library dans le menu Outils, Références...
Sub OuvrirFichierDoc()
Dim zedate As Date
Dim wrdAppli As New Word.Application
Dim Doc As Word.Document
Dim chemin As Stringchemin = ThisWorkbook.Path
wrdAppli.Visible = True
zedate = CDate("29/03/2013")
Set a = Range("A5:A" & Range("A1048576").End(xlUp).Row)b = CDbl(zedate)
c = Application.Match(b, a, 0)
ligdate = a(c).Row
'dernière colonne
If Range("F" & ligdate).Value > 0 Then  'je récupère le contenu de ma cellule
'si le nombre est positif j'ouvre le fichier verse sinon j'ouvre le fichier recoit
  Set Doc = wrdAppli.Documents.Open(chemin & "\" & "NivIEDOMverse.docx")
       wrdAppli.Selection.HomeKey Unit:=wdStory
 For i = 1 To 2
       With wrdAppli.Selection.Find
        .ClearFormatting
               .Execute FindText:="à l'IEDOM au nom du SCBCM MINEFI en date d'opération du", Format:=True, Forward:=True
        If .Found = True Then
            wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=5 ', 'Extend:=wdExtend
wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
        End If
    End With
Next i
Else
   Set Doc = wrdAppli.Documents.Open(chemin & "\" & "NivIEDOMreçoit.docx")
   'traitement Recoit... même punition
End If
End Sub
Je ne suis malheureusement pas trop familiarisée avec word.
j'ai un petit souci pour remplacer mon nombre :
d'abord le sélectionner (il y a des espaces, donc ça fait plusieurs mots...)
puis mettre le nombre de ma cellule excel à la place.

(A priori, je n'ai pas à changer la date, elle se met automatiquement à la date du jour, mais je ne sais plus comment on voit les champs)
Edit : j'ai trouvé comment on fait sous 2010, c'est dans les options...
Pourriez-vous me donner un petit coup de main pour remplacer mon nombre?

En vous remerciant,

C@thy
 

Pièces jointes

  • NivIEDOMreçoit.DOC
    85.5 KB · Affichages: 132
  • NivIEDOMverse.DOC
    82 KB · Affichages: 156
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : remplacer un chiffre

En fait, je viens de me rendre compte que j'ai peut-être compliqué la chose:eek:, on pouvait chercher le 2ème champ date, et le 3ème,
mais bon, ça marche...:rolleyes:

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : remplacer un chiffre

Bon, j'avance à petits pas sur le sujet...:rolleyes:

voici ce que j'ai pu écrire sur un fichier test avec la date du jour en A2 et le montant en B2 :
Code:
'IMPORTANT!! Cocher la référence Microsoft Word x.x Object Library dans le menu Outils, Références...
Sub OuvrirFichierDocTEST()
Dim zedate As Date
Dim wrdAppli As New Word.Application
Dim Doc As Word.Document
Dim chemin As String
Dim montant
chemin = ThisWorkbook.Path
wrdAppli.Visible = True
zedate = Date
Set A = Range("A2:A" & Range("A1048576").End(xlUp).Row)
B = CDbl(zedate)
c = Application.Match(B, A, 0)
ligdate = A(c).Row
montant = Format(Range("B" & ligdate), "#,##0.00")
If montant > 0 Then  'je récupère le contenu de ma cellule
'si le nombre est positif j'ouvre le fichier verse sinon j'ouvre le fichier recoit
  Set Doc = wrdAppli.Documents.Open(chemin & "\" & "NivIEDOMverse.doc")
       wrdAppli.Selection.HomeKey Unit:=wdStory
       With wrdAppli.Selection.Find
        .ClearFormatting
        .Execute FindText:="à l'IEDOM au nom du SCBCM MINEFI en date d'opération du", Format:=True, Forward:=True
         End With
         If wrdAppli.Selection.Find.Found = True Then
         wrdAppli.Selection.Collapse Direction:=wdCollapseEnd
            For i = 1 To 2
            With wrdAppli.Selection.Find
               .ClearFormatting
               .Execute FindText:="pour  ", Format:=True, Forward:=True
         End With
         If wrdAppli.Selection.Find.Found = True Then
          wrdAppli.Selection.Collapse Direction:=wdCollapseEnd
          'wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdMove
               wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
               While wrdAppli.Selection <> "€"
                 'wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
                 wrdAppli.Selection.Delete
               Wend
         End If
 wrdAppli.Selection.TypeText Text:=montant
        Next i
End If
GoTo fin
Else
   Set Doc = wrdAppli.Documents.Open(chemin & "\" & "NivIEDOMreçoit.doc")
   'traitement Recoit... même punition
   montant = -montant
   For i = 1 To 2
            With wrdAppli.Selection.Find
               .ClearFormatting
               .Execute FindText:="pour  ", Format:=True, Forward:=True
         End With
         If wrdAppli.Selection.Find.Found = True Then
          wrdAppli.Selection.Collapse Direction:=wdCollapseEnd
          'wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdMove
               wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
               While wrdAppli.Selection <> "€"
                 'wrdAppli.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
                 wrdAppli.Selection.Delete
               Wend
         End If
         
 wrdAppli.Selection.TypeText Text:=montant
 
        Next i
End If
fin:
Doc.Close True
 ' quitter Word
wrdAppli.Quit
 ' libérer la mémoire
Set wrdAppli = Nothing: Set Doc = Nothing
End Sub
C'est très laborieux, et sans doute pas du tout optimisé, mais je n'ai trouvé que ça...:eek::eek:...

Bizz

C@thy
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 719
Membres
110 551
dernier inscrit
Khyolyanna