Recherche de texte dans word à partir d'excel

bullrot94

XLDnaute Nouveau
Bonjour à tous,
Voici mon problème.
J’ai un fichier Excel comportant un lien hypertexte vers un fichier Word.
Je souhaiterais qu’une macro :
- ouvre le fichier Word
- recherche dans ce fichier un mot bien précis (« date d’application »)
- copie un nombre de caractères qui suivent ce mot dans une cellule (dans mon cas C5)
- ferme le fichier Word.
Cette macro me permet de tenir à jour mon fichier Excel, le copier-coller par liaison n’étant pas fiable (lignes amenées à être décalées dans le fichier word).

Je vous remercie d’avance pour votre aide, ci-dessous ma macro qui bugge :

Sub test()

Range("B5").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True


Selection.Find.ClearFormatting
With Selection.Find
.Text = "date d'application"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=4
Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
Selection.Copy
ActiveWindow.Close
Application.Quit

Range("C5").Select
ActiveSheet.Paste

End Sub


Cette macro bugge une fois que la macro commence son travail sur word et plus précisemment à la ligne 3 (Selection.Find.ClearFormatting ).
Voici le message d'erreur :
"Erreur d'excécution 450"
"Nombre d'arguments incorrect ou affectation de propriété incorrect"
 

MichelXld

XLDnaute Barbatruc
Re : Recherche de texte dans word à partir d'excel

bonjour


Voici une procédure qui extrait l'adresse du lien contenu dans la cellule B5, ouvre le document Word et effectue une recherhce pour extraire le terme suivant la chaine "date d'application".


Code:
Dim Cible As String
Dim AppWord As Word.Application
Dim DocWord As Word.Document
Dim CollWord As Word.Words
Dim x As Long

'Récupère l'adresse du lien hypertexte
Cible = Range("B5").Hyperlinks(1).Address

'Ouvre une instance Word
Set AppWord = New Word.Application
AppWord.Visible = True

'Ouvre le document Word
Set DocWord = AppWord.Documents.Open(Cible)
Set CollWord = DocWord.Content.Words

'Boucle sur les mots du document
For x = 1 To CollWord.Count - 2
    
    If InStr(1, CollWord(x) & CollWord(x + 1), _
        "date d’application") > 0 Then MsgBox CollWord(x + 2)
Next

'DocWord.Close True
'Set DocWord = Nothing
'AppWord.Quit
'Set AppWord = Nothing



bonne journée
michel
Microsoft Excel MVP
 

Catrice

XLDnaute Barbatruc
Re : Recherche de texte dans word à partir d'excel

Bonjour,

Ci-joint un exemple.
Pour fontionner les 2 fichiers doivent etre dans le meme dossier.
Ouvrir le ficheir Excel et cliquer sur le bouton.
 

Pièces jointes

  • Classeur1.zip
    10.7 KB · Affichages: 254
  • Classeur1.zip
    10.7 KB · Affichages: 221
  • Classeur1.zip
    10.7 KB · Affichages: 261

bullrot94

XLDnaute Nouveau
Re : Recherche de texte dans word à partir d'excel

Catrice je viens d'essayer ton test, c'est exactement ce que je veux faire. Malheureusement, dans mon cas, je n'ai pas la possibilité de mettre ces 2 fichiers dans le même dossier. Je suis obligé de fonctionner par liens hypertexte...
 

MichelXld

XLDnaute Barbatruc
Re : Recherche de texte dans word à partir d'excel

bonjour

je viens d'essayer mais ça me marque un message d'erreur à ce niveau :
Code:
Dim AppWord As Word.Applicationavec comme message :"type défini par l'utilisateur non défini"

En complément de la réponde Staple1600, tu dois activer la référence Word :
Dans l'éditeur de macros
Menu Outils
Références
Coche la ligne "Microsoft Word xx.x Object Library"
Clique sur le bouton OK pour valider.


bon après midi
michel
Microsoft Excel MVP
 

Catrice

XLDnaute Barbatruc
Re : Recherche de texte dans word à partir d'excel

Re,

Tu modifies le code avec la ligne : Cible = Range("B5").Hyperlinks(1).Address de MichelXLD et ça devrait fonctionner ...

voir fichier joint.
 

Pièces jointes

  • Classeur1.xls
    28 KB · Affichages: 154
  • Classeur1.xls
    28 KB · Affichages: 147
  • Classeur1.xls
    28 KB · Affichages: 154

bullrot94

XLDnaute Nouveau
Re : Recherche de texte dans word à partir d'excel

J'ai modifié le code avec la ligne : Cible = Range("B5").Hyperlinks(1).Address de MichelXLD mais la macro ne trouve pas la cible. Voici le code :
Code:
Sub Test()
Cible = Range("B5").Hyperlinks(1).Address
Set WordApp = CreateObject("Word.application")
WordApp.Visible = False 'False pour ne pas afficher Word
WordApp.Documents.Open Filename:=Cible
WordApp.Selection.HomeKey Unit:=6
With WordApp.Selection.Find
    .ClearFormatting
    .Text = "date d’application"
End With
WordApp.Selection.Find.Execute
WordApp.Selection.MoveRight Unit:=1, Count:=4 ' Déplacement à G
WordApp.Selection.MoveRight Unit:=1, Count:=9, Extend:=1  'Nombre de caracteres à récupérer

Range("A5") = WordApp.Selection

WordApp.Quit
Set WordApp = Nothing
End Sub
Sub Tot()
Cible = Range("B5").Hyperlinks(1).Address
MsgBox Cible

End Sub

erreur au niveau de [/CODE]WordApp.Documents.Open Filename:=Cible[/CODE]

J'ai aussi repris la macro de michel XLD en y ajoutant word dans les références mais rien n'y fait
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Recherche de texte dans word à partir d'excel

Re,

Chez moi, pour que cela fonctionne, il faut que le chemin du lien HyperText soit Absolu et non pas relafif.
Absolu = C:\MonDossier\Test.doc
Relatif = \..\..\Test.doc

Pour insérer un lien hypertexte Absolu :
Soit tu utilises =LIEN_HYPERTEXTE("C:\Documents and Settings\MonDossier\Mes documents\Test.doc")

Soit dans ton fichier, tu vas dans Fichier/Propriété/Résumé et dans "Répertoire Web" tu mets un espace.
A partir de ce moment les liens insérés dans ton fichier seront absolus.
Cf. https://www.excel-downloads.com/threads/lien-hypertexte-et-recuperation-de-ladresse.78676/ (dernier Post)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 284
Membres
103 170
dernier inscrit
HASSEN@45