Importer des données d'un classeur change de nom toutes les semaines
1 réponse
oliver6
Bonjour,
je souhaite importer des donn=E9es d'un classeur qui est modifier chaque
matin =E0 6h00
Ce classeur change de nom chaque semaine (ex: semaine 32: SS32.csv,
semaine 33: SS33.csv)
Peut'on prendre comme r=E9f=E9rence la date de modification?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Charabeuh
Bonjour, deux pistes... Chercher le fichier de plus grand numéro de semaine dans le répertoire source. en VBA, une fonction qui retourne le fichier de plus grande semaine. Doit fonctionner que les fichiers des semaines 1 à 9 soient enregistrés en SS01.cvs ou bien SS1.csv
Option Explicit
Public Function Ficher_Semaine() As String Dim FileName As String, Path As String Dim Nsem, X
While FileName <> "" X = InStr(FileName, ".") - 1 X = CInt(Mid(Left(FileName, X), 3, 2)) If X >= Nsem Then Nsem = X Ficher_Semaine = FileName End If FileName = Dir Wend
End Function
Utilisation en VBA Sub test() MsgBox Ficher_Semaine() End Sub
ou bien une autre façon par saisie directe de la semaine (permet de traiter des semaines passées)
Option Explicit
Sub Autrement() Dim NumSem As Integer, FileName As String Dim ImportFile As String, Continuer As Boolean
On Error GoTo Autrement_Err_1 Continuer = True While Continuer NumSem = Application.InputBox(prompt:="Quelle semaine importer (1 à 53) - 0=FIN ?:", Type:=1) If NumSem = 0 Then Exit Sub FileName = "c:extractSS" & NumSem & ".csv"
Select Case NumSem Case 1 To 9 FileName = "c:extractSS" & NumSem & ".csv" ImportFile = Dir(FileName) If ImportFile = "" Then FileName = "c:extractSS0" & NumSem & ".csv" ImportFile = Dir(FileName) End If If ImportFile = "" Then MsgBox "Fichier sem " & NumSem & " pas trouvé" Else MsgBox "Fichier à importer " & ImportFile Continuer = False End If Case 10 To 53 FileName = "c:extractSS" & NumSem & ".csv" ImportFile = Dir(FileName) If ImportFile = "" Then MsgBox "Fichier sem : " & NumSem & " pas trouvé" Else MsgBox "Fichier à importer " & ImportFile Continuer = False End If Case Else MsgBox "Erreur saisie sem : " & NumSem End Select Wend Exit Sub
Autrement_Err_1: MsgBox "Ereur non gérée : " & Error(Err)
End Sub
"oliver6" a écrit dans le message de groupe de discussion :
Bonjour, je souhaite importer des données d'un classeur qui est modifier chaque matin à 6h00 Ce classeur change de nom chaque semaine (ex: semaine 32: SS32.csv, semaine 33: SS33.csv) Peut'on prendre comme référence la date de modification?
Bonjour,
deux pistes...
Chercher le fichier de plus grand numéro de semaine dans le répertoire
source.
en VBA, une fonction qui retourne le fichier de plus grande semaine.
Doit fonctionner que les fichiers des semaines 1 à 9 soient
enregistrés en SS01.cvs ou bien SS1.csv
Option Explicit
Public Function Ficher_Semaine() As String
Dim FileName As String, Path As String
Dim Nsem, X
While FileName <> ""
X = InStr(FileName, ".") - 1
X = CInt(Mid(Left(FileName, X), 3, 2))
If X >= Nsem Then
Nsem = X
Ficher_Semaine = FileName
End If
FileName = Dir
Wend
End Function
Utilisation en VBA
Sub test()
MsgBox Ficher_Semaine()
End Sub
ou bien une autre façon par saisie directe de la semaine
(permet de traiter des semaines passées)
Option Explicit
Sub Autrement()
Dim NumSem As Integer, FileName As String
Dim ImportFile As String, Continuer As Boolean
On Error GoTo Autrement_Err_1
Continuer = True
While Continuer
NumSem = Application.InputBox(prompt:="Quelle semaine importer (1 à
53) - 0=FIN ?:", Type:=1)
If NumSem = 0 Then Exit Sub
FileName = "c:extractSS" & NumSem & ".csv"
Select Case NumSem
Case 1 To 9
FileName = "c:extractSS" & NumSem & ".csv"
ImportFile = Dir(FileName)
If ImportFile = "" Then
FileName = "c:extractSS0" & NumSem & ".csv"
ImportFile = Dir(FileName)
End If
If ImportFile = "" Then
MsgBox "Fichier sem " & NumSem & " pas trouvé"
Else
MsgBox "Fichier à importer " & ImportFile
Continuer = False
End If
Case 10 To 53
FileName = "c:extractSS" & NumSem & ".csv"
ImportFile = Dir(FileName)
If ImportFile = "" Then
MsgBox "Fichier sem : " & NumSem & " pas trouvé"
Else
MsgBox "Fichier à importer " & ImportFile
Continuer = False
End If
Case Else
MsgBox "Erreur saisie sem : " & NumSem
End Select
Wend
Exit Sub
Autrement_Err_1:
MsgBox "Ereur non gérée : " & Error(Err)
End Sub
"oliver6" <oliver6@free.fr> a écrit dans le message de groupe de discussion
: 33fe3d04-5544-4d8d-b13e-a8798ec7f20b@z28g2000yqh.googlegroups.com...
Bonjour,
je souhaite importer des données d'un classeur qui est modifier chaque
matin à 6h00
Ce classeur change de nom chaque semaine (ex: semaine 32: SS32.csv,
semaine 33: SS33.csv)
Peut'on prendre comme référence la date de modification?
Bonjour, deux pistes... Chercher le fichier de plus grand numéro de semaine dans le répertoire source. en VBA, une fonction qui retourne le fichier de plus grande semaine. Doit fonctionner que les fichiers des semaines 1 à 9 soient enregistrés en SS01.cvs ou bien SS1.csv
Option Explicit
Public Function Ficher_Semaine() As String Dim FileName As String, Path As String Dim Nsem, X
While FileName <> "" X = InStr(FileName, ".") - 1 X = CInt(Mid(Left(FileName, X), 3, 2)) If X >= Nsem Then Nsem = X Ficher_Semaine = FileName End If FileName = Dir Wend
End Function
Utilisation en VBA Sub test() MsgBox Ficher_Semaine() End Sub
ou bien une autre façon par saisie directe de la semaine (permet de traiter des semaines passées)
Option Explicit
Sub Autrement() Dim NumSem As Integer, FileName As String Dim ImportFile As String, Continuer As Boolean
On Error GoTo Autrement_Err_1 Continuer = True While Continuer NumSem = Application.InputBox(prompt:="Quelle semaine importer (1 à 53) - 0=FIN ?:", Type:=1) If NumSem = 0 Then Exit Sub FileName = "c:extractSS" & NumSem & ".csv"
Select Case NumSem Case 1 To 9 FileName = "c:extractSS" & NumSem & ".csv" ImportFile = Dir(FileName) If ImportFile = "" Then FileName = "c:extractSS0" & NumSem & ".csv" ImportFile = Dir(FileName) End If If ImportFile = "" Then MsgBox "Fichier sem " & NumSem & " pas trouvé" Else MsgBox "Fichier à importer " & ImportFile Continuer = False End If Case 10 To 53 FileName = "c:extractSS" & NumSem & ".csv" ImportFile = Dir(FileName) If ImportFile = "" Then MsgBox "Fichier sem : " & NumSem & " pas trouvé" Else MsgBox "Fichier à importer " & ImportFile Continuer = False End If Case Else MsgBox "Erreur saisie sem : " & NumSem End Select Wend Exit Sub
Autrement_Err_1: MsgBox "Ereur non gérée : " & Error(Err)
End Sub
"oliver6" a écrit dans le message de groupe de discussion :
Bonjour, je souhaite importer des données d'un classeur qui est modifier chaque matin à 6h00 Ce classeur change de nom chaque semaine (ex: semaine 32: SS32.csv, semaine 33: SS33.csv) Peut'on prendre comme référence la date de modification?