Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 modification macro

Quicksland

XLDnaute Occasionnel
Bonjour @AtTheOne bonjour le forum ,

j'ai un petit soucis ...

Apres quelque temps d'utilisation sans accro j'ai voulu améliorer le projet

Dans un même classeur j'ai voulu insérer le même tableau que dans la feuille 1 dans une autre feuille
mais a l'ouverture la date se modifie dans les deux tableaux mais un seul se remet a zéro

Voici le code :

VB:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
Me.Names("DerModif").RefersTo = Date

End Sub

Private Sub Workbook_Open()

Dim WSh As Worksheet
Set WSh = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs
'Si la date a changé : remise à blanc de la plage de saisie (plage nommée "PlageEffectifs")
If [DerModif] <> Date Then WSh.[PlageEffectifs].ClearContents

End Sub


Merci pour votre aide
 

Pièces jointes

  • ASTUCE.xlsm
    32.6 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Exact, chez moi pareil sur 2007. ( facile, il suffit de faire Me.Names("DerModif").RefersTo = 0 ) et effectivement le clear a lieu.
Il faudrait que Quicksland teste ma PJ, car le bug pourrait avoir deux origines :
1- La macro Open n'est pas exécutée
2- Il trouve toujours la même date.
Si en testant cette PJ il a un msgbox c'est que la macro est exécutée.
 

Quicksland

XLDnaute Occasionnel
Bonjour @Quicksland
On attend tes réponses pour aller plus loin :
  • Essai de la version de @sylvanu (post#15)
  • Essai d'une ancienne version qui fonctionnait (avec une seule feuille)
Amicalement
Alain
Bonjour @sylvanu @AtTheOne le forum,

Donc j'ai repris la PJ de Sylvanu post 15

Toujours le même problème , le fichier ne se remet pas a zéro malgré la date qui change et ceci dans les deux feuilles
Pas de msgbox a l'ouverture pour dire que la macro c'est exécutée

Pour l'essai avec une seule feuille tout fonctionne parfaitement
J'ouvre la feuille seule, je rentre des chiffres, j'enregistre et je change la date de mon ordinateur puis j'ouvre mon fichier et la date a changé et les cellules son vide

Merci a vous deux pour votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Testez ce fichier en PJ.
Il y aura un msgbox à l'ouverture du fichier.
S'il y en a pas c'est que vos macros ne sont pas activées.
S'il y a qu'un seul message "On va executer la macro Workbook_Open." et pas de second message c'est qu'une erreur s'est produite dans le IF et qu'on sort sans rien faire.
 

Pièces jointes

  • ASTUCE (1) (1).xlsm
    29.7 KB · Affichages: 2

Quicksland

XLDnaute Occasionnel
Test sur Pj 22 Pas de message a l'ouverture
La coche activer toutes les Macros est ok
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
??? Incompréhensible. Si pas de message à l'ouverture c'est que la macro Sub Workbook_Open ne s'execute pas car la modif que j'ai faite est :
VB:
Private Sub Workbook_Open()
    MsgBox "On va executer la macro Workbook_Open."
Donc le message doit apparaitre dès le lancement de cette macro.

Vous pouvez envoyez les deux fichiers avec une feuille et avec deux feuilles ?
 

Quicksland

XLDnaute Occasionnel
Tu a évoquer tout a l'heure ceci
2- Une feuille a été supprimée et reconstruite ( elle porte le même nom mais pas le même ID )
Alors je suis reparti de zéro
J'ai mis cette macro ci dessous

Code:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
     'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
     Me.Names("DerModif").RefersTo = Date
    
End Sub

Private Sub Workbook_Open()
    MsgBox "On va executer la macro Workbook_Open."
     Dim WSh1 As Worksheet, WSh2 As Worksheet
     Set WSh1 = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs1
     Set WSh2 = Feuil2 'Feuil2 : Nom VBA de la feuille contenant les effectifs2
    
     'Si la date a changé : remise à blanc de la plage de saisie (plages nommées "PlageEffectifs1" et "PlageEffectifs2")
    If [DerModif] <> Date Then
        MsgBox "La date est différente donc clear feuilles."
          WSh1.[PlageEffectifs1].ClearContents
          WSh2.[PlageEffectifs2].ClearContents
    Else
        MsgBox "La date est identique donc ne rien faire."
    End If
    
End Sub

J'ai bien toutes les msbox
la date change et les cellules s'efface

j'ai aussi essayer celle ci-dessous

VB:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
     'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
     Me.Names("DerModif").RefersTo = Date
    
End Sub

Private Sub Workbook_Open()

     Dim WSh1 As Worksheet, WSh2 As Worksheet
     Set WSh1 = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs1
     Set WSh2 = Feuil2 'Feuil2 : Nom VBA de la feuille contenant les effectifs2
    
     'Si la date a changé : remise à blanc de la plage de saisie (plages nommées "PlageEffectifs1" et "PlageEffectifs2")
     If [DerModif] <> Date Then
          WSh1.[PlageEffectifs1].ClearContents
          WSh2.[PlageEffectifs2].ClearContents
     End If
    
End Sub

Et la encore tout fonctionne parfaitement

Un grand merci a @sylvanu a @AtTheOne ainsi qu'a @laurent950
Merci pour votre patience et aide si précieuse

 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir le fil
Je me penchais sur un autre problème donc pas disponible pour regarder celui-ci.
Bravo à tous !
Ce n'est pas la première fois que, en reconstruisant un classeur à l'identique (du moins en apparence) un problème qui paraissait insoluble se dissous comme par miracle.

Amicalement
Alain

Ps @Quicksland : pense à marquer, si c'est le cas, l'un des posts comme solution
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…