Sauvegarde et rafraichissement automatique

Salutations,

Existe-il un code permettant de créer une sauvegarde automatique toute les 1 minute par exemple ?

ou à chaque modification de donnée (encore mieux) ?

Ceci pour combler l'oubli éventuel d'un utilisateur.

En effet, mon fichier central dépendant des mises à jour des autres classeurs, il convient que les sauvegardes s'effectuent régulièrement sur les autres classeurs, sinon le fichier central ne sera pas à jour. Si cela est possible, je pourrais utiliser tout simplement le Ctrl-Alt-F5 pour actualiser mes données aussi souvent que je le souhaite.

Dans le même ordre d'idée, existe-t-il un code permettant de lancer de façon automatique (toutes les 1 minute) la fonction "Ctrl-Alt-F5" ?

EN cherchant sur le forum, j'y ai trouvé un travail de Nad' mais je ne sais pas comment l'introduire dans le workbook de mes fichiers car celui-ci est déjà utilisé et je ne sais pas dans quel ordre placer les lignes ?


J'ai trouvé ceci de Nad sur le forum

Cette méthode enregistre automatiquement le fichier toutes les 5 secondes

Dans un module

Sub EnregistrerFichier()
ActiveWorkbook.Save
End Sub

Dans ThisWorkBook

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.OnTime Now + TimeValue("00:00:05"), "EnregistrerFichier"
End Sub

C'est tout le classeur qui doit être sauvegardé


Mais je dois l'introduire dans ce codes-ci et là, je coince :

Const x As String = "Feuil1"
Const y As String = "Feuil2"
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Feuil1.Name = x
Feuil2.Name = y
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.ScreenUpdating = False
Feuil1.Name = x
Feuil2.Name = y
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.ScreenUpdating = False
Feuil1.Name = x
Feuil2.Name = y
End Sub

et pour l'actualisation "Ctrl-Alt-F5" toutes les 1 minute à introduire dans celui-ci : Et pour tout le classeur aussi.

Private Sub Workbook_Open()
Dim Ws As Worksheet

  For Each Ws In Sheets
    If Left(Ws.Name, 8) = "Atelier " Then
      Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 1)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
   ElseIf Ws.Name = "Cui-Dep" Then
      Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
   ElseIf Ws.Name = "SportsPreaux" Then
      Ws.Protect Password:="12345678" & LCase(Ws.Name), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
   End If
   Next Ws
End Sub

'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'  MsgBox "feuille calculée " & Sh.Name
'End Sub

up, il faut vraiment que j'utilise un code pour pallier à un oubli éventuel d'un utilisateur

Re

C'est pourtant clair :

1 - Tu insères un module dans lequel tu mets ce code :

Sub EnregistrerFichier()
ActiveWorkbook.Save
End Sub

2 - Dans ThisWorkBook tu copies ce code (après les tiens)

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.OnTime Now + TimeValue("00:00:05"), "EnregistrerFichier"
End Sub

Pour l'autre demande,

Dans le même ordre d'idée, existe-t-il un code permettant de lancer de façon automatique (toutes les 1 minute) la fonction "Ctrl-Alt-F5"

quelle action cela introduit-il ?

Amicalement

Nad

Mais ton code, c'est pour l'enregistrement d'une feuille, non ? (worksheet) C'est juste la feuille ou tout le classeur qui est sauvé ?

Tu sais, je suis un noob donc il y a des choses qui ne me sautent pas yeux, lol, il y a deux semaines, je n'avais jamais entendu parler de VB.

Pour l'autre code, l'action porte sur la réactualisation des données de façon automatique, car il s'agit d'un programme de consultation et dont l'utilisateur ne doit rien faire pour que la mise à jour s'effectue. Donc comme si on ouvrait le classeur pour la première fois, sauf qu'il resterait ouvert.

Mon problème est qu'actuellement, on doit refermer le programme puis ensuite, le réouvrir pour avoir une actualisation des données.

Cela vient du fait que les classeurs sont disposés sur un serveur et que chaque classeur est utilisé à partir d'un pc différent via un raccourci placé sur leur bureau. Du coup, la mise à jour ne s'effectue pas directement. Contrairement à ce que l'on a quand on travaille sur un même pc, là tout se met à jour de suite.

Je ne sais pas si c'est de cela qu'il s'agit...

J'ai trouvé ceci mais arrivé à l'étape de choisir "propriétés de connexion", cette option est grisée chez moi !

Actualiser automatiquement des données à intervalles réguliers

Cliquez sur une cellule de la plage de données externes.

Sous l'onglet Données, dans le groupe Connexions, cliquez sur la flèche en regard de Actualiser, puis cliquez sur Propriétés de connexion.

Cliquez sur l’onglet Utilisation.

Activez la case à cocher Actualiser toutes les, puis spécifiez le nombre de minutes souhaité entre les actualisations.

Quelqu'un peut-il m'aider ?

Re

Tu as bien sélectionné une cellule pouvant être actualisée avant de faire la manip ?

Nad

Nad a écrit :

Re

Tu as bien sélectionné une cellule pouvant être actualisée avant de faire la manip ?

Nad

oui. Mais toutes mes feuilles sont protégées dans ce classeur. J'en ai dévérrouillée une pour effectuer le test en sélectionnant une cellule qui peut être actualisée, et cela ne change rien. Toujours grisé. Une idée ?

Non ; j'ai testé avec un de mes fichiers et j'ai bien l'accès

sans titre

Nad

C'est bizarre, je ne trouve pas comment arriver là... Enfin si, j'ai compris, mais je n'y ai pas accès.

Je t'envoie le fichier par mp si tu pouvais y jeter un oeil

Pour la sauvegarde, c'est réglé.

Mais pour l'actualisation automatique, je cherche une solution via VB.

Je tente ce code si mais aucune idée si çà fonctionne vu que mes fichiers sont sur le même pc, la mise à jour des données est directe.

Pour le module a utilisé, j'avais le module 1 utilisé, le module 2 vide, le module 6 bien rempli. J'ai utilisé le module 2 (cela a-t-il une importance ?)

Dans le module

Sub RefreshFichier()
ActiveWorkbook.Refresh
End Sub

Dans Workbook

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.OnTime Now + TimeValue("00:01:00"), "RefreshFichier"
End Sub

Pas de débogage mais je ne constate rien, pas la possibilité de vérifier.

A noter que je ne sais rien changer sur ce classeur, juste de la consultation, donc il faut probablement changer quelque chose car aucune selection n'est changée.

alors, j'ai pensé à ceci :

Private Sub Workbook_Activate()
Application.OnTime Now + TimeValue("00:01:00"), "RefreshFichier"
End Sub

--> le débogage pointe une erreur sur le ActiveWorkbook.Refresh du module.

Nad a réalisé ceci pour le rafraichissement automatique, cela fonctionne.

à placer dans un même module.

Sub auto_Open()
Call RefreshData
End Sub

Sub RefreshData()
Application.OnTime Now + TimeValue("00:00:30"), "RefreshData" 'toutes les 30 secondes
Application.CalculateFull
End Sub

Reste juste à savoir si le CalculateFull, met à jour les formules du type =lien vers un autre classeur et celle en format texte, Qqun sait ?

Rechercher des sujets similaires à "sauvegarde rafraichissement automatique"