Autres ouvrir en vba un fichier CSV qui se trouve dans un fichier .zip

Cobra

XLDnaute Nouveau
Bonjour,

je désir ouvrir un fichier CSV que je reçois sous format ZIP pour en extraire les données que j'ai besoin dans excell 2007.
Actuellement je dois le décompressé dans un autre dossier pour faire fonctionner ma macro. (avec "Application.GetOpenFilename" je peux choisir le fichier mais pas de prendre le CSV du fichier ZIP)
est il possible de décompresser le fichier et l'ouvrir directement ?

en vous remerciant d'avance
Cobra
 
Solution
puré tu lis pas les messages toi c'est pas possible
REGARDE LE POST 22!!!!!!!

et pour le plantage du a l'existence du dossier
on contrôle son existence et suppression si il existe
VB:
Sub openZIPCSV()
    Dim FSO As Object, fichier As Variant, dossierTemp As Variant, DefPath As String

    fichier = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", MultiSelect:=False)
    If fichier = False Then Exit Sub

    DefPath = Mid(fichier, 1, InStrRev(fichier, "\"))

    'création d'un dossier temporaire au meme endroit
    dossierTemp = DefPath & "dézippé\":
    If Dir(dossierTemp) <> "" Then Kill (dossierTemp)
    MkDir dossierTemp
    'copie des fichiers du zip dans le dossier temporaire...

patricktoulon

XLDnaute Barbatruc
sinon tiens j'ai retrouvé ca dans mes archives vba6 et adapté pour l'occase

VB:
Sub openZIPCSV()
    Dim FSO As Object, fichier As Variant, dossierTemp As Variant, DefPath As String

    fichier = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", MultiSelect:=False)
    If fichier = False Then Exit Sub

    DefPath = Mid(Fname, 1, InStrRev(fichier, "\"))

    'création d'un dossier temporaire au meme endroit
    dossierTemp = DefPath & "dézippé\": MkDir dossierTemp

    'copie des fichiers du zip dans le dossier temporaire créé précédemment
    With CreateObject("Shell.Application"): .Namespace(dossierTemp).CopyHere .Namespace(fichier ).items: End With

    'Si on veut extraire un seul fichier, faire ca ( si le nom est connu bien evidement):
    'oApp.Namespace(dossierTemp).CopyHere oApp.Namespace(fichier ).items.Item("test.txt")

    'MsgBox "les fichiers sont ici " & dossierTemp

    If Dir(dossierTemp & "\*.csv") <> "" Then Workbooks.Open Dir(dossierTemp & "\*.csv"),local:=true ' ouvre le premier fichier du ((dir"*.csv"))

    On Error Resume Next
    With CreateObject("scripting.filesystemobject"): .deletefolder Environ("Temp") & "\Temporary Directory*", True: End With

End Sub

tu peux bien évidemment remplacer open opentext faire un text colone etc....
 
Dernière édition:

Cobra

XLDnaute Nouveau
merci Patricktoulon,

je vais essayer d'adapter cela et je reviens avec le résultat

de mon coté j'ai trouvé ceci sur la toile avec FSo (je n'ai pas encore eu le temps de voir si fonctionne)
 

Pièces jointes

  • ouvrir un zip.xlsm
    12.2 KB · Affichages: 13

Staple1600

XLDnaute Barbatruc
Re

[Pour information]
Si un Maciste venait à passer par ici, il ne pourra pas utiliser Sub openZIPCSV().
Pourquoi?
Parce qu'entre une pomme et une fenêtre, mieux vaut la fenêtre :)
(en tout cas dans le monde de VBA) ;)
(Et parce que Bill était plus gentil que Steve, à ce qu'il parait)
[/Pour informations]

NB: Ce message étant à caractère informatif, il n'est pas nécessaire d'y répondre.
Et seuls les Macistes auront un intérêt à le lire.
 

Cobra

XLDnaute Nouveau
j'ai un petit problème, (je suis un peu dépassé)

la macro crée le directory "dézippé" dans le dossier ou se trouve Les zip (il y a un seul fichier CSV par zip) puis vient une fenêtre éerreur d'exécution 75 accès chemin/fichier"
dans la macro
dossierTemp = DefPath & "dézippé\": MkDir dossierTemp
"MkDir dossierTemp" est mit en surbriance
je ne comprends pas puisqu'il la crée lui même (le dossier dézippé est vide)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG