Evénement qui ne se déclenche pas

Youri

XLDnaute Occasionnel
Bonjour à tous,

Dans le procédure ci-dessous, la dernière instruction ne déclenche pas l'événement Worksheet_Activate.
Code:
Private Sub Workbook_Open()
Application.EnableEvents = False
Application.ScreenUpdating = False
Call ShowAll
Call gestion_sauvegarde(1)
If WorksheetFunction.CountA(ThisWorkbook.Worksheets("User_defined_settings").Cells) > 0 And ThisWorkbook.Worksheets("User_defined_settings").Range("A" & Rows.Count).End(xlUp).Value <> "" And ThisWorkbook.Worksheets("User_defined_settings").Range("A" & Rows.Count).End(xlUp).Value <> 0 And ThisWorkbook.Worksheets("User_defined_settings").Range("A" & Rows.Count).End(xlUp).Value <> "Closed" Then
    UF_Affichage.Show
    Else
    Call clean_history
    Call set_backup_environment
    Call apply_workbook_settings
End If
ThisWorkbook.Save
Application.ScreenUpdating = True
Application.EnableEvents = True
Worksheets("Fiche de renseignements").Activate
End Sub

Pouvez-vous m'aider s'il vous plaît ?

Je vous remercie à l'avance,
Youri
 

Orodreth

XLDnaute Impliqué
Re : Evénement qui ne se déclenche pas

Bonjour Youri.

A priori, ton code est bon je dirais :confused:
Essaye de voir si tu passes bien sur ta ligne avec un point d'arrêt (F9, puis F8 pour le pas à pas).

As-tu un message d'erreur ?

Cordialement,
Thomas
 

Youri

XLDnaute Occasionnel
Re : Evénement qui ne se déclenche pas

Bonjour Pierrot, bonjour Thomas, bonjour Sptitnolan,

Merci beaucoup pour votre aide.

Thomas, j'ai essayé ta proposition mais malheureusement, impossible de passer en mode débogage à ce moment (Excel me fait un message d'erreur) ...

Spitnolan, merci beaucoup pour la proposition mais pas d'erreur de ce côté là.

Pierrot, c'était effectivement toi qui avait raison. Malheureusement, même en arrivant à déclencher worksheet_activate, ça ne résout pas mon problème.

Par contre, je crois que je viens de comprendre la cause du problème. Mais je n'arrive pas à la résoudre. J'espère que vous pourrez m'aider.

En fait, je souhaitais activer Worksheet_Activate afin que cette dernière appelle Worksheet_SelectionChange.

Worksheet_SelectionChange a pour rôle de définir plusieurs variables afin de les comparer par la suite aux valeurs obtenues lors de Worksheet_Change et exécuter des actions en conséquence. Ces variables sont déclarées sous forme de variables Private.

Malheureusement, je viens de remarquer qu'à chaque fois que je sauvegarde, les variable définies par Worksheet_SelectionChange disparaissent.

Je viens de tester dans un classeur extérieur la procédure suivante :
Code:
Option Explicit
Private var_test As String
Private Sub Worksheet_Change(ByVal Target As Range)
If var_test = "mavaleur" Then
Debug.Print 1
Else
Debug.Print 0
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
var_test = "mavaleur"
End Sub

Ca m'a permis de comprendre que le problème ne vient pas de la sauvegarde en elle-même car en l'occurence, la valeur de la variable var_test n'est pas effacée à la sauvegarde.

Ca vient donc incontestablement des modules que j'utilise.

Voici donc le code du module ShowAll :
Code:
Sub ShowAll()
Worksheets("Fiche de renseignements").Visible = xlSheetVisible
    On Error Resume Next
    ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = True
    If Err.Number = 0 Then
        Application.DisplayAlerts = False
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Delete
        ThisWorkbook.Worksheets("Fiche de renseignements").Copy After:=Worksheets("Fiche de renseignements")
        Application.EnableEvents = True
        ThisWorkbook.Worksheets("Fiche de renseignements").Activate
        Application.EnableEvents = False
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = xlSheetVeryHidden
        Application.DisplayAlerts = True
        On Error GoTo 0
        Else
        ThisWorkbook.Worksheets("Fiche de renseignements").Copy After:=Worksheets("Fiche de renseignements")
        Application.EnableEvents = True
        ThisWorkbook.Worksheets("Fiche de renseignements").Activate
        Application.EnableEvents = False
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = xlSheetVeryHidden
        On Error GoTo 0
    End If
Worksheets("Informations").Visible = xlSheetVeryHidden
End Sub

Ci-dessous le code du module BeforeSave :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim MonChoix As Variant
Cancel = True
If Not SaveAsUI Then
    Call gestion_sauvegarde(1)
    ThisWorkbook.Save
    ThisWorkbook.Saved = True
    Else
    MonChoix = Application.GetSaveAsFilename(ThisWorkbook.Name, "Classeur Microsoft Office Excel (*.xls), *.xls")
