boucle sur colonne

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
 

CMoa

XLDnaute Occasionnel
Re : boucle sur colonne ;)

Re :)
N'ayant pas eu de réponse,je suppose que ma demande n'est pas claire donc:
Voici un fichier zip avec tous les documents nécessaires au test.
@+
 

Pièces jointes

  • Test.zip
    13.7 KB · Affichages: 38
  • Test.zip
    13.7 KB · Affichages: 42
  • Test.zip
    13.7 KB · Affichages: 36

CMoa

XLDnaute Occasionnel
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
@+
 

pierrejean

XLDnaute Barbatruc
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
 

CMoa

XLDnaute Occasionnel
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.
@+
 

pierrejean

XLDnaute Barbatruc
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
 

CMoa

XLDnaute Occasionnel
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........
@+
 

pierrejean

XLDnaute Barbatruc
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
 

pierrejean

XLDnaute Barbatruc
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  
.......
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35