travail sur fichiers fermés

Le
maud s
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets.. dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers nommé
ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et le
nom du sous répertoire et le contenu de la cellule "I12" de cette feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #20698561
Bonjour,
Il y a, chez Frédéric, une mine pour travailler en souterrain :
http://frederic.sigonneau.free.fr/Ado.htm
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/web/mpfe
News://news.microsoft.com/microsoft.public.fr.excel
"maud s" news:
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.








Daniel.C
Le #20698631
Bonjour.
A mon humble avis, tu ne peux pas recopier une feuille d'un classeur
fermé. Tu ne peux que recopier les valeurs des cellules.
Daniel

Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se nomme
facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque fichier
excel les onglets nommé FACTURE et les mets dans un fichiers nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et le
nom du sous répertoire et le contenu de la cellule "I12" de cette feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.


FS
Le #20699461
Bonjour,

En dehors du fait qu'il vaudrait sûrement mieux, comme le suggère Daniel
C., ouvrir chaque classeur pour en recopier la feuille souhaitée dans un
classeur de "consolidation" (ça peut être totalement invisible en
désactivant le rafraichissement de l'écran), je voudrais attirer ton
attention sur le fait que le nom des onglets est limité à 31 caractères.
Le mot FACTURE (déjà 7 caractères) + le nom du sous répertoire + le
contenu de la cellule "I12" feront-ils à eux tous 31 caractères ou moins ?
N'oublie pas de gérer l'erreur (1004) possible en cas de dépassement.
Juste mes qq centimes d'euros en passant..

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

maud s a écrit :
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers nommé
ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et le
nom du sous répertoire et le contenu de la cellule "I12" de cette feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.








maud s
Le #20700261
et si on oubliait le fait que les classeurs soient fermés...
le code serait quoi?

merci de votre aide...
"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.








maud s
Le #20700561
Donc en fait j aimerais la macro qui me permette de faire ceci en ouvrant
les différents classuers et les refermant aussitot si cela possible
merci....



"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.








Daniel.C
Le #20701041
Essaie la macro suivante; note qu'elle ne pourra pas s'exécuter sur une
version XL2007 car elle emploie l'instruction FileSearch :

Sub Import()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "e:donneesdanielmpfeASD" ' chemin à modifier
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count

Workbooks.Open .FoundFiles(i)
Var = "FACTURE" & Right(ActiveWorkbook.Path, _
Len(ActiveWorkbook.Path) - _
InStrRev(ActiveWorkbook.Path, "")) & [I12].Value
If Len(Var) > 31 Then
MsgBox "fichier " & .FoundFiles(i) & " : nom d'onglet trop
long" & _
"fin de la macro"
End If
Sheets("FACTURE").Copy Before:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = Var
Workbooks(Dir(.FoundFiles(i))).Close
Next i
End With
Application.ScreenUpdating = True
End Sub

Daniel

Donc en fait j aimerais la macro qui me permette de faire ceci en ouvrant les
différents classuers et les refermant aussitot si cela possible merci....



"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers nommé
ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et le
nom du sous répertoire et le contenu de la cellule "I12" de cette feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.










FS
Le #20701401
Re,

Une approche possible (avec quelques vérifications à compléter sans
doute selon ton contexte). C'est la procédure TraiterFactures que tu
peux éventuellement affecter à un bouton de barre d'outils (suivant ta
version d'Excel). Testé avec Excel 2003 et 2007.

'===========(dans un module standard)
Sub TraiterFactures()
Dim Wbk As Workbook, Racine$, Nom

Racine = "D:ASD": Nom = "ASD.xls"
Set Wbk = Workbooks.Add

Application.ScreenUpdating = False
ListFilesInFolder Racine, True, Wbk

Wbk.SaveAs Racine & "" & Nom
Wbk.Close

End Sub

Sub ListFilesInFolder(SourceFolderName As String, _
IncludeSubfolders As Boolean, Cible As Workbook)
Dim FSO As Object, SourceFolder As Object, SubFolder As Object
Dim FileItem As Object, Classeur As Workbook, Nom

Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(SourceFolderName)

For Each FileItem In SourceFolder.Files
If Right(FileItem.Name, 3) = "xls" Then
If FileItem.Name <> ThisWorkbook.Name Then
Set Classeur = Workbooks.Open(FileItem.Path)
If SheetExists(Classeur, "Facture") Then
Nom = Left("FACTURE" & "-" & SourceFolder.Name & "-" & _
Classeur.Sheets("Facture").Range("I12").Value, 31)
Classeur.Sheets("Facture").Copy _
After:=Cible.Sheets(Cible.Sheets.Count)
Cible.Sheets("Facture").Name = Nom
End If
Classeur.Close False
End If
End If
Next FileItem


If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, True, Cible
Next SubFolder
End If

Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing

End Sub 'fs (d'après Ole P Erlandsen)