End If
If Not MonChoix = False Then
    ThisWorkbook.SaveAs Filename:=MonChoix, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    Call gestion_sauvegarde(1)
    ThisWorkbook.Save
    ThisWorkbook.Saved = True
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Enfin le code de gestion_sauvegarde :
Code:
Sub gestion_sauvegarde(ByVal Cas As Byte)
Select Case Cas
    Case 0
    On Error Resume Next
    ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = True
    If Err.Number = 0 Then
        Application.DisplayAlerts = False
        ThisWorkbook.Worksheets("Fiche de renseignements").Delete
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Name = "Fiche de renseignements"
        Application.DisplayAlerts = True
        On Error GoTo 0
    Else
        On Error GoTo 0
    End If
    Case 1
    On Error Resume Next
    ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = True
    If Err.Number = 0 Then
        Application.DisplayAlerts = False
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Delete
        ThisWorkbook.Worksheets("Fiche de renseignements").Copy After:=Worksheets("Fiche de renseignements")
        ThisWorkbook.Worksheets("Fiche de renseignements").Activate
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = xlSheetVeryHidden
        Application.DisplayAlerts = True
        On Error GoTo 0
        Else
        ThisWorkbook.Worksheets("Fiche de renseignements").Copy After:=Worksheets("Fiche de renseignements")
        ThisWorkbook.Worksheets("Fiche de renseignements").Activate
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = xlSheetVeryHidden
        On Error GoTo 0
    End If
    Case 2
    On Error Resume Next
    ThisWorkbook.Worksheets("Fiche de renseignements (2)").Visible = True
    If Err.Number = 0 Then
        Application.DisplayAlerts = False
        ThisWorkbook.Worksheets("Fiche de renseignements (2)").Delete
        Application.DisplayAlerts = True
        On Error GoTo 0
        Else
        On Error GoTo 0
    End If
End Select
End Sub

Voilà, je sais, c'est un peu lourd, mais le problème vient très probablement de là car avant d'ajouter ces modules, je n'en avais pas. Ca fait déjà un bout de temps que j'essaye de résoudre le problème mais je n'y arrive vraiment pas.

Si vous pouvez m'aider, je vous en serais donc infiniment reconnaissant et merci à l'avance,

Youri
 

Pierrot93

XLDnaute Barbatruc
Re : Evénement qui ne se déclenche pas

Bonsoir Youri

si tu veux avoir plus de chance d'obtenir une réponse, tu devrais pluôt nous mettre ton code dans un classeur, avec les bons noms d'onglet, car là vois tu, personnellement, pas trop de courage pour reconstituer le tout...

bonne soirée
@+
 
Dernière édition:

Youri

XLDnaute Occasionnel
Re : Evénement qui ne se déclenche pas

Bonjour à tous,

Je viens de définir le problème mais je n'arrive pas même à imaginer sa cause potentielle.

J'ai fait un fichier neuf et j'ai recopié le code de mon fichier précédent : ça marche.

J'ai crée une copie de mon fichier précédent, j'ai effacé tout le contenu et j'ai rendu le code exactement identique à celui du fichier neuf : ça marche pas.

Je poste dans ce fil le fichier qui marche.

Pour essayer, entrez quelque chose en P211 puis en P212 puis sélectionnez P211, sauvegardez et changez le contenu de P211 : P212 est effacé.
 

Pièces jointes

  • Classeur qui marche.zip
    17.3 KB · Affichages: 47

Youri

XLDnaute Occasionnel
Re : Evénement qui ne se déclenche pas

Je poste dans ce fil le fichier qui marche pas.

Pour essayer, entrez quelque chose en P211 puis en P212 puis sélectionnez P211, sauvegardez et changez le contenu de P211 : P212 n'est pas effacé.

Voilà, ça fait un bout de temps que j'essaye de résoudre ce problème mais je ne vois vraiment pas quoi faire.

Je vous remercie à l'avance pour votre aide,
Youri
 

Pièces jointes

  • Classeur Cassé.zip
    29.9 KB · Affichages: 37

Pierrot93

XLDnaute Barbatruc
Re : Evénement qui ne se déclenche pas

Bonjour Youri

peut être rien à voir, mais je vois déjà 2 choses, la 1ère sur le "classeur cassé" sul la ligne 210 les cellules sont fusionnées, pas sur le "classeur qui marche". 2ème chose sur chaque feuille, il y a la même déclaration de variable public, préféré cette déclaration au niveau d'un module standard comme ton module "ouverture_fermeture".

à voir si ces modifications peuvent solutionner ton problème.

bon après midi
@+
 

Youri

XLDnaute Occasionnel
Re : Evénement qui ne se déclenche pas

Bonjour Pierrot,

Merci pour l'idée mais non, le problème ne vient pas de là.
Ce qui est étrange c'est la taille du "classeur cassé" par rapport au "classeur qui marche".
De plus, quand on essaye de voir ce qui se passe lors de la sauvegarde en mode débogage, Excel fait le message "Impossible d'entrer en mode arrêt maintenant." sans aucune raison apparente, surtout sachant que ça ne fait pas ce problème sur le "classeur qui marche".
Personnellement, je pense que le problème vient de la structure xml du fichier qui a du être endommagée d'une manière ou d'une autre mais je ne m'y connais absolument pas.
J'ai essayé d'ouvrir microsoft script editor mais je n'y comprends rien.

Voilà, merci beaucoup pour l'aide, a bientôt,
Youri
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 079
Membres
103 455
dernier inscrit
saramachado