• Initiateur de la discussion Initiateur de la discussion CMoa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CMoa

XLDnaute Occasionnel
Bonjour le Forum 🙂
J'ai récupérer ce code qui permet de copier en colonne B le nom d'un champs dans un classeur word vers excel.Il fonctionne lorsqu'il scanne tous le dossier spécifié.
Je souhaite avec votre aide lui donner les noms des fichiers à ouvrir afin de récupérer le champs.
Ces noms de fichier sont dans la colonne A2;A3 etc....(nombre variable).
Code:
Sub import_client()
Dim Fich As Worksheet
Dim Variables As Variant
Set Fich = ThisWorkbook.Worksheets("Synthèse")
chemin = ThisWorkbook.Path & "\" 'adresse de ce classeur(endroit où se trouvent mes docs)
'nom dufichier à récupérer en fonction de la valeur de la colonne A
mesfichiers = Dir(chemin & Feuil1.Range("A" & Feuil1.Range("A1").End(xlUp).Row))
'nom du champs à récupérer dans le fichier word
Variables = Array("Num_devis")
nb_Champs = 1
num_row = 1
i = 0
Set FichierWord = CreateObject("word.application")
FichierWord.Visible = True
FichierWord.DisplayAlerts = False
Do While mesfichiers <> ""
  If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "clients.doc" Then
    monDocument = chemin & mesfichiers
    FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
    num_row = num_row + 1
    num_col = 2
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 2) = FichierWord.activedocument.formfields(Variables(i)).result
    Next i
    FichierWord.documents.Close (0)
  End If
  mesfichiers = Dir
Loop
FichierWord.Quit

End Sub
Je pense qu'il me manque une boucle for sur "mesfichiers".
Merci pour votre aide
 
Re : boucle sur colonne

Re 🙂
il semblerait qu'il n'ya pas de solution à mon problème ou je ne suis toujours pas clair dans ma demande.
Tout ce que je cherche à faire c'est à boucler sur la colonne A du classeur et lorsqu'un résultat est trouvé alors la macro s'exécute puis passe à la cellule suivante.J'ai bien tenté ceci mais ça ne marche pas.
Un coup de main serait le bienvenue.
Code:
For j = 1 To 10
mesfichiers = dir(chemin & Feuil1.Range("A" & j))
Next j
@+
 
Re : boucle sur colonne

Bonjour CToa

D'apres une breve analyse de ton code , je te suggere une petite modification tres simple

Ajout de la ligne en rouge

Code:
For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 2) = FichierWord.activedocument.formfields(Variables(i)).result
     [COLOR=red] Fich.Cells(num_row, 1) = monDocument
[/COLOR]    Next i

L'effet devrait etre d'afficher automatiquement le nom du fichier (plutot que d'avoir a comparer le nom du fichier a ceux existants)
Teste et dis nous
 
Re : boucle sur colonne

bonjour pierrejean
je te remercie pour ta réponse mais la colonne A est déjà renseignée par une autre macro qui me renvoi les noms de tous les classeurs présents dans un fichier.
C'est pour cette raison que je souhaite récupérer le nom dans la colonne A pour pour ouvrir le classeur correspondant.
@+
 
Re : boucle sur colonne

Re

Je suppose que tu veux dire dans un dossier (et non dans un fichier)
Pourquoi ne pas amenager cette fonction pour lui faire egalement trouver le N° qui t'interesse ?
Sinon poste deux ou trois de tes fichiers Word (sans données confidentielles), ce sera plus facile pour trouver une solution
 
Re : boucle sur colonne

Re
c'est exact pour le dossier.
Pour le post j'ai tout mis dans mon 2nd post.
Je ne récupère pas l'adresse dans cette colonne mais uniquement les noms des fichiers avec les extension(.doc;.xls).
clients1.doc;clients2.doc etc........
@+
 
Re : boucle sur colonne

Re

Teste ceci:

Code:
Sub import_client()
Dim Fich As Worksheet
Dim Variables As Variant
Set Fich = ThisWorkbook.Worksheets("Synthèse")
chemin = ThisWorkbook.Path & "\" 'adresse de ce classeur(endroit où se trouvent mes docs)
'nom dufichier à récupérer en fonction de la valeur de la colonne A
mesfichiers = Dir(chemin & Feuil1.Range("A" & Feuil1.Range("A1").End(xlUp).Row))
'nom du champs à récupérer dans le fichier word
Variables = Array("Num_devis")
nb_Champs = 1
num_row = 1
i = 0
Set FichierWord = CreateObject("word.application")
FichierWord.Visible = True
FichierWord.DisplayAlerts = False
  For n = 2 To Range("A65536").End(xlUp).Row
    monDocument = chemin & Range("A" & n)
    FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
    num_row = num_row + 1
    num_col = 2
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 2) = FichierWord.activedocument.formfields(Variables(i)).result
    Next i
    FichierWord.documents.Close (0)
  Next n
  
FichierWord.Quit
End Sub
 
Re : boucle sur colonne

Re

Ce n'est pas la solution !!!!

voila ce qu'il faut

Code:
.....
For n = 2 To Range("A65536").End(xlUp).Row
[COLOR=red]  [COLOR=blue]If chemin & Range("A" & n)<>"" then[/COLOR]
[/COLOR]    monDocument = chemin & Range("A" & n)
    FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
    num_row = num_row + 1
    num_col = 2
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 2) = FichierWord.activedocument.formfields(Variables(i)).result
    Next i
    FichierWord.documents.Close (0)
 [COLOR=blue]  End if[/COLOR][COLOR=red]
[/COLOR]  Next n  
.......
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour