OVH Cloud OVH Cloud

Sauvegarde réponse à Jean-Marc

2 réponses
Avatar
André
Merci Jean-Marc de m'avoir répondu.
Afin d'y voir plus clair j'ai joint la macro complète de sauvegarde.
Précision je suis sous xp familiale, excel 2000, le disque C: est sous
win98se, le disque D: a 2 partitions, la partition D: est pour les fichiers,
et le partion E: XP avec les logiciels.
Pour la sauvegarde le fichier sur A: n'est pas écrasé lors du 1er passage,
au 2ème pas de problème
J'ai enlevé Kill A: et c'est pareil.
Je sais qu'il faut éviter les Goto mais je n'ai pas su faire autrement.
Sous win98se les macros sont en français et c'est depuis mon passage sous XP
que le problème sauvegarde se pose.
Malgré diverses modifications depuis plusieurs mois je ne trouve pas.
Ce type de sauvegarde est utilisé par d'autres fichiers, avec les mêmes
problèmes.
Je ne suis pas expert en vba aussi j'ai besoin de l'assistance de personnes
plus compétentes.
Merci.
-------------------------------------------------------------------------------------------------------------------------------------
Sub CopieClasseurXP()

' enregistre le classeur
ActiveWorkbook.Save

LigneDébut:
MsgBox "Veuillez mettre une disquette", vbOKOnly + vbExclamation,
"Sauvegarde"

On Error Resume Next
ChDir "A:\"
If Err.Number <> 0 Then
MsgBox "Pas de disquette dans le lecteur", vbOKOnly + vbInformation,
"Lecteur disquette"
GoTo LigneDébut
ElseIf Err.Number = 0 Then
MonFichier = Dir("a:\*.*")
End If

' regarde si la disquette est DépMalAs\DépAnAct.xls
If MonFichier = "DépAnAct.xls" Then
MsgBox "Dernière Sauvegarde le " & FileDateTime("a:\DépAnAct.xls")
GoTo LigneTaille
ElseIf MonFichier = "BACKUP.001" Then
GoTo LigneTaille
End If

' regarde si la disquette est vide
If MonFichier = "" Then
GoTo LigneTaille
End If
' regarde si la disquette est <> DépMalAs\DépAnAct.xls
If MonFichier <> "DépAnAct.xls" Then
MonFichier = Dir("a:\*.*")
msg = "Ce n'est pas la bonne disquette. Veuillez la changer"
Style = vkOkOnly + vbExclamation
Titre = MonFichier
Réponse = MsgBox(msg, Style, Titre)
GoTo LigneDébut
End If

LigneTaille:
ChDir "D:DépMalAs"
MatailleD = FileLen("DépAnAct.xls")

' si le fichier dépasse 1 440 000 octets sauvegarde avec backup
If MatailleD > 1440000 Then
Call sauvdisquetteXP
GoTo LigneFin
Else
End If

' sauvegarde sur la disquette
Application.StatusBar = Space(15) & "SAUVEGARDE DEPENSES EN COURS"

ActiveWorkbook.SaveCopyAs "e:\DépAnAct.xls"
FileCopy "e:\DépAnAct.xls", "a:\DépAnAct.xls"

' donne la taille du fichier intermédiaire sur C
MatailleE = FileLen("e:\DépAnAct.xls")
' donne la taile du fichier disquette
MatailleA = FileLen("a:\DépAnAct.xls")

' compare les fichiers
' si fichiers identiques la copie est bonne
If MatailleE = MatailleA Then
Application.StatusBar = Space(15) & "SAUVEGARDE DEPENSES TERMINEE"
msg = "Fichier Dépenses_Recettes taille " & MatailleE & Chr(13) &
Chr(10) & Chr(10)
msg1 = "Sauvegarde terminée avec succès"
Style = vkOkOnly
Réponse = MsgBox(msg + msg1, Style)
GoTo LigneQuitter

' si fichiers différents erreur sauvegarde
ElseIf MatailleE <> MatailleA Then
msg1 = "Taille fichier disque " & MatailleE & vbLf
'retour ligne
msg2 = "Taille fichier disquette " & MatailleA & vbLf &
vbNewLine 'retour ligne + saut de ligne
msg3 = "Veuillez vérifier votre disquette par un formatage "
Style = vbOKOnly + vbExclamation
Title = "Erreur sauvegarde"
Réponse = MsgBox(msg1 + msg2 + msg3, Style, Title)
End If

LigneQuitter:
' pour la prochaine sauvegarde, supprime du disque e le fichier créé
Kill "e:\DépAnAct.xls"
Call Auto_Close
LigneFin:
' retourne à l'affichage du bureau
Application.Quit

End Sub

Sub sauvdisquetteXP()
RetVal = Shell("e:\sXPdépe.bat", 1)
End Sub

2 réponses

Avatar
jean-marc
"André" wrote in message
news:dfgp40$dt$
Merci Jean-Marc de m'avoir répondu.
Afin d'y voir plus clair j'ai joint la macro complète de sauvegarde.
Précision je suis sous xp familiale, excel 2000, le disque C: est sous
win98se, le disque D: a 2 partitions, la partition D: est pour les


fichiers,
et le partion E: XP avec les logiciels.
Pour la sauvegarde le fichier sur A: n'est pas écrasé lors du 1er passage,
au 2ème pas de problème
J'ai enlevé Kill A: et c'est pareil.
Je sais qu'il faut éviter les Goto mais je n'ai pas su faire autrement.
Sous win98se les macros sont en français et c'est depuis mon passage sous


