Problème de macro et d'importation d'un fichier Word
Problème de macro et d'importation d'un fichier Word - VB/VBA/VBS - Programmation
MarshPosté le 28-04-2015 à 23:47:01
Bonjour
Je précise d'abord que je suis sur mac (pour les chemins d'accès au fichier, etc.)
Mon but est de créer un Userform qui aurait pour but de demander à l'utilisateur si les mots d'une colonne A, importés d'un fichier Word, sont des mots clés, et si tel est le cas, copier ce mot dans la colonne C. Si le mot est de nouveau présent dans la colonne A, il faut alors prendre en compte le fait que l'utilisateur a déjà pris une décision, donc ne pas lui demander si le mot est un mot clé.
J'ai un problème au niveau de ma macro pour importer les mots du fichier word sur la colonne A, j'obtiens le message d'erreur "La méthode "Open" de l'objet "Documents" a échoué." Quand je clique sud déboguage, il surligne en jaune cette ligne : .Documents.Open Filename:="/Users/Projet/VBA/Etapesuivre.docx"
Sub lireDocument()
Dim i, NbreMots As Long Dim WdApp As Word.Application Set WdApp = New Word.Application
With WdApp .Documents.Open Filename:="/Users/Projet/VBA/Etapesuivre.docx" With .Selection .EndKey Unit:=wdStory .TypeParagraph End With .ActiveDocument.Save ' On trouve le nombre de mots NbreMots = .ActiveDocument.Words.Count ' On écrit les mots dans la colonne A For i = 1 To NbreMots Cells(i, 1) = .ActiveDocument.Words(i) Next i .Documents.Close .Application.Quit End With Set WdApp = Nothing End Sub
Pour ce qui est de la suite et de la recherche de mots clé (on doit demander à l'utilisateur pour chaque mot s'ils sont courant ou pas, et ne pas reposer la question pour des mots déjà classés précédemment) , je suis parti dans la direction suivante, mais je me suis perdu et n'arrive pas vraiment à cerner le problème et à aboutir à quelque chose de concret.
Sub Courant() Dim i As Integer Dim j As Integer
i = 1 j = 1
Do While (Cells(i, 1) <> "//" ) If MsgBox("Est-ce un mot courant ?", vbYesNo) = vbYes Then Cells(i, 1).Value = Cells(j, 4) End If If Cells(i, 1).Value = Cells(j, 4) Then j = j + 1 End If i = i + 1 Loop
Marsh Posté le 28-04-2015 à 23:47:01
Bonjour
Je précise d'abord que je suis sur mac (pour les chemins d'accès au fichier, etc.)
Mon but est de créer un Userform qui aurait pour but de demander à l'utilisateur si les mots d'une colonne A, importés d'un fichier Word, sont des mots clés, et si tel est le cas, copier ce mot dans la colonne C. Si le mot est de nouveau présent dans la colonne A, il faut alors prendre en compte le fait que l'utilisateur a déjà pris une décision, donc ne pas lui demander si le mot est un mot clé.
J'ai un problème au niveau de ma macro pour importer les mots du fichier word sur la colonne A, j'obtiens le message d'erreur "La méthode "Open" de l'objet "Documents" a échoué." Quand je clique sud déboguage, il surligne en jaune cette ligne : .Documents.Open Filename:="/Users/Projet/VBA/Etapesuivre.docx"
Sub lireDocument()
Dim i, NbreMots As Long
Dim WdApp As Word.Application
Set WdApp = New Word.Application
With WdApp
.Documents.Open Filename:="/Users/Projet/VBA/Etapesuivre.docx"
With .Selection
.EndKey Unit:=wdStory
.TypeParagraph
End With
.ActiveDocument.Save
' On trouve le nombre de mots
NbreMots = .ActiveDocument.Words.Count
' On écrit les mots dans la colonne A
For i = 1 To NbreMots
Cells(i, 1) = .ActiveDocument.Words(i)
Next i
.Documents.Close
.Application.Quit
End With
Set WdApp = Nothing
End Sub
Pour ce qui est de la suite et de la recherche de mots clé (on doit demander à l'utilisateur pour chaque mot s'ils sont courant ou pas, et ne pas reposer la question pour des mots déjà classés précédemment) , je suis parti dans la direction suivante, mais je me suis perdu et n'arrive pas vraiment à cerner le problème et à aboutir à quelque chose de concret.
Sub Courant()
Dim i As Integer
Dim j As Integer
i = 1
j = 1
Do While (Cells(i, 1) <> "//" )
If MsgBox("Est-ce un mot courant ?", vbYesNo) = vbYes Then Cells(i, 1).Value = Cells(j, 4)
End If
If Cells(i, 1).Value = Cells(j, 4) Then j = j + 1
End If
i = i + 1
Loop
End Sub
Merci beaucoup de votre aide !