Ouvrir dans un répertoire un fichier sans connaître son nom
Jean-luc7964
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Jean-luc7964 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Jean-luc7964 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Ouvrir dans un répertoire un fichier sans connaître son nom
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Ouvrir un fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment réduire la taille d'un fichier - Guide
7 réponses
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
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
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
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
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.
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.
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
@+
voir ceci:
https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.close?redirectedfrom=MSDN
Tu remplaces False par True
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
comme ceci:
Workbooks.Open Filename:="E:\Airvault\Fabrication\optimix\" & valeur & " " ' Pour fermer le classeur actif ActiveWorkbook.Close savechanges:=False 'ou True
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?
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?