Aide pour Commande VBA Excel

Résolu/Fermé
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012 - 26 juil. 2012 à 14:15
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 - 27 juil. 2012 à 11:30
Bonjour,
voila, étant plus que nul en VBA, mais sachant que c'est très utile, ma demande est :

quand je clique sur un bouton (que j'ai inséré au préalable)
il ouvre un fichier .Doc
recherche dans ce fichier doc, la même valeur que dans une cellule d'excel précise
et m'amene à cette endroit.

Merci beaucoup pour votre, dites moi si je n'ai pas été assez clair.
Cordialement.

16 réponses

Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
Modifié par Morgothal le 27/07/2012 à 11:11
Boon j'ai fait moult recherches, moult tests, et définitivement, ça marche chez moi !

Alors on récapète encore une fois, depuis le début :
Dans Excel, on place ceci :
Sub Main() 

valeur = CStr(ActiveWorkbook.ActiveSheet.Range("A1").Value) 

Dim oWdApp As Word.Application 
Set oWdApp = CreateObject("Word.Application") 

With oWdApp 
.Visible = True 
.Documents.Open ("C:\Documents and Settings\user\Bureau\TEST.doc") 
.Application.Run "recherche", valeur 
End With 

Set oWdApp = Nothing 

End Sub


Dans Word on place ceci :
Sub recherche(param As String) 
    Selection.Find.ClearFormatting 
    With Selection.Find 
        .Text = param 
        .Replacement.Text = "" 
        .Forward = True 
        .Wrap = wdFindContinue 
        .Format = False 
        .MatchCase = False 
        .MatchWholeWord = False 
        .MatchWildcards = False 
        .MatchSoundsLike = False 
        .MatchAllWordForms = False 
    End With 
    Selection.Find.Execute 

End Sub

De cette manière, on peut ouvrir le Word sans forcément déclencher la recherche automatique à l'ouverture :)
On associe la macro Excel au bouton, et ça marche excellement bien chez moi :)

Je reste à dispo si tu as des problèmes ^^
-------------------
Cordialement,
Clément
1
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
26 juil. 2012 à 15:01
Up ?
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
26 juil. 2012 à 15:30
Bonjour,
Pour ouvrir un fichier Word :
Sub ouvrir_word()

Dim appWrd As Word.Application
Dim DocWord As Word.Document
Set appWrd = Nothing
Set appWrd = CreateObject("Word.Application")
appWrd.Visible = True
appWrd.Documents.Open ("C:\Documents and Settings\user\Bureau\fichier.doc")
Set appWrd = Nothing
Set DocWord = Nothing

End Sub

Ensuite pour effectuer une recherche directement, peut-être dans une macro qui s'exécute à l'ouverture, avec :
Private Sub Document_Open()
'la code de la recherche ici
End Sub

Et la recherche qui va avec :
 Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "RECHERCHE ICI"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute

Pour la recherche automatique, peut-être qu'en associant la valeur cherchée dans une variable globale sous Excel, on peut l'utiliser dans la macro de recherche Word, mais je ne connaît pas du tout les subtilités du VBA Word pour avancer plus loin ...
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
26 juil. 2012 à 15:47
merci beaucoup de ta réponse ^^
mais comme je l'expliquer je ne suis pas très doué, et je voulais savoir si les 2 derniers morceaux de code je devais les mettre dans Word ou excel ?

merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
26 juil. 2012 à 15:55
Les deux dernières parties de codes sont dans Word, mais je ne sais absolument pas si ça peut marcher ou comment est-ce que ça peut marcher :) c'est une idée pour te guider plus loin...
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
26 juil. 2012 à 15:57
Merci encore, je test tout sa tout de suite.

Encore merci.
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
26 juil. 2012 à 16:23
je n'arrive pas a faire en sorte que la macro démarre quand le doc s'ouvre
ou alors elle ne trouve rien ...
faudrai t'il mettre la valeur de ma cellule dans une variable word et lui faire chercher cette variable .?

si oui, comment la mettre en variable et comment et ou inscrire tout cela ?
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
26 juil. 2012 à 16:25
A l'ouverture d'un fichier Word, ce code fonctionne pourtant :
Private Sub Document_Open()
MsgBox "test"
End Sub

Il faut bien le placer dans:
Project (NOMDUDOC)>Microsoft Word Objects>ThisDocument
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
26 juil. 2012 à 16:33
il y est bien, c'est qu'elle tourne dans le vide je crois bien.

.Text = "RECHERCHE ICI"

a la place de ce qu'il y a ci dessus j'ai "'C:\dossier\[classeur.xls]Feuil7'!$P$2"
et je pense qu'il va pas voir la valeur de la cellule mais qu'il recherche textuellement le texte...

comment faire .?
Merci
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
26 juil. 2012 à 16:56
Youhouu ça marche !
Ce code dans Word:
Private Sub Document_Open()

    Dim xlapp As Object, reponse As String
    Set xlapp = CreateObject("Excel.application")

xlapp.Visible = False
xlapp.Workbooks.Open "C:\Documents and Settings\user\Bureau\DocExcel.xls"
reponse = xlapp.ActiveWorkbook.Sheets("Feuil1").Range("a1").Value

xlapp.Visible = True
xlapp.Quit
Set xlapp = Nothing

   ' MsgBox reponse
    
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = reponse
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 08:40
snif j'obtien une erreur moi, avec cette ligne :

reponse = xlapp.ActiveWorkbook.Sheets("Feuil1").Range("a1").Value

il me dit "erreur d'exécution '9': l'indice n'appartient pas à la sélection.

Mais quesque cela veut il bien vouloir dire .?
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 08:57
Bonjour !
ça veut dire que l'indice spécifié en paramètre dans cette ligne n'existe pas dans ton classeur...
A priori ça doit être la "feuil1".

Cette ligne permet mettre dans la variable "reponse" la valeur que tu cherches dans le doc Word :
reponse = xlapp.ActiveWorkbook.Sheets("Feuil1").Range("a1").Value 
Ici la cellule A1 de la feuille Feuil1
Il faut adapter cette ligne à ton classeur.
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 09:04
eh bien j'obtien cette erreur après l'avoir adapté

reponse = xlapp.ActiveWorkbook.Sheets("Feuil6").Range("E4").Value

je sais vraiment pas comment corrigé se truc ...
merci beaucoup de ton aide
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 09:06
Quelle est l'erreur ? La même ? L'indice n'appartient toujours pas à la sélection ?
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 09:06
oui
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 09:08
et pourtant c'est sur et certain que dans ma feuil6 (j'ai pas précisé mais je l'ai renommé) j'ai bien dans ma cellule E4 ce que je veut rechercher dans mon word ( la valeur : 15209297)
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 09:17
Si on récapète :
Dans Excel, tu as inséré ce code, associé à un bouton :
Sub ouvrir_word()

Dim appWrd As Word.Application
Dim DocWord As Word.Document
Set appWrd = Nothing
Set appWrd = CreateObject("Word.Application")
appWrd.Visible = True
appWrd.Documents.Open ("C:\Documents and Settings\user\Bureau\fichier.doc")
Set appWrd = Nothing
Set DocWord = Nothing

End Sub


Puis dans Word, dans la feuille "ThisDocument" :
Private Sub Document_Open()

    Dim xlapp As Object, reponse As String
    Set xlapp = CreateObject("Excel.application")

xlapp.Visible = False
xlapp.Workbooks.Open ("C:\Documents and Settings\user\Bureau\DocExcel.xls")
reponse = xlapp.ActiveWorkbook.Sheets("Feuil1").Range("a1").Value

xlapp.Visible = True
xlapp.Quit
Set xlapp = Nothing

    
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = reponse
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub

Les deux fichiers Excel et Word étant sur le bureau, tu peux changer le chemin d'accès sur ces lignes :
appWrd.Documents.Open ("C:\Documents and Settings\user\Bureau\fichier.doc")
xlapp.Workbooks.Open "(C:\Documents and Settings\user\Bureau\DocExcel.xls")


Fais moi savoir si tu as encore la même erreur après avoir vérifé tout ça ...
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 09:36
eh bien enfaite ... dans le 1° morceau de code, celui pour Excel, j'ai une erreur, il me dit : "Erreur de compilation : Type défini par l'utilisateur non défini"

donc ... j'ai enlevé ces 2 lignes et sa fonctionne

Dim appWrd As Word.Application
Dim DocWord As Word.Document

et pour conclure, toujours la meme erreur sur cette ligne

reponse = xlapp.ActiveWorkbook.Sheets("Feuil6").Range("e4").Value
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 09:53
Il ne faut pas enlever ces lignes !
Il faut permettre au VBA Excel d'utiliser des objets VBA Word. Pour cela : Dans l'éditeur VBA, menu Outils>Références et cocher "Microsoft Word 12.0 Object Library"
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 09:57
wouhou ^^ sa marche
bon j'avou j'ai merdouillé grave

mais y'aurai pas une case a cocher alors dans le VBA word ?
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 09:58
Une case à cocher ?
Je pensais qu'il fallait un bouton Excel, qui ouvre un Word et cherche automatiquement dans ce Word une valeur d'une cellule Excel...

Pourquoi une case à cocher ?
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 10:02
ah nn nn ^^ ne t'en fait pas tu pense bien ^^
je parle d'une case a cocher dans le menu référence pour plus avoir l'autre erreur
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 10:03
Aaah oui pardon je ne l'ai pas précisé, dans le VBE Word, même menu, "Microsoft Excel 12.0 Object Library" à cocher...
0
voulka Messages postés 15 Date d'inscription jeudi 26 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
Modifié par voulka le 27/07/2012 à 11:22
tonnerre de Zeus, je vais pas te mentir mais je commencer a désépéré, mais là non di diou comment je suis content, excuse moi mais je te tutoye, mais tu est génial, t'es un pro ! merci merci merci c'est vraiment nickel.

merci infiniment.
0
Morgothal Messages postés 1235 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 179
27 juil. 2012 à 11:30
Je t'excuses, je t'ai tutoyé tout le long aussi ;) Pis je suis pas très vieux alors permets-toi donc
0