OVH Cloud OVH Cloud

sauvegarde sur plusieurs disquettes

4 réponses
Avatar
andrech
Bonjour,

J'ai écrit la procédure suivante:

LigneTaille:
MatailleD = FileLen("d:\ComptaAnnéeEnCours.xls")

' si le fichier dépasse 1 440 000 octets sauvegarde avec backup
If MatailleD > 1442000 Then
MsgBox " Taille du fichier trop grande pour une disquette.Utiliser
la sauvegarde du bureau"
Workbooks.Close
'Application.Quit
Call Auto_Fermer
End If
Application.StatusBar = Space(15) & "SAUVEGARDE DEPENSES EN COURS"

' sauvegarde sur la disquette
ActiveWorkbook.SaveCopyAs "c:\ComptaAnnéeEnCours.xls"
FileCopy "c:\ComptaAnnéeEnCours.xls", "a:\ComptaAnnéeEnCours.xls"

Comment écrire une procédure permettant de sauvegarder sur plusieurs
disquettes, quand le fichier dépasse 1 442 000 octets.
Ne connaissant pas assez le VBA 6 Excel2000, je n'ai pas trouvé de fonction
BACKUP.
Exise-t-il une fonction pour compresser le fichier.
Merci à ceux qui peuvent me répondre.

4 réponses

Avatar
ng
Salut,

Oui on pourrait découper le fichier en plusieurs morceau mais il faudrait
faire une procédure pour reconstituer le fichier.
Pouquoi ne pas utiliser un CDRW, c'est plus sûr pour ce genre de sauvegarde,
non ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

andrech wrote:
Bonjour,

J'ai écrit la procédure suivante:

LigneTaille:
MatailleD = FileLen("d:ComptaAnnéeEnCours.xls")

' si le fichier dépasse 1 440 000 octets sauvegarde avec backup
If MatailleD > 1442000 Then
MsgBox " Taille du fichier trop grande pour une
disquette.Utiliser la sauvegarde du bureau"
Workbooks.Close
'Application.Quit
Call Auto_Fermer
End If
Application.StatusBar = Space(15) & "SAUVEGARDE DEPENSES EN
COURS"

' sauvegarde sur la disquette
ActiveWorkbook.SaveCopyAs "c:ComptaAnnéeEnCours.xls"
FileCopy "c:ComptaAnnéeEnCours.xls",
"a:ComptaAnnéeEnCours.xls"

Comment écrire une procédure permettant de sauvegarder sur plusieurs
disquettes, quand le fichier dépasse 1 442 000 octets.
Ne connaissant pas assez le VBA 6 Excel2000, je n'ai pas trouvé de
fonction BACKUP.
Exise-t-il une fonction pour compresser le fichier.
Merci à ceux qui peuvent me répondre.


Avatar
Gloops
Salut,

Pour sûr un CD c'est plus pratique et plus facile.
Je note toutefois que certaines messageries limitent l'envoi de pièces
jointes à la taille d'une disquette.

Sinon, pour répondre (plus ou moins) à la question, on trouve sur les
sites de téléchargement des utilitaires pour fragmenter un fichier (et
le regrouper à l'arriver). On peut faire ça avec Winzip mais à condition
de disposer du compte de disquettes, ça n'est pas le top du pratique.

Certes, un traitement intégré au programme aurait plus de classe, mais à
cette heure c'est tout ce que j'ai en magasin ...

_________________________________
ng a écrit, le 27/10/2004 08:45 :

Salut,

Oui on pourrait découper le fichier en plusieurs morceau mais il faudrait
faire une procédure pour reconstituer le fichier.
Pouquoi ne pas utiliser un CDRW, c'est plus sûr pour ce genre de sauvegarde,
non ?



Avatar
ng
Oui ou on peut le splitter non copressé, si ca t'interesse je te ferai un
exemple.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Gloops wrote:
Salut,

Pour sûr un CD c'est plus pratique et plus facile.
Je note toutefois que certaines messageries limitent l'envoi de pièces
jointes à la taille d'une disquette.

Sinon, pour répondre (plus ou moins) à la question, on trouve sur les
sites de téléchargement des utilitaires pour fragmenter un fichier (et
le regrouper à l'arriver). On peut faire ça avec Winzip mais à
condition de disposer du compte de disquettes, ça n'est pas le top du
pratique.
Certes, un traitement intégré au programme aurait plus de classe,
mais à cette heure c'est tout ce que j'ai en magasin ...

_________________________________
ng a écrit, le 27/10/2004 08:45 :

Salut,

Oui on pourrait découper le fichier en plusieurs morceau mais il
faudrait faire une procédure pour reconstituer le fichier.
Pouquoi ne pas utiliser un CDRW, c'est plus sûr pour ce genre de
sauvegarde, non ?




Avatar
ng
Salut,

Voici donc l'exemple demandé :

Private Sub Form_Load()
'//attention il faut mettre un à la fin des chemins de répertoire
'//on pourrait aussi stocket le nom du fichier dans len.cfg etc...
'//sinon voici comment ca marche
Call CreateBackup("C:Documents and
Settingsng.NICOLAS.000Bureautesttest.rar", "C:Documents and
Settingsng.NICOLAS.000Bureautestsauv", 1413120)
Call RestoreBackup("C:Documents and
Settingsng.NICOLAS.000Bureautestsauv", "C:Documents and
Settingsng.NICOLAS.000Bureautesttest_restored.rar")
'//je te laisse adapter ca pour des disquettes (instertion d'une
nouvelle disquette a chaque création de part...)
End Sub

Public Sub CreateBackup(strFile As String, strDestFolder As String,
dwPacketSize As Long)
Dim dwLen As Long, k As Integer, i As Long
Dim l As Integer, wCpt As Integer
Dim strBuffer As String
k = FreeFile
Open strFile For Binary As #k
dwLen = LOF(k)
l = FreeFile
Open strDestFolder & "len.cfg" For Output As #l
Print #l, dwLen
Close #l
For i = 1 To dwLen Step dwPacketSize
wCpt = wCpt + 1
If i + dwPacketSize > dwLen Then
strBuffer = String$(dwLen - i + 1, vbNullChar)
Else
strBuffer = String$(dwPacketSize, vbNullChar)
End If
Get #k, i, strBuffer
l = FreeFile
Open strDestFolder & "part" & wCpt & ".bck" For Binary As #l
Put #l, , strBuffer
Close #l
Next
Close #k
strBuffer = ""
End Sub

Public Sub RestoreBackup(strDir As String, strOutFile As String)
Dim k As Integer, strBuffer As String, dwLen As Long
Dim wCpt As Integer, l As Integer, dwLenCount As Long
Dim dwCurrentLen As Long
k = FreeFile
Open strDir & "len.cfg" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
dwLen = Val(strBuffer)
If dwLen > 0 Then
dwLenCount = 1
k = FreeFile
Open strOutFile For Binary As #k
Do
wCpt = wCpt + 1
l = FreeFile
Open strDir & "part" & wCpt & ".bck" For Binary As #l
dwCurrentLen = LOF(l)
strBuffer = String$(dwCurrentLen, vbNullChar)
Get #l, , strBuffer
Put #k, dwLenCount, strBuffer
dwLenCount = dwLenCount + dwCurrentLen
Close #l
Loop Until dwLenCount - 1 >= dwLen
Close #k
End If
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

ng wrote:
Oui ou on peut le splitter non copressé, si ca t'interesse je te
ferai un exemple.


Gloops wrote:
Salut,

Pour sûr un CD c'est plus pratique et plus facile.
Je note toutefois que certaines messageries limitent l'envoi de
pièces jointes à la taille d'une disquette.

Sinon, pour répondre (plus ou moins) à la question, on trouve sur les
sites de téléchargement des utilitaires pour fragmenter un fichier
(et le regrouper à l'arriver). On peut faire ça avec Winzip mais à
condition de disposer du compte de disquettes, ça n'est pas le top du
pratique.
Certes, un traitement intégré au programme aurait plus de classe,
mais à cette heure c'est tout ce que j'ai en magasin ...

_________________________________
ng a écrit, le 27/10/2004 08:45 :

Salut,

Oui on pourrait découper le fichier en plusieurs morceau mais il
faudrait faire une procédure pour reconstituer le fichier.
Pouquoi ne pas utiliser un CDRW, c'est plus sûr pour ce genre de
sauvegarde, non ?