Relever mots-clés de fichiers Word vers un tableau Excel
Fermé
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
-
Modifié par nicolo9 le 14/10/2015 à 12:30
Le Pingou Messages postés 12191 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 novembre 2024 - 13 déc. 2015 à 15:38
Le Pingou Messages postés 12191 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 novembre 2024 - 13 déc. 2015 à 15:38
A voir également:
- Relever mots-clés de fichiers Word vers un tableau Excel
- Tableau word - Guide
- Tableau croisé dynamique - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
- Liste déroulante excel - Guide
12 réponses
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
14 oct. 2015 à 21:37
14 oct. 2015 à 21:37
Bonjour,
Juste au passage, pour Mots_clés_fichier_txt
Vous avez :
Pour
Juste au passage, pour Mots_clés_fichier_txt
Vous avez :
If x = 7 Then Cells(1, 1) = Data'Inscrit Data dans la 1ere case de ton classeur
Pour
Cells( numéro de la ligne du fichier , 4)=DataLe 4 pour la colonne [D]
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
Modifié par Le Pingou le 7/12/2015 à 22:36
Modifié par Le Pingou le 7/12/2015 à 22:36
Bonjour,
Vous cherchez quoi d’autres… !
De plus nous ne savons même pas si la solution proposée pour le mot clé est satisfaisante… !
Salutations.
Le Pingou
Vous cherchez quoi d’autres… !
De plus nous ne savons même pas si la solution proposée pour le mot clé est satisfaisante… !
Salutations.
Le Pingou
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
8 déc. 2015 à 08:47
8 déc. 2015 à 08:47
Bonjour,
Mais si, je vous ai répondu que votre code fonctionnait.
Mais il me faut trouver la même chose mais qui fonctionne pour les fichiers Excel et Word.
Cdt
Mais si, je vous ai répondu que votre code fonctionnait.
Mais il me faut trouver la même chose mais qui fonctionne pour les fichiers Excel et Word.
Cdt
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
8 déc. 2015 à 11:06
8 déc. 2015 à 11:06
Bonjour,
Merci de votre réponse, cette fois c’est clair.
Concernant la suite, je suis obligé de construire un ensemble qui correspond au mieux à vos codes, ce n’est pas simple…. !
Patience.
Merci de votre réponse, cette fois c’est clair.
Concernant la suite, je suis obligé de construire un ensemble qui correspond au mieux à vos codes, ce n’est pas simple…. !
Patience.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
Modifié par Le Pingou le 8/12/2015 à 11:23
Modifié par Le Pingou le 8/12/2015 à 11:23
Bonjour,
Premier point : pouvez-vous préciser le contenu de :
Salutations.
Le Pingou
Premier point : pouvez-vous préciser le contenu de :
path = Range("A1").Value
Salutations.
Le Pingou
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
Modifié par nicolo9 le 8/12/2015 à 11:37
Modifié par nicolo9 le 8/12/2015 à 11:37
path = le dossier à développer par exemple "C:\User\nicolo"
Dès que l'on tape ce path, tout le calcul se fait pour relever tous les dossiers et fichiers contenus dans l'arborescence de ce path. (donc le nom et les types des dossiers/fichiers). Il restent plus qu'à ajouter les mots-clés.
A savoir que dans les fichiers Word et Excel, les mots clés se trouvent sous des noms de signets appelés "Keywords"
Dès que l'on tape ce path, tout le calcul se fait pour relever tous les dossiers et fichiers contenus dans l'arborescence de ce path. (donc le nom et les types des dossiers/fichiers). Il restent plus qu'à ajouter les mots-clés.
A savoir que dans les fichiers Word et Excel, les mots clés se trouvent sous des noms de signets appelés "Keywords"
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
8 déc. 2015 à 21:49
8 déc. 2015 à 21:49
Bonjour,
A savoir que dans les fichiers Word et Excel, les mots clés se trouvent sous des noms de signets appelés "Keywords"
Désolé mais là je ne comprends pas du tout ou les cherchés (signets n’existe pas sous Excel ….ou … !)
A savoir que dans les fichiers Word et Excel, les mots clés se trouvent sous des noms de signets appelés "Keywords"
Désolé mais là je ne comprends pas du tout ou les cherchés (signets n’existe pas sous Excel ….ou … !)
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
Modifié par nicolo9 le 9/12/2015 à 09:03
Modifié par nicolo9 le 9/12/2015 à 09:03
Salut, je vais te montrer en image
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
Modifié par nicolo9 le 9/12/2015 à 09:04
Modifié par nicolo9 le 9/12/2015 à 09:04
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
Modifié par nicolo9 le 9/12/2015 à 09:09
Modifié par nicolo9 le 9/12/2015 à 09:09
Ces deux images sont les pages de garde de tous les fichiers Excel et Word. Ce que je souhaite donc, c'est que dans le fichier que je t'ai envoyé hier, on explique à la macro que pour un fichier Word (exemple du premier tableau : Fichier3.doc), elle aille relever les mots qui se trouvent sous le signet "Keywords", et que pour un fichier Excel (par exemple : Fichier1.xlsx), elle aille copier le contenu de la cellule appelé "Keywords".
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
10 déc. 2015 à 22:26
10 déc. 2015 à 22:26
Bonjour,
Voici ma proposition basé sur mon application virtuel (votre fichier pas disponible…. !):
Dans votre code [Lister_le_contenu] partie ['Relever les fichiers] juste après [myRange.Offset(1, 1).Value = myfile.Type] insére le code suivant pour détecter Excel ou Word et ainsi récupérer les mots clefs :
En plus vous devez insérer les procédures dans un module :
En principe cela fonctionne chez moi.
Voici ma proposition basé sur mon application virtuel (votre fichier pas disponible…. !):
Dans votre code [Lister_le_contenu] partie ['Relever les fichiers] juste après [myRange.Offset(1, 1).Value = myfile.Type] insére le code suivant pour détecter Excel ou Word et ainsi récupérer les mots clefs :
ext = Mid(myfile.Name, InStrRev(myfile.Name, ".") + 1)
If ext Like "doc*" Then
' MsgBox "Doc Word"
motclef = recu_word(p_Path & "\" & myfile.Name, "keywords")
myRange.Offset(1, 2).Value = motclef
ElseIf ext Like "xls*" Then
' MsgBox "Classeur Excel"
motclef = recu_excel(p_Path & "\" & myfile.Name, "ER14_FINAL", "keywords")
myRange.Offset(1, 2).Value = motclef
End If
En plus vous devez insérer les procédures dans un module :
Function recu_word(Fichier As String, nomclef As String) As String
Dim objWord As New Word.Application
objWord.Documents.Open Fichier
objWord.Documents(1).Bookmarks(nomclef).Select
ActiveDocument.Bookmarks(nomclef).Select
recu_word = Selection
objWord.Documents(1).Close
objWord.Quit
Set objWord = Nothing
End Function
Function recu_excel(Fichier As String, Feuille As String, nomclef As String) As String
Dim r As String, recu As String
Dim cla As Workbooks
Dim wb As Workbook
Dim sh As Worksheet
Set cla = CreateObject("Excel.Application").Workbooks
Set wb = cla.Open(Fichier, , 1)
Set sh = wb.Worksheets(Feuille)
recu = sh.Range(nomclef)
wb.Close False
recu_excel = recu
End Function
En principe cela fonctionne chez moi.
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
11 déc. 2015 à 09:59
11 déc. 2015 à 09:59
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
Modifié par Le Pingou le 11/12/2015 à 10:44
Modifié par Le Pingou le 11/12/2015 à 10:44
Bonjour,
Oui, la référence concernant Word :
[Microsoft Word 15.0 Object Library]
Salutations.
Le Pingou
Oui, la référence concernant Word :
[Microsoft Word 15.0 Object Library]
Salutations.
Le Pingou
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
11 déc. 2015 à 11:33
11 déc. 2015 à 11:33
Re,
C'est bon, j'ai activé ce qu'il faut. Regarde le dernier message datant de 11:31 AM.
C'est bon, j'ai activé ce qu'il faut. Regarde le dernier message datant de 11:31 AM.
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
11 déc. 2015 à 10:25
11 déc. 2015 à 10:25
Le code fonctionne quand la partie en gras italique souligné n'est pas présente, mais dès que je rajoute cette partie de code, ca ne fonctionne plus :
Dim r As String, recu As String
Dim cla As Workbooks
Dim wb As Workbook
Dim sh As Worksheet
Set cla = CreateObject("Excel.Application").Workbooks
Set wb = cla.Open(Fichier, , 1)
Set sh = wb.Worksheets(Feuille)
recu = sh.Range(nomclef)
wb.Close False
recu_excel = recu
End Function
Re,
Pour le document que je t'avais envoyé et que tu n'as pas reçu, en fait il suffit d'ouvrir un classeur vierge, et tu copies la macro suivante (ci-dessous) et tu lance la macro "ExécutionPagePrincipale" en rentrant un path an A1 :
<code>Sub ExécutionPagePrincipale()
'Give names
Dim Path As String
Dim MyAddress As String
Dim MyRange As Range
'Give formula
MyAddress = "B4"
Set MyRange = Range(MyAddress)
'Initialize path.
Path = Range("A1").Value
'Call macros
Call SupprimeFeuille
Call Vider_les_colonnes
Call Lister_le_contenu(Path, MyRange)
'Launch execution on the other sheets
Sheets(2).Select
Call Exécution
'Return on "A1"
Columns("B:D").EntireColumn.AutoFit
Range("a1").Select
End Sub
Sub Exécution()
'Give names
Dim Path As String
Dim MyAddress As String
Dim MyRange As Range
MyAddress = "B4"
'Give formula
For i = 1 To Sheets.Count - 1
If Sheets(i).Name = ActiveSheet.Name Then
Set MyRange = Range(MyAddress)
Path = Range("A1").Value
Call Vider_les_colonnes
Range("a1").Select
Call Lister_le_contenu(Path, MyRange)
Sheets(i + 1).Activate
Call Exécution
Exit Sub
End If
Next i
'Return on first sheet
Sheets(1).Select
Range("a1").Select
End Sub
Sub SupprimeFeuille()
'Give names
Dim Compteur As Integer, Nom As String
Application.DisplayAlerts = False
'Clear sheets except sheet 1
If (Worksheets.Count - 1) >= 2 Then
For Compteur = (Worksheets.Count - 1) To 2 Step -1
Sheets(Compteur).Delete
Next Compteur
End If
Application.DisplayAlerts = True
End Sub
Sub Vider_les_colonnes()
'Clear contents
Columns("B:H").Select
Selection.ClearContents
'Give format
Columns("D:E").Select
Selection.NumberFormat = "m/d/yyyy"
'Give names of columns
Range("b4").Select
ActiveCell.FormulaR1C1 = "Nom du sous-dossier/fichier"
Range("b4").Font.Color = RGB(124, 155, 220)
Range("b4").Font.Bold = True
Range("c4").Select
ActiveCell.FormulaR1C1 = "Type du sous-dossier/fichier"
Range("c4").Font.Color = RGB(0, 176, 80)
Range("c4").Font.Bold = True
Range("d4").Select
ActiveCell.FormulaR1C1 = "Mots-clés"
Range("d4").Font.Color = RGB(200, 76, 180)
Range("d4").Font.Bold = True
End Sub
Sub Lister_le_contenu(p_Path As String, ByRef p_Range As Range)
'Give names
Dim fso As New FileSystemObject
Dim f As Folder
Dim sf As Folder
Dim MyFile As File
Dim MyRange As Range
Dim MySheetName As String
'Give formula
Set MyRange = p_Range
Set f = fso.GetFolder(p_Path)
'Integrate folders
For Each sf In f.SubFolders
MyRange.Offset(1, 0).Value = sf.Name
MyRange.Offset(1, 1).Value = sf.Type
MySheetName = AddSheet_Func(MyRange.Worksheet, sf.Path, sf.Name)
Set MyRange = MyRange.Offset(1, 0)
Next
'Integrate files
For Each MyFile In f.Files
MyRange.Offset(1, 0).Value = MyFile.Name
MyRange.Offset(1, 1).Value = MyFile.Type
'Code for keywords
ext = Mid(MyFile.Name, InStrRev(MyFile.Name, ".") + 1)
If ext Like "doc*" Then
motclef = recu_word(p_Path & "\" & MyFile.Name, "keywords")
MyRange.Offset(1, 2).Value = motclef
ElseIf ext Like "xls*" Then
motclef = recu_excel(p_Path & "\" & MyFile.Name, "ER14_FINAL", "keywords")
MyRange.Offset(1, 2).Value = motclef
End If
Set MyRange = MyRange.Offset(1, 0)
Next
Set p_Range = MyRange
End Sub
Function AddSheet_Func(P_Sheet As Worksheet, P_PathName As String, p_Name As String) As String
'Give names
Dim MySheet As Worksheet
Dim MyRange As Range
'Give path and summary on each sheet
Set MySheet = Sheets.Add(, P_Sheet, 1, xlWorksheet)
MySheet.Range("A1").Value = P_PathName
Range("A9").Select
ActiveCell.FormulaR1C1 = "Sommaire"
MySheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Sommaire!A1", TextToDisplay:="Sommaire"
AddSheet_Func = (MySheet.Name)
End Function
Sub CreateIndexSheet()
'Give names
Dim wSheet As Worksheet
Dim i As Integer
Dim NbOfSheets As Integer
Sheets(1).Select Range("E5").Select
i = 0
NbOfSheets = Worksheets.Count
'Give hyperlinks
For Each wSheet In Worksheets
i = i + 1
If i <> 1 And i <> NbOfSheets Then
Select Case True
Case InStr(1, wSheet.Name, " ") > 0
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & wSheet.Name & "'!A1", TextToDisplay:=wSheet.Name
Case Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=wSheet.Name & "!A1", TextToDisplay:=wSheet.Name
End Select
ActiveCell.Offset(1, 0).Select
End If
Next
End Sub
Function recu_word(Fichier As String, nomclef As String) As String
Dim objWord As New Word.Application
objWord.Documents.Open Fichier
objWord.Documents(1).Bookmarks(nomclef).Select
ActiveDocument.Bookmarks(nomclef).Select
recu_word = Selection
objWord.Documents(1).Close
objWord.Quit
Set objWord = Nothing
End Function
Function recu_excel(Fichier As String, Feuille As String, nomclef As String) As String
Dim r As String, recu As String
Dim cla As Workbooks
Dim wb As Workbook
Dim sh As Worksheet
Set cla = CreateObject("Excel.Application").Workbooks
Set wb = cla.Open(Fichier, , 1)
Set sh = wb.Worksheets(Feuille)
recu = sh.Range(nomclef)
wb.Close False
recu_excel = recu
End Function
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
11 déc. 2015 à 10:39
11 déc. 2015 à 10:39
Bonjour, valable pour aujourd'hui...¨
Merci, mais ce n'est pas la peine de poster tout le code.
Je ne suis pas aussi nul...=:(
Salutations.
Le Pingou
Merci, mais ce n'est pas la peine de poster tout le code.
Je ne suis pas aussi nul...=:(
Salutations.
Le Pingou
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
>
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
11 déc. 2015 à 11:33
11 déc. 2015 à 11:33
Désolé...
nicolo9
Messages postés
16
Date d'inscription
mercredi 14 octobre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
11 déc. 2015 à 11:31
11 déc. 2015 à 11:31
Après test, quand il s'agit de document Word, au lieu d'écrire le mot-clé réel, il écrit carrément "Mots-clés" dans la case souhaitée, quelque soit le document Word contenant le signet "keywords".
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
12 déc. 2015 à 11:42
12 déc. 2015 à 11:42
Bonjour,
Si cela ne fonctionne pas chez vous c’est certainement à cause de la structure du document Word que vous n’avez pas spécifié.
Je ne vais pas courir longtemps pour avoir les bonnes données… !
Si cela ne fonctionne pas chez vous c’est certainement à cause de la structure du document Word que vous n’avez pas spécifié.
Je ne vais pas courir longtemps pour avoir les bonnes données… !
Le Pingou
Messages postés
12191
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
19 novembre 2024
1 450
13 déc. 2015 à 15:38
13 déc. 2015 à 15:38
Bonjour,
Merci, vous baissez bien vite les bras…
Il semble que vous ne comprenez pas que sans la structure des documents Word il sera impossible d’avoir une solution correcte.
Bon dimanche.
Merci, vous baissez bien vite les bras…
Il semble que vous ne comprenez pas que sans la structure des documents Word il sera impossible d’avoir une solution correcte.
Bon dimanche.
Modifié par nicolo9 le 15/10/2015 à 08:22