Private Function SheetExists(Wbk As Workbook, sname) As Boolean
Dim F As Object
On Error Resume Next
Set F = Wbk.Sheets(sname)
If Err = 0 Then
SheetExists = True
Else
SheetExists = False
Err.Clear
End If
End Function
'===================================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

maud s a écrit :
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel de
chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers nommé
ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et le
nom du sous répertoire et le contenu de la cellule "I12" de cette feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.








maud s
Le #20701391
Merci daniel pour ton code il marche au début de la procédure et au niveau
de la ligne
Workbooks(Dir(.FoundFiles(i))).Close
à la deuxième execution de la boucle il me marque une erreur de type 1004

as tu une idée?

"Daniel.C"
Essaie la macro suivante; note qu'elle ne pourra pas s'exécuter sur une
version XL2007 car elle emploie l'instruction FileSearch :

Sub Import()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "e:donneesdanielmpfeASD" ' chemin à modifier
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count

Workbooks.Open .FoundFiles(i)
Var = "FACTURE" & Right(ActiveWorkbook.Path, _
Len(ActiveWorkbook.Path) - _
InStrRev(ActiveWorkbook.Path, "")) & [I12].Value
If Len(Var) > 31 Then
MsgBox "fichier " & .FoundFiles(i) & " : nom d'onglet trop
long" & _
"fin de la macro"
End If
Sheets("FACTURE").Copy Before:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = Var
Workbooks(Dir(.FoundFiles(i))).Close
Next i
End With
Application.ScreenUpdating = True
End Sub

Daniel

Donc en fait j aimerais la macro qui me permette de faire ceci en ouvrant
les différents classuers et les refermant aussitot si cela possible
merci....



"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel
de chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.














maud s
Le #20701531
A lors en fait daniel ton code planteau moment ou il recopie l onglet avec
VAR car il a deja un onglet du meme nom dans le fichier destination.... j ai
executé en pas à pas et il plante là avec une erreur 1004 je vois pas
comment faire!!

merci


"Daniel.C"
Essaie la macro suivante; note qu'elle ne pourra pas s'exécuter sur une
version XL2007 car elle emploie l'instruction FileSearch :

Sub Import()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "e:donneesdanielmpfeASD" ' chemin à modifier
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count

Workbooks.Open .FoundFiles(i)
Var = "FACTURE" & Right(ActiveWorkbook.Path, _
Len(ActiveWorkbook.Path) - _
InStrRev(ActiveWorkbook.Path, "")) & [I12].Value
If Len(Var) > 31 Then
MsgBox "fichier " & .FoundFiles(i) & " : nom d'onglet trop
long" & _
"fin de la macro"
End If
Sheets("FACTURE").Copy Before:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = Var
Workbooks(Dir(.FoundFiles(i))).Close
Next i
End With
Application.ScreenUpdating = True
End Sub

Daniel

Donc en fait j aimerais la macro qui me permette de faire ceci en ouvrant
les différents classuers et les refermant aussitot si cela possible
merci....



"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel
de chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.














maud s
Le #20701521
il plante là en erreur 1004

ActiveSheet.Name = Var



"Daniel.C"
Essaie la macro suivante; note qu'elle ne pourra pas s'exécuter sur une
version XL2007 car elle emploie l'instruction FileSearch :

Sub Import()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "e:donneesdanielmpfeASD" ' chemin à modifier
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count

Workbooks.Open .FoundFiles(i)
Var = "FACTURE" & Right(ActiveWorkbook.Path, _
Len(ActiveWorkbook.Path) - _
InStrRev(ActiveWorkbook.Path, "")) & [I12].Value
If Len(Var) > 31 Then
MsgBox "fichier " & .FoundFiles(i) & " : nom d'onglet trop
long" & _
"fin de la macro"
End If
Sheets("FACTURE").Copy Before:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = Var
Workbooks(Dir(.FoundFiles(i))).Close
Next i
End With
Application.ScreenUpdating = True
End Sub

Daniel

Donc en fait j aimerais la macro qui me permette de faire ceci en ouvrant
les différents classuers et les refermant aussitot si cela possible
merci....



"maud s"
Bonjour
sur excel 2003

Je dispose d'un répertoire nommé ASD
dans ce répertoire il y a des sous répertoires
et dans ces sous répertoires il y a divers fichiers excel.

dans chacun de ces fichiers excel il y a 4 onglets..... dont un qui se
nomme facture

J'aimerais si c'est possible, qu'un code VBA balaye les fichiers excel
de chaque répertoire et sous repertoires etc... et me recupere de chaque
fichier excel les onglets nommé FACTURE et les mets dans un fichiers
nommé ASD.xls.

chaque onglet recopié dans le fichiers ASD.xls doit se nommer FACTURE et
le nom du sous répertoire et le contenu de la cellule "I12" de cette
feuille.

J'ai regardé sur le net boisgontier sigonneau et autre mais j ai pas
réussi..

merci à vous par avance.














Publicité
Poster une réponse
Anonyme