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 SubDans 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 Subet 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 Subup, 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 Sub2 - 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 SubPour l'autre demande,
quelle action cela introduit-il ?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"
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 ?
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 SubDans Workbook
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.OnTime Now + TimeValue("00:01:00"), "RefreshFichier"
End SubPas 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 SubReste juste à savoir si le CalculateFull, met à jour les formules du type =lien vers un autre classeur et celle en format texte, Qqun sait ?
