VBA - déclencher macro seulement si changement dans feuille

Bonjour,

Je débute complètement en VBA, exusez-moi par avance si je raconte des aberrations.

Je suis presque parvenue à ce que je souhaite mais une dernière question me pose problème.

Je souhaiterais exécuter une macro via la procédure Private Sub Worksheet_Deactivate () seulement si la feuille en question à été modifiée et non à chaque fois qu'on la consulte.

Je connais la procédure Worksheet_Change () mais comme la macro à lancer est un peu lourde, je ne souhaite pas qu'elle se lance à chaque modification de cellule.

Mon code actuel est:

Private Sub Worksheet_Deactivate()

Dim Rep As Integer

Application.EnableEvents = False

    Rep = MsgBox("N'oubliez pas de mettre à jour la Liste Générale pour ne perdre aucune modification. Cliquez sur OK pour effectuer cette mise à jour.", vbOKCancel, "ATTENTION!")
    If Rep = vbOK Then

ThisWorkbook.RecupListe
End If

Application.EnableEvents = True

End Sub

Merci par avance pour la réponse apportée à ma demande.

Bonjour lilouelou,

Ta question est assez complexe mine de risque, peux-tu détailler ce que tu entends par:

seulement si la feuille en question à été modifiée

Tu entends n'importe quel changement, du plus infime au plus important?

Qu'es-ce que l'utilisateur peut modifier? Des cellules, formules, mise en page...?

RQ: Si je ne m'abuse, Excel considère que le fait de changer de feuille active EST un changement sur un fichier, alors n'importe quelle modification d'une feuille peut être considérée dans ton critère, et générer un recalcul.

Bonjour,

Tu peux toujours mettre un drapeau booleen sur Worksheet_Change ()

Si la procédure est activé le drapeau va devenir Vrai et trahir une modification probable...

Et dans ce cas la procédure Déactivate fera le boulot...

Elle est lourde pourquoi, parce que tu ne sais pas l'alléger ? Est-tu certaine qu'il n'y a aucun moyen de l'alléger ?

A+

Je vous joins le fichier.

L'idée est qu'à chaque sortie d'une feuille '20XX-20XX" soit vérifié si un changement a été apportée à cette feuille et si cette condition est vérifiée que par macro soit proposé de mettre à jour la feuille "Liste".

Je ne m'y connais vraiment pas en VBA, il va falloir que je planche alors sur le principe de drapeau boléen!

Merci de l'aide en tous les cas

bonjour,

Le fichier ne passe pas : il doit être trop lourd. Tu peux le uploader sur cjoint et nous donner le lien.

A+

Bonjour,

Voici le document:

Bonjour,

Il n'est pas d'usage de diffuser des informations comme N° de T° ou email dans les pièces jointes.

Détruire rapidement ce lien et surtout supprimer le fichier sur cjoint.

A+

Voilà un exemple d'utilisation de flag.

179lilouelou.xlsm (12.61 Ko)

Le code VBA est réparti dans 3 zones.

  • le code de la feuille concernée
  • un module standard
  • le code du classeur (workbook)
capture

Zut, j'ai vraiment tout faux! Merci pour l'info!

Je vais me débrouiller autrement pour ma demande.

Merci et bonne journée.

d3d9x a écrit :

Voilà un exemple d'utilisation de flag.

Le code VBA est réparti dans 3 zones.

  • le code de la feuille concernée
  • un module standard
  • le code du classeur (workbook)

Merci d3d9x pour l'aide, j'ai bidouillé, c'est loin d'être parfait, mais ça marche comme je le souhaitais

Bonne journée à tous!

Rechercher des sujets similaires à "vba declencher macro seulement changement feuille"