Refresh all et sauvegarde automatique du fichier

Bonjour,

Après plusieurs essais, plusieurs forum je n'arrive pas à faire fonctionner les codes que je trouve.

Pour l'enregistrement automatique j'ai suivi ce type de code plusieurs fois :

image

et j'ai suivi ce type de code pour le refresh all automatique

Private Sub workbook_sheetactivate(ByVal sh As Object)

Me.RefreshAll

End Sub

sans succès...

Mon fichier sera ouvert sur un poste en permanence. Je souhaite utiliser une maccro vba plutôt que l'enregistrement automatique afin de sécuriser le fichier. Le refreshall va me permettre d'actualiser des requêtes.

Je vous remercie d'avance pour vos réponses.

Loïs

Bonjour LRK50,

Quel problème rencontrez-vous ? J'ai testé séparément vos commandes, elles fonctionnent.

En quoi cette macro sécuriserait davantage votre fichier que la sauvegarde automatique d'Excel ?

A vous lire

Bonjour LRK50

Perso je ferais

Private Sub Workbook_Open()
  Call Enregistrement
End Sub

A+

Pour l'enregistrement automatique --> l'enregistrement ne se fait pas (photo ci-dessous)

image

il est actuellement 10:19 et mon dernier enregistrement est fait manuellement et à 9:34..

Et c'est pareil pour l'actualisation... ma requête ne s'est pas actualisée.

Je pense qu'elle la sécuriserait d'avantage car si l'ordinateur s'éteint et que la personne qui le rallume n'a pas forcément l'habitude d'utiliser un PC, elle peut ne pas sélectionner les sauvegardes automatiques et cocher la case "Ces sauvegardes peuvent être supprimées". Dans ce cas tout serait perdu..

Re,

Le rafraichissement je le mettrais dans la Sub Enregistrement au début de la procédure

Bien entendu, il faut que le fichier reste ouvert

A+

Est-ce l'enregistrement automatique est bien activé ? Vous pouvez tester le booléen :

ThisWorkbook.AutoSaveOn

Même remarque que BrunoM45 pour le rafraichissement dans le module Enregistrement.
Mais peut-être que vous souhaitez aussi actualiser vos requêtes en cours d'utilisation ?

J'ai ce message d'erreur à chaque fois que le fichier veut s'enregistrer

image

et voici le code :

image

Re,

La Sub Enregistrement doit être dans un module et non dans ThisWorkbook

Pourquoi d'après-vous on demande de déposer un fichier ne général...

A+

Dernière ligne du code, il est noté "enregistrement" mais la macro s'appelle désormais "Enregistrement". Peut être que VBA est sensible à la casse.

Autrement, est-ce que l'exécution des macros est bien activée ?

EDIT : message à ignorer suite à la réponse de BrunoM45 juste avant

Dernière ligne du code, il est noté "enregistrement" mais la macro s'appelle désormais "Enregistrement". Peut être que VBA est sensible à la casse.

Autrement, est-ce que l'exécution des macros est bien activée ?

J'ai modifié la majuscule pour "Enregistrer"

pour l'exécution des macros j'ai pas la main

image

Re,

La Sub Enregistrement doit être dans un module et non dans ThisWorkbook

Pourquoi d'après-vous on demande de déposer un fichier ne général...

A+

j'ai mis le code dans Thisworkbook car il m'affichait ce message

image

Pour finir voici un fichier joint :

Il y a un conflit car VBA trouve un module du même nom ("Enregistrement") que la procédure souhaitée.

En changeant le nom du module, cela fonctionne de mon côté.

Testez pour voir.

J'ai effectué le changement que vous m'avez indiqué. Cela fonctionne bien pour l'enregistrement.

Le petit ic est sur le rafraichissement des données.. ma nomenclature ne se met pas à jour automatiquement

Bonjour LKR50

Ce n'est absolument pas logique, avez-vous toujours les liaisons avec votre source

Après avoir mis un point d'arrêt (F9) essayer d'utiliser le mode pas à pas (F8) et voyez

Nous ne pourrons rien pour vous pour ça

Lorsque j'actualise en passant par "donnée/ actualiser" cela fonctionne. Ma nomenclature passe de 58 lignes à 99 lignes. En fonction pas à pas détaillé également.

Une chose me vient en tête. J'avais un soucis sur un autre fichier concernant le fait que la macro n'attendait pas que l'étape précédente soit faite pour passer à la suivante. J'ai su qu'il fallait aller dans les réglages pour indiquer de bien attendre la fin de chaque étapes pour passer à la suivante. Malheureusement j'ai oublié la manip... la connaissez-vous ?

Re,

Pour le réglage, je ne sais pas, en revanche j'ai retrouvé un code adapté

Sub Enregistrement()
  Dim WkbConnection As WorkbookConnection
  Dim oleConnection As OLEDBConnection
  ' Désactiver les message au cas ou
  Application.DisplayAlerts = False
  Do Events
  'Rafraichir les données
  For Each WkbConnection In ActiveWorkbook.Connections
    Do
      Set oleConnection = WkbConnection.OLEDBConnection
      oleConnection.BackgroundQuery = False
      oleConnection.Refresh
      ' vérifie si il n'y pas de refresh en cour, sinon on recommence
    Loop While oleConnection.Refreshing = True
  Next
  ThisWorkbook.Save
  Application.OnTime Now + TimeValue("00:05:00"), "enregistrement"
End Sub

J'ai enfin retrouvé l'astuce que l'on m'avait indiqué. Ce n'est pas dans les réglages de macro mais dans les réglages requêtes.

image

Il faut désactivé la case surligné en jaune et le code s'effectue parfaitement. Je garde votre code sous le coude au cas ou.

Merci à vous deux pour le temps que vous m'avez consacré.

Bonne journée

Loïs

Rechercher des sujets similaires à "refresh all sauvegarde automatique fichier"