IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Pb dezipper un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Par défaut [VBA-E] Pb dezipper un fichier
    Bonjour,

    j'ai un petit pour dezipper un fichier sous vba avec winzip

    en mode debug pas a pas ok pas de pb mais en mode automatique

    j'ai un message d'erreur



    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
     
    Private Sub UserForm_Initialize()
    'Declaration
        Dim myItems, myItem, myAttachments, myAttachment As Object
     
        Dim myOlApp As New Outlook.Application
        Dim myOlExp As Outlook.Explorer
        Dim myOlSel As Outlook.Selection
     
        Dim extension As String
        Dim nameattach As String
        Dim zipname As String
        Dim nbzip As Integer
        Dim myzip As String
        Dim myindex As Integer
        Dim tabzipfile(30) As String
        Dim shellunzip As String
     
        Dim nbattach As Integer
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim l As Integer
     
        Dim fso As FileSystemObject
        Set fso = New FileSystemObject
     
        'work on selected items
        Set myOlExp = myOlApp.ActiveExplorer
        Set myOlSel = myOlExp.Selection
     
     
        'for all items do...
        For Each myItem In myOlSel
     
        Debug.Print myItem
        zipname = Left(myItem, 14)
        Debug.Print zipname
     
        nbzip = 0
        k = 0
     
        zipname = Replace(zipname, " ", "")
        zipname = Replace(zipname, ":", "")
     
        txtzipname.Value = zipname
     
            'point on attachments
            Set myAttachments = myItem.Attachments
     
            'if there are some...
            If myAttachments.Count > 0 Then
     
            Debug.Print myAttachments.Count
     
                'for all attachments do...
                For i = 1 To myAttachments.Count
     
                Debug.Print i
     
                    'save them to destination
                    Debug.Print myAttachments(i)
     
                    extension = Right(myAttachments(i), 3)
                    Debug.Print extension
     
                    If ((extension = "doc") Or (extension = "DOC")) Then
     
                    Listfile.AddItem myAttachments(i)
                    Debug.Print myAttachments(i)
     
                    myAttachments(i).SaveAsFile mytempfolder & "\" & _
                       myAttachments(i).DisplayName
     
                    scenario = "doc"
                    Debug.Print scenario
     
     
     
                    End If
     
                    If ((extension = "zip") Or (extension = "ZIP")) Then
     
                        nbzip = nbzip + 1
                        Debug.Print nbzip
     
                        myzip = mytempfolder & "\" & myAttachments(i)
                        Debug.Print myzip
     
                        shellunzip = CheminWinZip & "\winzip32.exe -e"
                        Debug.Print shellunzip
     
                        myindex = i
                        Debug.Print myindex
     
                        tabzipfile(k) = myAttachments(i)
                        Debug.Print tabzipfile(k)
     
                        k = k + 1
                        Debug.Print k
     
                     'Listfile.AddItem myAttachments(i)
                     'Debug.Print myAttachments(i)
     
                     myAttachments(i).SaveAsFile mytempfolder & "\" & _
                        myAttachments(i).DisplayName
     
                      scenario = "zip"
                      Debug.Print scenario
     
                    End If
     
                Next i
     
                        If (nbzip = 1) Then
     
     
     
                        'myshell = "Shell (" & shellunzip & " " & Chr(34) & myzip & Chr(34) & " " & Chr(34) & mytempfolder & Chr(34) & ")"
                        'Debug.Print myshell
     
                        'Shell (shellunzip & " " & Chr(34) & myzip & Chr(34) & " " & Chr(34) & mytempfolder & Chr(34))
     
                         Shell (CheminWinZip & "winzip32.exe -e """ & myzip & """ """ & mytempfolder & """")
     
                        fso.DeleteFile myzip, True
     
                        Call lister
     
                        End If
     
                        If (nbzip > 1) Then
     
     
                        For l = 0 To (k - 1)
     
                        Listfile.AddItem tabzipfile(l)
                        Debug.Print tabzipfile(l)
     
     
                        Next l
     
     
                        End If
     
     
     
     
            End If
     
        Next
     
        nbattach = Listfile.ListCount
        Debug.Print nbattach
     
        For j = 0 To (nbattach - 1)
         Debug.Print j
        Debug.Print Listfile.Value
     
        Listfile.Selected(j) = True
     
        Next j
     
       '----------------------------'
        'Frmlistzip.Visible = False
        'Frmlistfile.Visible = False
        'Frmfile2zip.Visible = False
        'btnpushfile.Visible = False
        'btnremovefile.Visible = False
        frmnamezip.Visible = False
        btnproceed.Visible = False
        choixrep.Visible = False
     
        If scenario = "doc" Then
     
        chkboxrename.Visible = False
     
        Else
     
        chkboxrename.Visible = True
     
        End If
       '----------------------------'
     
     
     
     
     
     
    End Sub

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    peu-être rajouter un doEvents.. avant ta commande shell histoire que la sauvegarde de ton archive soit bien terminée avant de tenter son ouverture

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Essaie de mettre un doevents entre les deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Shell (CheminWinZip & "winzip32.exe -e """ & myzip & """ """ & mytempfolder & """")
    DoEvents                    
    fso.DeleteFile myzip, True
    Tu dis

    Grillé par bbil !
    Ah non ! je l'aurais mis là où je l'ai mis pour éviter au zip d'être supprimé avant d'être "dézippé" mais tu peux le mettre aux deux endroit, a coûte rien

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par ouskel'n'or
    ...
    Grillé par bbil !
    Ah non ! je l'aurais mis là où je l'ai mis pour éviter au zip d'être supprimé avant d'être "dézippé" mais tu peux le mettre aux deux endroit, a coûte rien
    à oui ousk'.. j'avais pas vu qu'il effaçait sont fichier .. bon faudrai faire une recherche sur ce forum ... dans les maniére d'attendre la fin de l'exécution d'un shell avant de faire la suite...
    de mémoire voir : Wscript.shell

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Dans les exemples, il mettent toujours DoEvents dans une boucle mais rien ne le justifie si une seule opération est en cours. Enfin, c'est mon avis... et je le partage
    L'aide dit bien
    DoEvents passe la main au système d'exploitation jusqu'à ce que ce dernier ait terminé de traiter les événements de sa file d'attente et que tous les codes de la file d'attente SendKeys aient été transmis.
    ...a devrait être suffisant...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    ta variable "CheminWinZip" est elle définit ailleurs que je ne vois aucune instanciation ?
    Pour ton pb existe t'il l'équivalent d'un sleep
    car tu pourrais le temporiser avec un sleep(100)

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens ousk'...

    voilà deux exemples pour t'aider à comprendre ce que j'ai voulu dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    Sub test1()
     Shell "notepad"
     DoEvents
     Stop 'Appuyer sur F5 pour continuer
     MsgBox "terminé", vbCritical
    End Sub
    Sub Test2()
      Set oShell = CreateObject("WScript.Shell")
      oShell.Run "notepad", 1, True
    '  Paramétres de oShell.Run strCommand,intWindowStyle,bWaitOnReturn
    '- strCommand : Chaîne de caractére, ligne de commande à exécuter
    '- intWindowStyle : 1 : Active la fenêtre dans sa taille et position d'origine
    '- bWaitOnReturn : à True attends la fin de l'execution du programme avant d'effectuer la suite.. '
    '
     DoEvents
     Stop 'Appuyer sur F5 pour continuer
     MsgBox "Terminé", vbCritical
    End Sub
    dans me test1 le code s'exécute sans aucune intervention sur l'application notepad.., et le test2 "Bloque" tant que notepad n'est pas terminé....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Tableau de données <=> Fichier Texte
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2005, 16h02
  2. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  3. dézipper un fichier
    Par karamazov994 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 28/04/2005, 10h26
  4. Dezipper un fichier grace a l'asp
    Par leviathan516 dans le forum ASP
    Réponses: 4
    Dernier message: 16/11/2004, 21h46
  5. [VBA-E] Evenement ouverture de fichier
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2002, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo