Ouvrir dans un répertoire un fichier sans connaître son nom

Fermé
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016 - 14 févr. 2016 à 17:32
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016 - 28 févr. 2016 à 18:58
Bonjour

j'ai des fichiers qui s'enregistrent dans un répertoire (3 par jour en fonction de la production)

Silo 1 - S1.xls
Silo 2 - S2.xls
Silo 3 - S3.xls
Silo 4 - S1.xls
Silo 5 - S2.xls
Silo 6 - S3.xls
Silo 7 - S1.xls
Silo 8 - S2.xls
Silo 9 - S3.xls

Un numéro chronologique s'attribue a chaque nouveau fichier créé

j'aimerai ouvrir les derniers enregistrements S1/S2/S3 créé pour les copier dans un

autre fichier récapitulatif afin d'éditer un rapport et refermer l'ensemble

Merci pour votre aide
A voir également:

7 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 févr. 2016 à 10:54
Bonjour,


voici un exemple:

http://www.cjoint.com/c/FBpj10iNGiQ
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016
15 févr. 2016 à 18:31
Ok merci pour ta réponse

il faudrait modifier le code en lui indiquant le chemin du répertoire:

E:\Fabrication\optimix

afin d'éviter ces boites de dialogue car je voudrai l'automatiser avec une macro auto/ouvrir via le planificateur de tache Windows


Ensuite je pense me débrouiller pour le reste

Merci pour ton aide
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 févr. 2016 à 18:48
C'est tout simple

dans la sub:

Sub triDecroissant_Fichiers_DateDreation()

changer

SelectionDossier_source

par

chemin = "E:\Fabrication\optimix"

voilà

@+
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016
17 févr. 2016 à 18:42
ok j'essaie ce weekend
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016
Modifié par Jean-luc7964 le 27/02/2016 à 18:45
Bonjour

J'ai essayé de faire un code avec plusieurs mais j'ai des problèmes

1 je n'arrive à refermer le classeur qui contient les infos
2 j'ai mis une condition qui ne fonctionne pas

merci pour votre aide


Sub RechercheFichier2()
Dim Chemin
Chemin = "E:\Airvault\Fabrication\optimix"
Dim Files As Object, File As Object, i As Integer
Dim Sh As Worksheet
Dim EnTetes, ArrFSO
Dim homo As Variant
Dim vérif

Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")

NomDossier = Chemin
If NomDossier = "" Then Exit Sub
Set Dossier = fso.GetFolder(NomDossier)

Sheets("Recherche Silo").Select
Set Files = Dossier.Files
i = 1
For Each File In Files
i = i + 1
With File
ArrFSO = Array(.Name)
End With
Cells(i, 1) = ArrFSO

Next
'copie des deux derniers numéro de silo fabriqués dans recherche silo

Sheets("Recherche Silo").Select
Range("A2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(-1, 0).Activate
Selection.Copy
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Traitement du dernier silo dans Extraction

valeur = Range("D1").Value
Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & " "

'copie du tableau

Cells.Select
Selection.Copy
Windows("essai macro.xlsm").Activate
Sheets("Extraction").Select
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False


'extraction dans données

Sheets("Extraction").Select
Application.Goto Reference:="echantillon"
Selection.Copy
Sheets("données").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'vérif si homo fini (pas réussi avec la condition )

Sheets("Extraction").Select
Application.Goto Reference:="vérif"

'If UCase(Range("f2").Value) & " " Like "*homo *" Then
'End If
'If UCase(Range("f2").Value) & " " Like "*ech *" Then Exit Sub

'récupère les données de broyeur et copie dans broyeur

Sheets("Extraction").Select
Application.Goto Reference:="broyeur"
Selection.Copy
Sheets("Rapport").Select
Range("S2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'récupère les données de Kuhl_silo et copie dans Rapport

Sheets("Extraction").Select
Application.Goto Reference:="Kuhl_silo"
Selection.Copy
Sheets("Rapport").Select
Range("R2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'récupère les données de doseurs et copie dans Rapport

Sheets("Extraction").Select
Application.Goto Reference:="doseurs"
Selection.Copy
Sheets("Rapport").Select
Range("K2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'récupère les données de tonnage et copie dans données

Sheets("Extraction").Select
Application.Goto Reference:="tonnage"
Selection.Copy
Sheets("données").Select
Range("B6").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'referme le classeur de la dernière montée de silo (je n'arrive pas à le refermer)

Workbooks("E:\Airvault\Fabrication\optimix\" & valeur & " ").Close


'imprime le Rapport

'Sheets("Rapport").Select
'ActiveWindow.SelectedSheets.PrintPreview
'Application.ActivePrinter = "\\FBS818ADS12\IMPR-AIRVAULT sur Ne05:"
'ExecuteExcel4Macro _
' "PRINT(1,,,1,,FALSE,,,,,,2,""\\FBS818ADS12\IMPR-AIRVAULT sur Ne05:"",,,,FALSE)"
'ActiveWindow.SelectedSheets.PrintPreview


'efface tout pour le prochain Rapport

Sheets("Recherche Silo").Select
Columns("A:A").Select
Selection.ClearContents

Sheets("données").Select
Columns("A:A").Select
Selection.ClearContents

Application.Goto Reference:="raz"
Selection.ClearContents

'Traitement de l'avant dernier silo dans Extraction

'Windows("essai macro.xlsm").Activate
' Sheets("Recherche Silo").Select
'valeur = Range("D2").Value
'Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & " "






End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 févr. 2016 à 18:54
Voilà:

ThisWorkbook.Close False 
' ferme le classeur sans enregistrement

ThisWorkbook.Close True 
' ferme le classeur avec  enregistrement

ThisWorkbook.Close 
' ferme le classeur et laisse l'utilisateur le choix de l'enregistrer


@+
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
28 févr. 2016 à 10:17
Bonjour et merci pour ton aide

je comprend cette commande mais à cet instant du code je me retrouve avec deux classeurs:

1 le classeur pour le traitement du rapport qui contient la macro

2 le classeur "inconnu" que la macro à ouvert avec:

Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & "

et ce classeur "inconnu" avant de le fermer avec ta commande il faut bien que je le sélectionne et la je bloque.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
28 févr. 2016 à 10:44
Pour fermer le classeur "inconnu" que la macro à ouvert avec

voir ceci:

https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.close?redirectedfrom=MSDN

Tu remplaces False par True

@+
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
28 févr. 2016 à 11:04
Workbooks("BOOK1.XLS").Close SaveChanges:=True

Ok mais avec cette commande il faut connaitre le nom du classeur et dans mon cas il est variable
Mon problème n'est pas de fermer ce classeur au nom variable mais d'abord de l'activer pour le fermer ensuite.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
28 févr. 2016 à 11:28
comme ceci:

Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & " "
' Pour fermer le classeur actif 
ActiveWorkbook.Close savechanges:=False 'ou True
 

0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016
28 févr. 2016 à 16:55
Oui j'avais compris mais je pense m'être mal exprimé

pour l'ouvrir:
Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & " "

pour le fermer:
ActiveWorkbook.Close savechanges:=False 'ou True

Mais les sélectionner successivement pour copier des données?
il faut bien les activer pour copier/coller dans les 2 fichiers?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
28 févr. 2016 à 17:05
Dans le classeur que j'ai mis, il suffit de cliquer sur la cellule avec le nom du classeur pour l'ouvrir. Ensuite tu fais tes manipulations sur chaque classeur et tu les fermes.

Je ne peux pas t'aider plus, je suis désolé.

@+
0
Jean-luc7964 Messages postés 8 Date d'inscription dimanche 14 février 2016 Statut Membre Dernière intervention 28 février 2016
28 févr. 2016 à 18:58
ok

Merci pour ton aide
0