OVH Cloud OVH Cloud

Dé-zipper des fichiers

7 réponses
Avatar
Phil85
Bonjour,

dans un code access gérant des tables attachées excel pour mettre à jour des
tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers excel
dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il est
plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:\program files\winzip\winzip32.exe -min -e """ &
Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire installer
autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la fin
de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus récente
?
et avec quelle commande permettant de connaître la date de modification d'un
fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85

7 réponses

Avatar
Bonjour,
Essaye d'exécuter la commande shell par l'intermédiaire de cette fonction :
http://www.3stone.be/access/articles.php?lng=fr&pgp

Sinon, j'avais cette base exemple dans mes dossiers : http://cjoint.com/?dztAoiwj7K
je ne sais où je l'ai trouvée, l'auteur est un certain "Benoit"

elle contient le code pour faire tourner les dlls zip32.dll et unzip32.dll,
ce qui permet de contourner la version de winzip 8 installée sur les postes

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------


"Phil85" a écrit dans le message de news:
Bonjour,

dans un code access gérant des tables attachées excel pour mettre à jour des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers excel dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il est plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """ & Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire installer autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la fin de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le répertoire de travail
mais comment respecter la condition de ne copier que la version plus récente ?
et avec quelle commande permettant de connaître la date de modification d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85



Avatar
Jabberwock Jabberwock
Bonjour,

Je pense qu'en passant par une dll dédiée à ca ton prb sera résolu.
En plus grace à cela, si ton chemin d'istallation change tu n'auras pas à
changer ton code.

http://www.dll-files.com/dllindex/dll-files.shtml?zlib

Cordialement.

Hello Phil85,

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à
jour des
tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers
excel
dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il
est
plus plus récent
que l'existant (date de modification)
j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement
1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e
""" &
Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)
Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire
installer
autre chose.
Cette commande fonctionne mais le code se poursuit sans attendre
la fin
de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?
2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente
?
et avec quelle commande permettant de connaître la date de
modification d'un
fichier ?
Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange
de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?
Merci de votre aide

Phil85



Avatar
jt
Bonjour
Ajouter ce code en debut de module

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo,
vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

et changer
Retour = Shell(STR, vbMinimizedFocus)
en
ShellWait STR

le programme se poursuit lorsque winzip est terminé
je dois avouer que ce code n'est pas mien je ne sais plus ou je l'ai trouver
mais puisqu'il est bon


"Phil85" a écrit dans le message de news:

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à jour
des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers excel
dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il est
plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """ &
Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire installer
autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la fin
de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente ?
et avec quelle commande permettant de connaître la date de modification
d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85



Avatar
Phil85
Merci beaucoup pour vos réponses
la procédure ci-dessous fonctionne parfaitement et m'a permis de résoudre la
première partie de mon problème
la DLL est plus problématique car je n'ai pas accès aux micros des
utilisateurs pour l'installer, l'appli access est diffusée
par Lotus Notes.

Je confirme mes précedentes demandes
Est-il possible de connaître avec du code VBA ou des cde shell la date de
modification d'un fichier et de pouvoir l'exploiter ?

De plus si quelqu'un sait s'il est possible d'extraire des données d'une
base Lotus notes avec VBA je suis prenneur

Merci pour votre aide

Phil85

"jt" a écrit dans le message de news:
%
Bonjour
Ajouter ce code en debut de module

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo,
vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

et changer
Retour = Shell(STR, vbMinimizedFocus)
en
ShellWait STR

le programme se poursuit lorsque winzip est terminé
je dois avouer que ce code n'est pas mien je ne sais plus ou je l'ai
trouver mais puisqu'il est bon


"Phil85" a écrit dans le message de news:

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à jour
des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers excel
dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il est
plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """ &
Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire installer
autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la
fin de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente ?
et avec quelle commande permettant de connaître la date de modification
d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85







Avatar
jt
Bonsoir
Pour extraire les données lotus il faut lotusSql c'est un produit gratuit

"Phil85" a écrit dans le message de news:

Merci beaucoup pour vos réponses
la procédure ci-dessous fonctionne parfaitement et m'a permis de résoudre
la première partie de mon problème
la DLL est plus problématique car je n'ai pas accès aux micros des
utilisateurs pour l'installer, l'appli access est diffusée
par Lotus Notes.

Je confirme mes précedentes demandes
Est-il possible de connaître avec du code VBA ou des cde shell la date de
modification d'un fichier et de pouvoir l'exploiter ?

De plus si quelqu'un sait s'il est possible d'extraire des données d'une
base Lotus notes avec VBA je suis prenneur

Merci pour votre aide

Phil85

"jt" a écrit dans le message de news:
%
Bonjour
Ajouter ce code en debut de module

Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId
As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal
hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo,
vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

et changer
Retour = Shell(STR, vbMinimizedFocus)
en
ShellWait STR

le programme se poursuit lorsque winzip est terminé
je dois avouer que ce code n'est pas mien je ne sais plus ou je l'ai
trouver mais puisqu'il est bon


"Phil85" a écrit dans le message de news:

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à jour
des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers excel
dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il
est plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """ &
Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire installer
autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la
fin de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente ?
et avec quelle commande permettant de connaître la date de modification
d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85











Avatar
jt
Re Bonsoir
En fait il s'agit de NotesSql
voir
http://www14.software.ibm.com/webapp/download/preconfig.jsp?id 06-03-13+07%3A25%3A58.680358R&S_TACT4CBW71&S_CMP=&s
"jt" a écrit dans le message de news:
%
Bonsoir
Pour extraire les données lotus il faut lotusSql c'est un produit gratuit

"Phil85" a écrit dans le message de news:

Merci beaucoup pour vos réponses
la procédure ci-dessous fonctionne parfaitement et m'a permis de résoudre
la première partie de mon problème
la DLL est plus problématique car je n'ai pas accès aux micros des
utilisateurs pour l'installer, l'appli access est diffusée
par Lotus Notes.

Je confirme mes précedentes demandes
Est-il possible de connaître avec du code VBA ou des cde shell la date de
modification d'un fichier et de pouvoir l'exploiter ?

De plus si quelqu'un sait s'il est possible d'extraire des données d'une
base Lotus notes avec VBA je suis prenneur

Merci pour votre aide

Phil85

"jt" a écrit dans le message de news:
%
Bonjour
Ajouter ce code en debut de module

Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId
As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal
hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False,
Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

et changer
Retour = Shell(STR, vbMinimizedFocus)
en
ShellWait STR

le programme se poursuit lorsque winzip est terminé
je dois avouer que ce code n'est pas mien je ne sais plus ou je l'ai
trouver mais puisqu'il est bon


"Phil85" a écrit dans le message de news:

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à
jour des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers
excel dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il
est plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """
& Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire
installer autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la
fin de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente ?
et avec quelle commande permettant de connaître la date de modification
d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85















Avatar
G.Genier
Pas besoin de l'installer sur les postes clients.
Sur ton poste seulement
Regarde XStandard.com.
La dll permet de créer un zip parfaitement compatible avec
winzip/winrar/7-zip...


"Phil85" a écrit dans le message de
news:
Merci beaucoup pour vos réponses
la procédure ci-dessous fonctionne parfaitement et m'a permis de résoudre
la

première partie de mon problème
la DLL est plus problématique car je n'ai pas accès aux micros des
utilisateurs pour l'installer, l'appli access est diffusée
par Lotus Notes.

Je confirme mes précedentes demandes
Est-il possible de connaître avec du code VBA ou des cde shell la date de
modification d'un fichier et de pouvoir l'exploiter ?

De plus si quelqu'un sait s'il est possible d'extraire des données d'une
base Lotus notes avec VBA je suis prenneur

Merci pour votre aide

Phil85

"jt" a écrit dans le message de news:
%
Bonjour
Ajouter ce code en debut de module

Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess


As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As
Long


Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal
hProcess


As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False,
Shell(JobToDo,


vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

et changer
Retour = Shell(STR, vbMinimizedFocus)
en
ShellWait STR

le programme se poursuit lorsque winzip est terminé
je dois avouer que ce code n'est pas mien je ne sais plus ou je l'ai
trouver mais puisqu'il est bon


"Phil85" a écrit dans le message de news:

Bonjour,

dans un code access gérant des tables attachées excel pour mettre à
jour



des tables
de la base access en cours, je dois pouvoir dé-zipper des fichiers
excel



dans
le répertoire de travail si le même fichier n'existe pas déjà ou s'il
est



plus plus récent
que l'existant (date de modification)

j'envisage de procéder comme ceci mais j'ai des lacunes pour certaines
fonctions
et quelques pb de fonctionnement

1) Dézipper dans un repertoire temporaire avec la commande

STR = "c:program fileswinzipwinzip32.exe -min -e """
&



Fichier.zip & """ """ & Repertoire & "temp"""
Retour = Shell(STR, vbMinimizedFocus)

Je précise que les utilisateurs ont tous Winzip 8.0 et uniquement
Winzip8.0,
je n'ai pas le choix de l'application et ne peux leur faire
installer



autre chose.

Cette commande fonctionne mais le code se poursuit sans attendre la
fin de la commande shell
Comment arrêter mon code et ne le poursuivre qu'après l'exécution
complète de la cde shell ?

2) Copier le fichier "fichier.xls" obtenu du repertoire temp vers le
répertoire de travail
mais comment respecter la condition de ne copier que la version plus
récente ?
et avec quelle commande permettant de connaître la date de modification
d'un fichier ?



Question complémentaire
Les fichiers excel zippés sont issus d'une base Lotus Note d'échange de
données entre plus de 50 utilisateurs
Est-il possible de lister (avec du code VBA) les fichiers zip d'un
formulaire Lotus Notes ouvert ?
Et de commander de détacher ces fichiers toujours avec du code VBA ?

Merci de votre aide

Phil85