XP
que le problème sauvegarde se pose.
Malgré diverses modifications depuis plusieurs mois je ne trouve pas.
Ce type de sauvegarde est utilisé par d'autres fichiers, avec les mêmes
problèmes.



Hello,

j'ai lu ton code; Il y a plusieurs choses que je ne comprend pas.
J'aimerais comprendre avant d'essayer de debugger.

Il y a des commentaires qui semblent contredire le code qui
va en dessous, par exemple:
' donne la taille du fichier intermédiaire sur C
MatailleE = FileLen("e:DépAnAct.xls")

On est sur C ou sur E ?


A un autre endroit, on vérifie quelque chose sur D:
LigneTaille:
ChDir "D:DépMalAs"
MatailleD = FileLen("DépAnAct.xls")

Que vient il faire la ?

D'autre part, tu écris:

ChDir "D:DépMalAs"

Ne veux tu pas plutot dire:

ChDir "D:DépMalAs"

Finalement, comme les commentaires ne correspondent pas au code,
et comme il semnble y avoir une gestion des lecteurs un peu
compliquéé,le plus simple n'est il pas d'expliquer ici
EXACTEMENT ce que dois faire le programme ?

Par exactement, je veux dire donner les spécifications exactes du
problème.

--
Jean-marc
Avatar
André
Jean-Marc,

Je te donne les réponses sous les questions.
Merci.

"jean-marc" a écrit dans le message de news:
431c243c$0$21810$

"André" wrote in message
news:dfgp40$dt$
Merci Jean-Marc de m'avoir répondu.
Afin d'y voir plus clair j'ai joint la macro complète de sauvegarde.
Précision je suis sous xp familiale, excel 2000, le disque C: est sous
win98se, le disque D: a 2 partitions, la partition D: est pour les


fichiers,
et le partion E: XP avec les logiciels.
Pour la sauvegarde le fichier sur A: n'est pas écrasé lors du 1er
passage,
au 2ème pas de problème
J'ai enlevé Kill A: et c'est pareil.
Je sais qu'il faut éviter les Goto mais je n'ai pas su faire autrement.
Sous win98se les macros sont en français et c'est depuis mon passage sous


XP
que le problème sauvegarde se pose.
Malgré diverses modifications depuis plusieurs mois je ne trouve pas.
Ce type de sauvegarde est utilisé par d'autres fichiers, avec les mêmes
problèmes.



Hello,

j'ai lu ton code; Il y a plusieurs choses que je ne comprend pas.
J'aimerais comprendre avant d'essayer de debugger.

Il y a des commentaires qui semblent contredire le code qui
va en dessous, par exemple:
' donne la taille du fichier intermédiaire sur C
MatailleE = FileLen("e:DépAnAct.xls")

On est sur C ou sur E ?


......Il s'agit bien de E. Commentaire non corrigé lors du passage sous
......Office 2000, oubli de ma part
---------------------------------------------------------------------------------------------------------

A un autre endroit, on vérifie quelque chose sur D:
LigneTaille:
ChDir "D:DépMalAs"
MatailleD = FileLen("DépAnAct.xls")

Que vient il faire la ?



....Le disque D contient les dossiers et fichiers que je crée.
Sur D "DépMalAs" est le dossier contenant le fichier"DépAnAct.xls", en
clair DépensesAnnéeActuelle.
J'ai entre autre un dossier Photos...
....E: reçoit les programmes comme Office2000...
------------------------------------------------------------------------------------------------------------
D'autre part, tu écris:

ChDir "D:DépMalAs"

Ne veux tu pas plutot dire:

ChDir "D:DépMalAs"


.......Tu as raison
-------------------------------------------------------------------------------------------------------------

Finalement, comme les commentaires ne correspondent pas au code,
et comme il semnble y avoir une gestion des lecteurs un peu
compliquéé,le plus simple n'est il pas d'expliquer ici
EXACTEMENT ce que dois faire le programme ?



.....Après avoir rentré les nouvelles données dans DépAnAct.xls, je
sauvegarde tout le fichier sur la disquette A:
.....Avant je vérifie qu'il y a une disquette, que cette disquette est bien
DépAnAct( sauvegarde précédente ), si oui
.....j'indique la date de la dernière sauvegarde et par Goto je vais sur
LigneTaille.
.....A ce niveau vérification que le fichier tient sur une disquette, sinon
sauvegarde par Backup, et je sauvegarde le
.....nouveau fichier.

.....Si la disquette est une nouvelle disquette formatée pas de problème
.....Si la disquette contient déjà un fichier DépAnAct, le nouveau fichier
devrait écraser l'ancien, ce qui n'est pas le cas
.....au lancement de la 1ère sauvegarde
.....en relancant la sauvegarde le nouveau fichier est bien enregistré
.....comparaison entre la taille sur D: et sur la disquette A: pour vérifier
que la sauvegarde est bonne

.....Ne réussissant pas à écraser la disquette la 1ère fois, j'ai essayé
d'effacer la disquette A: par Kill "A:DépAnAct" ce qui ne s'accomplit pas,
j'ai essayé Kill "*.*", même problème. J'ai donc effacé cette ligne.

....Je précise avec Office 97 sous win98se aucun problème, c'est depuis
Office 2000 avec XP que le problème se pose.
....Je pense qu'à la place de Kill je devrais utiliser une instruction de
formatage de disquette, hélas sous 2000 je ne connais
....pas le nom de cette instruction si elle existe.
....Voilà où je patauge.
-------------------------------------------------------------------------------------------------------------------------------

Par exactement, je veux dire donner les spécifications exactes du
problème.

--
Jean-marc