Récupération données sur un autre fichier, nom variable
Fermé
rlabe
Messages postés
3
Date d'inscription
jeudi 20 février 2014
Statut
Membre
Dernière intervention
21 février 2014
-
20 févr. 2014 à 16:36
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 21 févr. 2014 à 21:50
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 21 févr. 2014 à 21:50
A voir également:
- Récupération données sur un autre fichier, nom variable
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
20 févr. 2014 à 19:20
20 févr. 2014 à 19:20
Bonjour,
Essaies ce code (pense à activer la référence) :
-
Cordialement
Patrice
Essaies ce code (pense à activer la référence) :
Option Explicit
Option Private Module
'
' Note : il faut activer les références (dans Outils > Références ...) à :
' - Microsoft Scripting Runtime
Public Sub MàJ()
' Analyse les fichiers du répertoire et trouve le plus récent
'
Const préfixe As String = "ccm (" 'Préfixe des noms de fichier
Const suffixe As String = ").csv" 'Suffixe des noms de fichier
'
Dim objFSO As FileSystemObject 'File System Object
Dim objRep As Scripting.Folder 'dossier à analyser
Dim objFiles As Scripting.Files 'collection des fichiers du dossier
Dim objFile As Scripting.File 'fichier de la collection
Dim strChemin As String 'chemin du dossier
Dim nomComplet As String 'Nom complet du fichier (avec le chemin)
Dim dateModification As Date 'Date de modification du fichier
'Définir le contexte d'exécution: arrêt interface utilisateur, actualisation écran et calculs
Application.Interactive = False
Application.Calculation = xlCalculationManual
Application.Cursor = xlWait
Application.ScreenUpdating = False
'Définir le dossier à analyser par exemple :
strChemin = ThisWorkbook.Path & "\Mes fichiers"
'Lister l'arborescence du dossier
On Error Resume Next
Set objFSO = New FileSystemObject
Set objRep = objFSO.GetFolder(strChemin) 'dossier
Set objFiles = objRep.Files 'fichiers
On Error GoTo 0
'- analyser chaque nom de fichier
For Each objFile In objFiles
If InStr(1, objFile.Name & préfixe, préfixe) = 1 And _
InStr(1, StrReverse(objFile.Name) & StrReverse(suffixe), StrReverse(suffixe)) = 1 Then
'-- si le nom de fichier commence par le préfixe et termine par le suffixe ...
With objFile
'... et si le fichier est plus récent ...
If .DateLastModified > dateModification Then
'... mémoriser le nom et la date du fichier.
nomComplet = .Path
dateModification = .DateLastModified
End If
End With
End If
Next
'Exploiter le résultat
MsgBox "Fichier le plus récent : " & vbCr & _
nomComplet & vbCr & _
dateModification
'- libérer les objets
Set objFSO = Nothing
Set objRep = Nothing
Set objFiles = Nothing
Set objFile = Nothing
'Rétablir le contexte initial
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Cursor = xlDefault
Application.Interactive = True
End Sub
-
Cordialement
Patrice
rlabe
Messages postés
3
Date d'inscription
jeudi 20 février 2014
Statut
Membre
Dernière intervention
21 février 2014
21 févr. 2014 à 15:07
21 févr. 2014 à 15:07
Balaise !
J'essaie ça merci :)
J'essaie ça merci :)
rlabe
Messages postés
3
Date d'inscription
jeudi 20 février 2014
Statut
Membre
Dernière intervention
21 février 2014
21 févr. 2014 à 17:08
21 févr. 2014 à 17:08
Bon après plusieurs essais (je débute), j'arrive pas à l'incorporer :D
Si je veux le mettre là dedans :
Cells.Select
Windows("ccm (6).csv").Activate --> FICHIER AVEC NOM VARIABLE
Cells.Select
Selection.Copy
Windows("blablabla.xlsm").Activate
ActiveSheet.Paste
Range("A1").Select
Sachant que le chemin d'accès des fichiers temporaires d'outlook (que j'utilise) est celui ci :
C:\Users\nom_utilisateur\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\
Merci pour ton aide :)
Si je veux le mettre là dedans :
Cells.Select
Windows("ccm (6).csv").Activate --> FICHIER AVEC NOM VARIABLE
Cells.Select
Selection.Copy
Windows("blablabla.xlsm").Activate
ActiveSheet.Paste
Range("A1").Select
Sachant que le chemin d'accès des fichiers temporaires d'outlook (que j'utilise) est celui ci :
C:\Users\nom_utilisateur\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\
Merci pour ton aide :)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
21 févr. 2014 à 21:50
21 févr. 2014 à 21:50
Bonjour,
Il fallait ajouter ce que tu veux dans la partie « exploitation » de la macro (et non pas insérer la macro dans ton code !)
Voici donc une solution qui ouvre le fichier csv (j'ai supposé qu'il s'agit d'un fichier csv "en français", c'est à dire dans lequel la virgule est le séparateur décimal et le point-virgule sert de séparateur de champs), copie les données dans un nouveau fichier vierge (que tu pourras enregistrer sous blablabla.xlsm) et referme le fichier csv sans le modifier.
Il fallait ajouter ce que tu veux dans la partie « exploitation » de la macro (et non pas insérer la macro dans ton code !)
Voici donc une solution qui ouvre le fichier csv (j'ai supposé qu'il s'agit d'un fichier csv "en français", c'est à dire dans lequel la virgule est le séparateur décimal et le point-virgule sert de séparateur de champs), copie les données dans un nouveau fichier vierge (que tu pourras enregistrer sous blablabla.xlsm) et referme le fichier csv sans le modifier.
Option Explicit
Option Private Module
'
' Note : il faut activer les références (dans Outils > Références ...) à :
' - Microsoft Scripting Runtime
Public Sub MàJ()
' Analyse les fichiers du répertoire et trouve le plus récent
'
Const préfixe As String = "ccm (" 'Préfixe des noms de fichier
Const suffixe As String = ").csv" 'Suffixe des noms de fichier
'
Dim objFSO As FileSystemObject 'File System Object
Dim objRep As Scripting.Folder 'dossier à analyser
Dim objFiles As Scripting.Files 'collection des fichiers du dossier
Dim objFile As Scripting.File 'fichier de la collection
Dim wbkOrg As Workbook 'Classeur origine
Dim wbkDst As Workbook 'Classeur destination
Dim strChemin As String 'chemin du dossier
Dim nomComplet As String 'Nom complet du fichier (avec le chemin)
Dim dateModification As Date 'Date de modification du fichier
'Définir le contexte d'exécution: arrêt interface utilisateur, actualisation écran et calculs
Application.Interactive = False
Application.Calculation = xlCalculationManual
Application.Cursor = xlWait
Application.ScreenUpdating = False
'Définir le dossier à analyser par exemple :
strChemin = "C:\Users\nom_utilisateur\AppData\Local\Microsoft\" & _
"Windows\Temporary Internet Files\Content.Outlook"
'Lister l'arborescence du dossier
On Error Resume Next
Set objFSO = New FileSystemObject
Set objRep = objFSO.GetFolder(strChemin) 'dossier
Set objFiles = objRep.Files 'fichiers
On Error GoTo 0
'- analyser chaque nom de fichier
For Each objFile In objFiles
If InStr(1, objFile.Name & préfixe, préfixe) = 1 And _
InStr(1, StrReverse(objFile.Name) & StrReverse(suffixe), StrReverse(suffixe)) = 1 Then
'-- si le nom de fichier commence par le préfixe et termine par le suffixe ...
With objFile
'... et si le fichier est plus récent ...
If .DateLastModified > dateModification Then
'... mémoriser le nom et la date du fichier.
nomComplet = .Path
dateModification = .DateLastModified
End If
End With
End If
Next
'Ouvrir le fichier csv (au format csv français séparé par des points-virgules)
Set wbkOrg = Workbooks.Open(Filename:=nomComplet, Format:=4, local:=True)
'Créer le fichier destination (un seule feuille vierge)
Set wbkDst = Workbooks.Add(xlWBATWorksheet)
'Copier les données
wbkOrg.Worksheets(1).UsedRange.Copy wbkDst.Worksheets(1).Range("A1")
'Fermer le fichier csv sans l'enregistrer
wbkOrg.Saved = True
wbkOrg.Close
'- libérer les objets
Set objFSO = Nothing
Set objRep = Nothing
Set objFiles = Nothing
Set objFile = Nothing
'Rétablir le contexte initial
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Cursor = xlDefault
Application.Interactive = True
End Sub