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

Macros et VBA Excel Discussion :

enregistrement auto périodique nvl données [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 58
    Points
    58
    Par défaut enregistrement auto périodique nvl données
    bonjour
    pour mon travail , plusieurs personnes utilisent un fichier excel , pourtant l'option enregistrement auto dans outil option est validée , mais il y a quand même des pertes de données
    je voudrais les codes pour enregistrer les nouvelles données entrées toutes les 15min à partir de l'ouverture du fichier jusqu'à sa fermeture
    merci

  2. #2
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Je ne vais pas t'apporter de réponse juste essayé de te mettre en garde.

    Si ton fichier est en accès direct sur un serveur par exemple.
    Et que deux personnes se retrouvent à l'utilisé au même moment, le premier qui enregistrera son fichier le verra peut être écrasé par la deuxième...

    A moins qu'il ne peut y avoir qu'une personne à la fois qui y ai accès dans ce cas, et dans ce cas la meilleur façon c'est que la personne n'oublie pas de l'enregistrer...

    Bon courage.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 58
    Points
    58
    Par défaut enregistrement auto
    bonjour
    pas de problème de ce côté
    le fichier n'est pas partagé
    1 seule personne peut travail sur le fichier
    les autres ne l'ont qu'en lecture seul
    merci

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    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 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il faut noter que l'enregistrement automatique ne sert qu'en cas de fermeture non régulière d'Excel, et le fichier enregistré de la sorte n'est pas ton fichier mais un fichier temporaire géré par Excel.

    A la fermeture régulière de ton fichier, ce fichier temporaire est détruit par Excel. Donc, si tu travailles 8 heures sur un fichier enregistré toutes les 15 minutes via l'option de récupération d'Excel, mais que tu fermes ton fichier sans le sauver => tu perds 8 heures de travail.

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Il existe une macro complémentaire qui enregistre régulièrement ton travail.
    J'avais essayé de faire moi même une boucle d'enregistrement auto avec la commande excel qui permet de programmer l'exécution d'une procédure, mais j'avais rencontré quelque soucis, il faut bien penser a annuler la programmation d'évènement en quittant le fichier, sinon il se rouvre tout seul....
    Je ne suis pas chez moi, j'aurais accès a tout ça dimanche soir si u es intéressé.
    ++
    Qwaz

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 58
    Points
    58
    Par défaut enregistrement auto
    bonjour
    voici le code que j'ai mis en attendant
    mais , il ralenti le travail
    avantage : à la fermeture , il demande quand même un enregistrement final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ActiveWorkbook.Save
    End Sub
    merci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 58
    Points
    58
    Par défaut enregistrement auto
    bonjour
    j'ai essayé quelque chose sur 1 min , dites moi si c'est correcte ou s'il y a mieux
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub test()
    Debug.Print Now
    Application.OnTime DateAdd("N", 1, Now), "test"
    ActiveWorkbook.Save
    End Sub
     
    Private Sub Workbook_Open()
    Application.OnTime DateAdd("N", 1, Now), "test"
    End Sub
    j'ai du rajouter ceci à la fermeture , parce qu'il n'y a plus de demande d'enregistrement à la fermeture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveWorkbook.Save
    End Sub

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Voila ce que j'avais mis en place, c'est un peu différent de ce que tu cherches, car "j'avais" un problème de perte de données lié a l'utilisation d'un classeur en mode partagé via une connection Citrix... (une belle merde). Ce code avait pour but de fermer après un laps de temps d'inactivité, pour éviter qu'un plantage de la session Citrix ne bloc la session du classeur ouvert dans un mode parallèle... je plaisant mais c un peu ça.
    Au départ j'avais un problème avec ce code, il fermait le document et le ré-ouvrait, normalement le problème est résolu avec le code ajouté dans le BeforeClose, fais des essai et tu verras bien, en le modifiant un peu il fera ce que tu souhaites je pense.

    Dans un Module
    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
    25
    26
    27
    28
    29
    30
    Option Explicit
    Public AnyChange As Boolean
    Public Lheure As Double, LClose As Double
    Const TDelai = "00:15:00"
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub Minuteur()
    Dim TheDelai As String
    AnyChange = True
    On Error Resume Next
    'Exit Sub 'a supprimer une fois mis en place
    'Methode obligatoire, soit un tempos decidé par l'utilisateur, soit 15 min (TDelai)
    If FBase.[D35] >= 1 And FBase.[D35] <= 120 Then TheDelai = Format(FBase.[D35] / 1440, "hh:mm:ss") Else TheDelai = TDelai
    If Lheure <> 0 Then Application.OnTime Lheure, "SayBeepBeep", , False
    Lheure = Now + TimeValue(TheDelai)
    Application.OnTime Lheure, "SayBeepBeep", Lheure + TimeValue("00:00:30")
    End Sub
     
    Sub SayBeepBeep()
    Beep: Sleep (250): Beep: Sleep (250): Beep
    AnyChange = False
    LClose = Now + TimeValue("00:00:20")
    Application.OnTime LClose, "SaveAndClose"
    End Sub
     
    Sub SaveAndClose()
    If Not AnyChange Then
        If ThisWorkbook.ReadOnly Then ThisWorkbook.Close False Else ThisWorkbook.Close True
    End If
    End Sub
    Dans le ThisWorkBook
    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
    25
    26
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    'On detruit les programmations
    Application.OnTime ModUsed.Lheure, "SayBeepBeep", , False
    Application.OnTime ModUsed.LClose, "SaveAndClose", , False
    End Sub
     
    Private Sub Workbook_Open()
    'Init de la fermeture auto
    Minuteur
    End Sub
     
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    'On repousse la fermeture auto
    Minuteur
    End Sub
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    'On repousse la fermeture auto
    Minuteur
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    'On repousse la fermeture auto
    Minuteur
    End Sub
    [Edit]Une piste pour réaliser ce que tu souhaites, serait de faire le même système que le code ci dessus, de le faire seulement enregistrer (sans le fermer) et de ne lancer Minuteur que dans le BeforeSave du WorkBook, ainsi si l'utilisateur enregistre sont document, tu retardes l'enregistrement automatique de 15 min, si au bout de 15 min il n'a pas enregistré (pas d'appelle a Minuteur via BeforeClose pour relancer la tempo), ça exécute SaveAndClose, dans SaveAndClose n'oubli pas de relancer Minuteur par contre et de supprimer la commande de fermeture .[/Edit]

    Pour ce qui est de ta remarque sur le fait qu'excel ne te propose plus d'enregistrer, je pense que c dut au fait qu'aucunes modifications n'a été faite depuis le dernier enregistrement.
    A++
    Qwaz

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 58
    Points
    58
    Par défaut enregistrement auto
    bonjour
    merci beaucoup pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC] Email/Impression auto à une date donnée
    Par LapinGarou dans le forum MFC
    Réponses: 5
    Dernier message: 02/03/2006, 12h43
  2. nbre enregistrements dans base de données
    Par Chonchon dans le forum JDBC
    Réponses: 3
    Dernier message: 09/01/2006, 20h54
  3. Réponses: 1
    Dernier message: 19/12/2005, 16h57
  4. Comment empecher l'enregistrement auto ?
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 09/12/2005, 15h56
  5. [CR 10]Numéro d'enregistrement auto-inc
    Par Giovanny Temgoua dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 29/03/2005, 13h04

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