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

Conception Discussion :

Macro pour sauvegardes multiples d'un même fichier


Sujet :

Conception

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Macro pour sauvegardes multiples d'un même fichier
    Bonjour à tous,

    Tout d'abord je connais vraiment très peu excel et n'ai aucune connaissance en macros...
    Je dois faire un fichier sur lequel différentes personnes interviendront et risqueront de faire des bêtises
    Donc voilà ce que je voudrais :
    soit lorsque l'on enregistre que le fichier s'enregistre automatiquement dans 2 dossiers différents ?? une sauvegarde à un autre endroit quoi
    soit enregistrer des sauvegardes différentes à chaque passage d'individu??

    En fait j'aimerais pouvoir revenir à des sauvegardes antérieures

    Merci pour votre aide et dites moi s'il faut joindre le fichier

    Gigotdagneau

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Un code...
    Voici un code qui sauve le classeur excel sous le même nom avec la date et l'heure à la seconde de la sauvegarde.

    j'essaie de tout expliquer :
    * faire ALT + F11
    * Faire Insertion > Module
    * Copier le premier 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
     
    Public Sub SaveCopy()
        Dim strDate As String
        Dim Count   As integer
        Dim PosSep As Intger
     
        Count = Len(ActiveWorkbook.Name)
        PosSep = InStrRev(ActiveWorkbook.Name, ".")
        '--- Extension xls ou xlsm (3 ou 4 car.)
        If PosSep = 0 Then
            NameA = ActiveWorkbook.Name
        Else
            NameA = Left(ActiveWorkbook.Name, PosSep - 1)
        End If
        '--- Ajout séparateur si besoin
        If Right(ActiveWorkbook.Path, 1) <> "\" Then
            NameA = ActiveWorkbook.Path & "\" & NameA
        Else
            NameA = ActiveWorkbook.Path & NameA
        End If
        '---
        strDate = Format(Date, "dd-mm-yy") & "_" & Format(Time, "hh-mm-ss")
        ThisWorkbook.SaveCopyAs Filename:=NameA & "_" & strDate & Right(ActiveWorkbook.Name, Count - PosSep + 1)
    End Sub
    Procédure que l'on lance avec le code suivant placé dans le "ThisWorkBook" du classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        '--- Sauve le fichier avec le nom et ajout de Date_Heure
        Call SaveCopy
    End Sub
    *Faire Fichier > Enregistrer
    *Faire Fichier > Fermer et retourner à Excel

    Il suffit de charger le fichier original "classeur.xls" par exemple pour travailler dessus. A chaque enregistrement, une copie est enregistrée sous le nom par exemple de "classeur_2009-10-23_22:35:06.xls".

    Pour le nom d'utilisateur en plus, modifie comme ceci (vert):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        '---
        strDate = Format(Date, "dd-mm-yy") & "_" & Format(Time, "hh-mm-ss")
        ThisWorkbook.SaveCopyAs Filename:=NameA & "_" & Environ$("username") & "_" & strDate & Right(ActiveWorkbook.Name, Count - PosSep + 1)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    A mon avis tu devrais plutôt gérer en amont ces bêtises, plutôt que l'utilisation d'une sauvegarde.

    En effet, tu fais plusieurs sauvegarde dans une journée, si c'est le 5 ème utilisateur qui a fait une bêtise et que tu en as 10 dans la journée, tu vas récupérer les données de la 4 ème, mais il faudra reprendre les données de la 6 ème à la 10 ème personne qui n'ont pas fait de bêtises.

    Donc pour moi un casse tête en perpective.

    Alors que Excel t'offre la possibilité de blindé ton classeur (contrôle de saisi, protection, etc...)

    Personnellement je m'orienterais plus sur cette solution.

    Philippe

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci pour vos réponses rapides!!

    Avant d'essayer la méthode d'ESVBA j'aimerais avoir plus de détails sur ce que disait Philippe :
    comment peut on blinder un classeur excel? Ca voudrait dire que l'on ne puisse plus modifier ce qui a été enregistré antérieurement?

    Effectivement si on peut protéger ce qui a été fait par un utilisateur ça m'intéresse !!

    Merci

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Point de vue
    Philippe a raison. Protégez d'abord les cellules et/ou feuilles par un mot de passe. Ca évitera énormément les fausses manoeuvres et la recherche des "bêtises".

    Allez voir du côté de la FAQ : http://excel.developpez.com/faq/ et tapez les lettres "prot".

    Pas besoin de programmation.

    La sauvegarde des fichiers sous d'autres noms permet l'archivage et la récupèration de fichiers en cas de plantage d'Excel ou de Windows.

    ESVBA

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Le mieux dans ce cas c'est de ne pas montrer les feuilles à l'utilisateur et de tout faire par des UserForm de saisies, donc contrôle sur cela.

    Si c'est bien fait, on peut cacher la fenêtre Excel, et ne voir que les userform, on ne sera même pas que l'on est sur Excel.

    Tout cela en protégeant les feuilles comme te le dit ESVBA

    Philippe

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Comme Philippe, je pense qu'il vaut mieux prévenir les bêtises que les guérir...

    Il convient de se poser quelques questions:

    - De quelles natures sont les bêtises? Suppression de formules, suppression de feuilles, ...?
    - Les accès au fichier sont-ils concurrents (fichier partagé)?
    - Comment feront les utilisateurs pour savoir quelle est la dernière version?
    - A quoi sert le fichier? Collecte d'infos? Analyse d'infos?
    - Si bêtise, comment récupérer et recoller les "bons" morceaux?
    - ...

    Je pense qu'il faut d'abord réfléchir, notamment aux implications de tel ou tel choix (sauvegarde implémentée, mise en place d'une sécurité, utilité et finalité du classeur, ...) avant de mettre en place un "truc" en VBA
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Encore merci et je m'excuse d'avance de mon ignorance... en effet à part des sommes je ne sais pas faire grand chose sur excel.
    Je vous joins mon fichier excel

    En fait ça se passe au collège : il y aura un classeur pour une classe et une feuille par élève. Les profs doivent venir valider les critères en mettant des 1 dans les cases de leur couleur (j'aurais préféré des cases à cocher mais je n'arrive pas à obtenir validé ou non validé automatiquement en fin de ligne)
    Ce que je voudrais c'est que ce qui a déjà été validé ne soit plus modifiable
    ou bien stocker des sauvegardes (j'étais parti là dessus au début)
    Fichiers attachés Fichiers attachés

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pour voir j'ai essayé la solution d'ESVBA mais ça n'a pas fonctionné
    Voici ce que cela me donne (en PJ)
    Je ne vois pas ce que cela veut dire
    Images attachées Images attachées  

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Tu as tout simplement écrit Intger au lieu de Integer.

    Je te conseille avant de continuer de lire un bon ouvrage sur le VBA, comme ici : http://bidou.developpez.com/article/VBA/

    Philippe

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut A essayer...
    Voici une base permettant une identification de la personne de sa matière et de verrouiller les cellules, de cocher.

    Je n'ai plus le temps.

    De plus je viens de m'apercevoir que les colonnes changent à partir de la ligne 35 !
    Ce peut être une première base. J'ai changé la formule de comptage pour être certain que c'est OUI ou NON..

    ESVBA

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour votre aide
    Je regarde tout ça, j'essaye de comprendre et on verra ce que ça donne

    A bientot!!

Discussions similaires

  1. Macro pour sauvegarder des données txt en csv
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2011, 11h34
  2. Chargement multiple d'un même fichier XML
    Par noblind dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 08/02/2011, 11h17
  3. une seule macro pour plusieurs feuilles d'un même classeur
    Par pouldom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/12/2010, 11h38
  4. [XL-2003] macro pour copier une en-tête de fichier dans +sieurs fichiers
    Par Frayer dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/08/2009, 21h40

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