Sauvegarde sur disque dur exterieur

Résolu
acha -  
 acha -
Bonjour,

En VB6.3 comment ecrire une procedure pour sauvegarder un fichier sur disque dur exterieur et faire la restauration.
Merci

14 réponses

  1. Yoda
     
    Bonjour,

    Dans ton précédent post du 8 mai, tu disais que tu avait fait, en VB6, une sauvegarde sur disquette et que tu cherchais comment faire la même chose sur CD.

    Sur CD c'est pas possible parce qu'un CD est en lecture seule.

    Mais sur un DD externe, c'est comme sur une disquette, sauf que la disquette (floppy) est toujours associée à l'unité A: et que le DD peut être associé à une unité disponible allant de D: à Z:

    Dans ton programme VB6, il n'y a qu'une lettre à changer.
    Assures toi que ton DD soit toujours monté sur la même unité (par exemple toujours sur S:) et le tour est joué.

    ;)
    0
  2. acha
     
    Yoda, merci pour ta réponse du 9 mai 2012.
    Mes sauvegardes sur disquettes font appel,entre autre, à des fichiers .bat qui lancent un backup sur A:
    Je ne voie pas comment en vb6 faire la sélection sur le disque H (extérieur) et
    écrire le fichier sélectionné.
    Peux-tu m'aider pour l'écriture de ce programme.
    Merci.
    0
    1. Yoda
       
      Bonjour,

      Est-ce qu'on pourrait voir à quoi ressemblent ces fichiers .bat?
      Je pense qu'il suffirait de modifier quelques lignes de commandes. Par exemple
      copy *.* a:
      deviendrait
      copy *.* h:
      0
  3. acha
     
    je recopie le fichier c:\SauveDep.bat
    cd c:\
    cd dos5
    cls
    echo off
    cls
    echo. Effacement disquette
    cd c:\
    del a:\backup.*
    cd c:\
    color 2c
    verify on
    cls
    cd dos5
    backup.com d:\DépMalAs\DépAnAct.xls a:
    cls

    Le dos5 est le seul à avoir la commande backup.com permettant de sauver
    sur plusieurs disquettes si le fichier est >1 400 000 octets

    Merci pour ton aide
    0
  4. Yoda
     
    Bonjour,

    Pour une sauveguarde sur disque dur externe, on n'aura pas de problème de place, alors pas la peine d'utiliser Backup.com, un simple copy suffira.

    Assures-toi quand même de temps en temps de le DD externe n'est pas plein.

    De plus, le DD externe pourra servir à stocker d'autres documents que ton fichier DépAnAct.xls. Alors tu créeras un dossier H:\Backup qui sera utilisé pour ta sauvegarde. Du coup, voilà à quoi ressemblerait le fichier c:\SauveDep.bat

    @echo off
    cls
    if exist H:\Backup goto CONTINUE 
    echo. Le dossier H:\Backup n'existe pas
    echo. Sauvegarde annulee
    goto FIN
    
    :CONTINUE
    echo. Effacement de H:\Backup 
    del H:\Backup\DépAnAct.xls
    color 2c 
    verify on 
    copy d:\DépMalAs\DépAnAct.xls H:\Backup\ 
    echo. Sauvegarde terminee
    
    :FIN
    pause
    cls 


    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. acha
     
    yoda, je t'envoie une macro que je ne réussi pas à faire fonctionner.
    peux-tu regarder avec cette macro la sauvegarde sur disque serait résolue.
    je ne réussi pas à faire fonctionner le fichier Bat

    Sub CopieClasseurXPMimi

    'enregistre le classeur
    Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
    Application.EnableEvents = False
    ActiveWorbook.Save
    Application.EnableEvents = True
    LigneDébut:
    MsgBox "Veuillez mettre un disque",vbOKOnly + vbExclamation,

    On Error Resume Next
    ChDir "H:\"
    If Err.Number <> 0 Then
    MsgBox "Pas de disque" , vbOKOnly
    Goto LigneDébut
    ElseIf Err.Number = 0 Then
    MonFichier = Dir("h:\*.*)
    End If

    'sauve sur disque extérieur H
    SaveCopyAs "d:\DépMalAs\DépMimi.xls"
    FileCopy "d:\DépMalAs\DépMimi.xls, "h:\DépMimi.xls"

    Call Auto_Close
    ActiveSheet.Protect
    Application.Quit
    End Sub
    0
  7. Yoda
     
    Bonjour,

    Essaies avec ce code, dis moi si ça va.

    Sub CopieClasseurXPMimi() 
    
    'enregistre le classeur 
    Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS" 
    Application.EnableEvents = False 
    ActiveWorbook.Save 
    Application.EnableEvents = True 
    
    
    'sauve sur disque extérieur H 
    DEBUT: 
    Rep = MsgBox("Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation) 
    If Rep = vbOK Then 
       On Error GoTo ERR1 
       FileCopy "d:\DépMalAs\DépMimi.xls", "h:\DépMimi.xls" 
       On Error GoTo 0 
       MsgBox "Sauvegarde effectuée avec succès" 
    Else 
        MsgBox "Sauvegarde annulée" 
    End If 
    
    Call Auto_Close 
    ActiveSheet.Protect 
    Application.Quit 
    Exit Sub 
    
    ERR1: 
    MsgBox "Erreur d'écriture sur le lecteur H:", vbCritical 
    Resume DEBUT 
    
    End Sub


    Edit: j'ai supprimé SaveCopyAs "d:\DépMalAs\DépMimi.xls"
    je ne sais pas pourquoi tu as mis cette ligne, au besoin rajoutes la.
    0
  8. acha
     
    Bonjour Yoda,

    Je viens d'écrire le code reçu.

    fonctionne jusqu'à "veuillez monter le disque sur le lecteur H:"
    se termine avec le message"Erreur d'écriture sur le lecteur H:"

    si je supprime On Error GoTo ERR1
    j'ai le message Erreur 70 Permission refusée
    0
    1. Yoda
       
      Bonjour acha

      Verifie que tu as bien un disque sur le lecteur H: (avec l'explorateur de fichiers windows)
      Si oui, fais un copier coller de n'importe quel fichier de ton disque D: vers le disque H: pour voir si la copie se passe bien.

      A+
      0
  9. acha
     
    Bonjour Yoda,
    Je viens de faire l'essai de copier coller sur le disque H,sans problème

    A+
    0
    1. Yoda
       
      Bonjour,

      J'ai fait le test chez moi, la macro marche bien.
      Vérifies le nom complet de ton fichier d:\DépMalAs\DépMimi.xls

      Par contre regarde aussi si le fichier existe déjà sur le DD externe (lecteur H:), s'il est protéjé en écriture. (Clic droit sur le fichier -> Propriétés -> décocher lecture seule.)
      Si c'est le cas tu ne pourras pas le remplacer par la dernière version.

      Essaies cette procédure, j'ai enlevé ce qui n'est pas utile, pour éviter de quitter excel.

      Sub TestCopieClasseurXPMimi() 
      'sauve sur disque extérieur H 
      DEBUT: 
      Rep = MsgBox("Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation) 
      If Rep = vbOK Then 
         On Error GoTo ERR1 
         FileCopy "d:\DépMalAs\DépMimi.xls", "h:\DépMimi.xls" 
         On Error GoTo 0 
         MsgBox "Sauvegarde effectuée avec succès" 
      Else 
          MsgBox "Sauvegarde annulée" 
      End If 
      Exit Sub 
      
      ERR1: 
      MsgBox "Erreur d'écriture sur le lecteur H:", vbCritical 
      Resume DEBUT 
      
      End Sub
      0
  10. acha
     
    Yoda, je suis désolé mais lorsque je lance la macro j'ai " Veuillez monter le disque sur le lecteur H:"et lorsque je clic sur OK j'ai toujours "Erreur d'écriture sur le lecteur H:"
    Je viens de mettre un autre disque dur de 350go, idem.
    Mes 2 disques dur sont des disques normaux, mais pas multimédia.Ils sont branchés en USB.
    Le visual basic est celui de Office 2003.
    0
    1. Yoda
       
      Fais cette manip

      Menu démarrer -> Executer...
      dans la fenêtre tapes cmd puis OK

      la fenêtre de commande DOS doit s'ouvrir

      tapes cette commande:
      copy d:\DépMalAs\DépMimi.xls h:\DépMimi.xls

      normalement tu dois voir: 1 fichier copié
      Si c'est pas le cas c'est que:
      1) le fichier d:\DépMalAs\DépMimi.xls n'existe pas
      2) le lecteur H: n'existe pas ou en lecture seule (lecteur CD)
      3) le lecteur H: est plein
      4) dis-moi l'erreur retournée par la commande.
      0
  11. acha
     
    la commande copy...me donne 1 fichier copié

    A+
    0
    1. Yoda
       
      Alors ça doit marcher avec la macro parce que c'est exactement pareil.

      Mets toi dans les même conditions. Fait d'abord le test avec la commande DOS
      copy d:\DépMalAs\DépMimi.xls h:\DépMimi.xls
      comme indiqué plus haut.
      Si pas de problème, fais le test avec cette macro toute simple.
      Sub test()
         FileCopy "d:\DépMalAs\DépMimi.xls", "h:\DépMimi.xls"
         Msgbox "Fin de Procédure"
      End Sub


      Exécute la macro. Si ça c'est bien passé tu auras seulement le message "Fin de Procédure" qui prouve qu'il n'y a pas eu d'erreur.

      Sinon tu aurras un message d'erreur.

      C'est important de faire les test dans les même conditions, avec le même DD externe, sans le débrancher puis rebrancher.
      0
  12. acha
     
    Yoda, l'exécution de la macro donne : erreur76 chemin accès introuvable.

    J'ai fait un fichier bat avec la commande copy d:\DépMalAs\DépMimi.xls, h:\DépMimi.xls
    Je lance cette ligne en VB et la sauvegarde est effectuée sans problème.

    A+
    0
    1. Yoda
       
      C'est à n'y rien comprendre. je cherche un autre moyen.

      A+
      0
    2. Yoda
       
      Je crois avoir compris en tatonnant. La commande FileCopy ne marche pas si le fichier source est ouvert. Alors on va utiliser la commande Shell qui permet de lancer une commande DOS.

      Voilà la procedure et dis moi si ça marche.

      Sub CopieClasseurXPMimi()
      
      'enregistre le classeur
      Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
      Application.EnableEvents = False
      ActiveWorbook.Save
      Application.EnableEvents = True
      
      'sauve sur disque extérieur H
      DEBUT:
      Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
                   & "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation)
      If Rep = vbOK Then
         On Error GoTo ERR1
         'FileCopy "d:\DépMalAs\DépMimi.xls", "h:\DépMimi.xls"
         Shell ("cmd /c copy d:\DépMalAs\DépMimi.xls h:\DépMimi.xls")
         On Error GoTo 0
         MsgBox "Sauvegarde effectuée avec succès"
      Else
          MsgBox "Sauvegarde annulée"
      End If
      
      Call Auto_Close
      ActiveSheet.Protect
      Application.Quit
      Exit Sub
      
      ERR1:
      MsgBox "Erreur d'écriture sur le lecteur H:", vbCritical
      Resume DEBUT
      
      End Sub
      0
  13. acha
     
    Bonjour Yoda,

    La procedure donne aucune erreur, sauvegarde effectuée avec succès, mais
    lorsque j'ouvre le disque H :je n'ai pas d'écriture.

    A+
    0
    1. Yoda
       
      GRRR...C'est une malédiction!

      Je nabandonne pas, nouvel essai. J'ai rajouté un test d'accès au lecteur H:\, si celui-ci n'est pas valide, ça provoquera une erreur. Si c'est le cas vérifie que le disque est bien branché sur la lettre H:
      La seule partie que tu peux éventuellement adapter sont les noms des fichiers Orig (origine) et Dest (destination). Dis moi si ça marche .

      Sub CopieClasseurXPMimi()
      
      'enregistre le classeur
      Application.StatusBar = Space(15) & "ENREGISTREMENT CLASSEUR EN COURS"
      Application.EnableEvents = False
      ActiveWorbook.Save
      Application.EnableEvents = True
      
      'sauve sur disque extérieur H
      DEBUT:
      Rep = MsgBox("Sauvegarde du Fichier" & vbCrLf _
                   & "Veuillez monter le disque sur le lecteur H:", vbOKCancel + vbExclamation)
      If Rep = vbOK Then
         On Error GoTo ERR1
         
         'test si le lecteur H:\ est prêt
         ChDir ("H:\")
         'revenir au point de départ
         ChDir (ActiveWorkbook.Path)
         
         'Nom des fichiers origine et destination
         Orig = "D:\DépMalAs\DépMimi.xls"
         Dest = "H:\DépMimi.xls"
         
         'ne pas modifier ces 2 lignes
         commandeDOS = "cmd /c copy " & Chr(34) & Orig & Chr(34) & " " & Chr(34) & Dest & Chr(34)
         Shell (commandeDOS)
         
         On Error GoTo 0
         MsgBox "Sauvegarde effectuée avec succès"
      Else
          MsgBox "Sauvegarde annulée"
      End If
      
      Call Auto_Close
      ActiveSheet.Protect
      Application.Quit
      Exit Sub
      
      ERR1:
      MsgBox "Erreur: le lecteur H:\ n'est pas prêt", vbCritical
      Resume DEBUT
      
      End Sub
      0
  14. acha
     
    Bravo Yoda
    La macro fonctionne après suppression de:On Error GoTo ERR1 et
    ChDir (ActiveWorkbook.Path)

    Maitenant est-il possible en changeant de jour de ne pas écraser le fichier
    existant.
    Merci

    A+
    0
    1. Yoda
       
      Enfin!!

      La ligne ChDir (ActiveWorkbook.Path) tu peux l'enlever.
      Mais n'enlève pas la ligne On Error GoTo ERR1, sinon tu ne sauras pas si le disque H: est prêt, et comme la commande Shell ne retourne pas d'erreur, ça passera inaperçu.

      En effet, quand tu enlève un dique dur exterieur après utilisation, puis tu le rebranche à un autre moment, il n'est pas sur que Windows lui attritue la même lettre que la fois précédente. Encore plus vrai si c'est un deuxième disque exterieur. Comme la macro est faite pour une connexion au lecteur H: , si la lettre n'est plus la même, pas de suavegarde.
      Alors il vaut nieux être au courant.
      Moi je mettrais les sauvegardes dans un dossier spécial, et non directement sur la racine comme tu le fait.

      Sinon pour ne pas écraser le fichier existant, il faut lui changer de nom en lui ajoutant la date et l'heure automatiquement.
      Remplace le ligne Dest = "H:\DépMimi.xls" par

         Dest = "H:\DépMimi.xls_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh\Hmm")


      Et remets On Error GoTo ERR1.

      A+
      0
  15. acha
     
    Yoda

    la macro fonctionne parfaitement, tout est ok
    Merci de ta gentillesse pour le temps que tu m'as consacré.
    0