Salut tout le monde,
J'aurais besoin d'un coup de main sur une macro.
En fait je souahite créer une macro qui m'ouvre tout les fichier d'un dossier spécifié commencant par : saisie et ayant .xls comme extension.
Merci de votre aide.
JD
Version imprimable
Salut tout le monde,
J'aurais besoin d'un coup de main sur une macro.
En fait je souahite créer une macro qui m'ouvre tout les fichier d'un dossier spécifié commencant par : saisie et ayant .xls comme extension.
Merci de votre aide.
JD
Bonjour,
Tu veux le mettre où ton code, un UserForm, un fichier existant ?
Peux-tu être un peu plus clair s'il te plait ?
Merci, cela va nous aider à mieux te répondre.
Je vais essayé d'être plus clair, dans un dossier j'ai 10 fichier de saisie (1 par personne) et un aute qui va me servir à faire la synthèse de ces fichiers. Je voudrais que lorsque l'on ouvre le fichier synthèse, les 10 autres fichiers s'ouvrent en arrière plan, donc je pensais mettre le code dans thisworkbook.
Si vous souhaitez plus d'informations demande-moi.
PS : Je suis complètement novice en programmation.
Dans ThisWorkBook
Tu remplaces le nom des fichiers par les tiensCode:
1
2
3
4
5
6
7 Private Sub WorkBook_Open() Workbooks.Open Filename:="P:\Racc Excel.xls" Workbooks.Open Filename:="P:\doc liste contrats.xls" Workbooks.Open Filename:="P:\text.xls" Workbooks.Open Filename:="P:\Rep Tel.xls" End Sub
Merci pour ta réponse mais je voudrais savoir si c'est possible de le faire automatiquement en lui disant d'ouvrir tout les fichier commencant par : saisie et avec comme extension .xls, parce que le nombre de fichier va changer.
cordialement,
JD
J'ai trouvé ce code, vois si tu peux l'adapter
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Option Explicit Dim r As Long Const DossierRacine As String = "C:\Transfert\Essais" Const MasqueFichier As String = "Fichier*.txt" Sub Lister() ShImport.Cells.Clear r = 1 ListeFichiersDansDossier DossierRacine, True End Sub Private Sub ListeFichiersDansDossier(ByVal NomDossierSource As String, ByVal InclureSousDossiers As Boolean) Dim FSO As Scripting.FileSystemObject Dim DossierSource As Scripting.Folder, SousDossier As Scripting.Folder Dim Fichier As Scripting.File Set FSO = New Scripting.FileSystemObject Set DossierSource = FSO.GetFolder(NomDossierSource) For Each Fichier In DossierSource.Files If UCase(Fichier.Name) Like UCase(MasqueFichier) Then With ShImport .Cells(r, 1) = Fichier.Name .Cells(r, 2) = Fichier.ParentFolder End With Application.StatusBar = "Lecture : " & r r = r + 1 End If Next Fichier If InclureSousDossiers Then For Each SousDossier In DossierSource.SubFolders ListeFichiersDansDossier SousDossier.Path, True Next SousDossier Set SousDossier = Nothing End If Set Fichier = Nothing Set DossierSource = Nothing Set FSO = Nothing End Sub
Désolé mais je n'arrive pas à comprendre la logique de ce code, car je l'avais déjà vue et il était fais pour copier des cellules. Je pense qu'il est un peu trop complet pour mon utilisation.
Je reste quand meme à à l'affut pour voir si vous avez d'autres infos qui pourraient m'aider.
Bonjour,
ce code n'ouvre pas les fichiers mais il te constitue une liste dans une feuille définien par la variable ShImport.
Malheureusement je ne vois nullepart où elle est initialisée.
par contre si tu l'initialises, tu peux traiter le résultat et les tous les fichiers dont le nom est en colonne A et le folder en colonne B.
Pour revenir à mon problème, "c'est juste" d'ouvrir plusieurs fichiers avec une macro.
Re,
je l'ai bien compris mais tu dois préciser si tuveux ouvrir tous les fichiers à la suite l'un de l'autre ou si tu veux traiter 1, le fermer, puis passer au suivant.
Pour les ouvrir tous (attention à la kata si tu en as beaucoup), tu peux faire comme ceci:
'saisie et ayant .xls comme extension.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Dim path as string Dim masque as string Dim Path_masque as string dim res as string Path = "C:\data\" Masque = "saisie*.xls" Path_masque = path & masque res = dir(path_masque, vbhidden) Do While res <> "" workbooks.Open(res) res = dir(path_masque, vbhidden) loop thisworkbook.activate
ce que je pensais faire c'était ouvrir tout les fichiers puis pour chacun copier les cellule dont j'ai besoin. Mais d'après ce que je comprend, tu me conseilles de copier au fur et à mesure les cellule dont j'ai besoin.
bonjour,
L'avantage des ouvrirs un par un, c'est que tu peux utiliser seulement un code et faire une boucle sur tout les fichiers. Avec un Set du fichier, tu reprends toujours la même variable, rendu au fichier suivant, tu "reset" ta variable au prochain fichier.
Tu évites de manipuler tout en même temps!
Pour info : la macro que tu m'as conseillée ne fonctionne pas.
Si vous savez pourquoi n'hésitez pas.Citation:
Erreur de compilation :
Instruction incorrecte à l'extérieur d'une procédure.
Peux-tu mettre ton code ?
Désolé, en fait le problème c'est que le code tourne en rond, à partir de loop il retourne sur do while et après il n'ouvre pas de nouveau fichier mais réouvre celui déjà ouvert.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub essai_ouverture() Dim path As String Dim masque As String Dim Path_masque As String Dim res As String path = "C:\Mes documents\heure personne\" masque = "saisie*.xls" Path_masque = path & masque res = Dir(Path_masque, vbHidden) Do While res <> "C:\Mes documents\heure personne\" Workbooks.Open (res) res = Dir(Path_masque, vbHidden) Loop ThisWorkbook.Activate End Sub
Mon bon the_djjd,
ce n'est pas le code que je t'ai donné, et donc si tu te lances dans le tuning sans rien comprendre à ce que tu fais, on n'est pas dans la m.... :aie:
Si tu te donnes la peine de regarder l'aide en ligne sur DIR, tu verras que le résultat vaut "" qaund il n'y a plus rien, et toi tu testes à ta manière.
Terroriste. :kill::scarymov:
EDIT ----
Et au risque de me faire disputer par un modérateur, les balises codes, ce n'est pas facultatif.
Allez diantre, un peu de concentration même si on est vendredi.
Je suis désolé d'avoir "tuné" ta macro mais je pensais qu'il fallait que je l'adapte à mon besoin.
Sinon j'ai réussit à faire à peut près ce que je voulais en ouvrant les fichiers un par un et en faisant des copier-coller.
Par contre j'aurais une autre question :
- Comment faire lorsque l'on supprime des feuille pour que la demande de confirmation de suppression n'apparaisse pas et que les feuille soient supprimées automatiquement?
PS : J'aime pas le tunning, c'est pour les jackos.
Bonjour,
Avant la suppression :
et après la suppression..Code:Application.displayalerts = false
Merci ca marche niquel.