Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Err_Worksheet_SelectionChange
'déclaration ==============================
Dim Cancel As Boolean
'MEI ======================================
Application.EnableEvents = False
Application.ScreenUpdating = False
'Premier traitement =======================
If Not (Intersect(Target, Range("F5:F104")) Is Nothing) And Target.Cells.Count = 1 Then
Cancel = True
If UCase(Target) = UCase("oui") Then
Target = ""
Else
Target = "Oui"
End If
End If
'second traitement =======================
If Not (Intersect(Target, Range("E5:E104")) Is Nothing) And Target.Cells.Count = 1 Then
If Not (IsEmpty(Target)) Then
Target.Offset(0, 1) = "oui"
Else
Target.Offset(0, 1) = ""
End If
End If
Sort_Worksheet_SelectionChange:
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
Err_Worksheet_SelectionChange:
MsgBox Err.Description, vbCritical + vbOKOnly, "Erreur Excel n°" & Err.Number
Resume Sort_Worksheet_SelectionChange
End Sub
Sub Test
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
j'ai modifié ta macro, Na ! 😛
Plusieurs solutions possibles, mais, moi, je travaille comme ça.
Tu changes F10 => la macro se lance, modifie F10 qui lance la macro, etc.. : boucle sans fin
Pour éviter ça, on bloque les événements =EnableEvents=false
Changement F10 => la macro se lance => bloque évènement => change F10 sans déclencher la macro. => relance les évènements et termine la macro OK
Mais, suivant la Loi de Murphy 😡 :
F10 change => lance macro => Bloque évènements => continue le code et Excel trouve une erreur => Excel reprend la main => Excel averti => Excel arrête la macro ..... sans repasser sur le code de remise en route des évènements
Pour éviter ça, Gestion des évènements obligatoire => comme dans mon code, avec remplacement obligatoire de toutes sorties de la macro EXIT SUB remplacé par GOTO Sort_Worksheet_SelectionChange
Avec ma macro : si Excel rencontre une erreur => il prend la main => continue la macro à l'adresse Err_... qui averti (j'aime bien savoir qu'il y a un problème) et continue la macro à l'adresse Sort_... qui remet en route les événement et arrête la macro.
ScreenUpDating : blocage du rafraîchissement écran (False) ou remise en route (True). 2 buts :
- accélérer le traitement de la macro, mais là, ce n'est pas primordial
- avoir une chance de prévenir que la gestion des évènements est bloquée. C'est vrai que ça ne peut pas arriver, mais en période de rôdage de la macro, je travaille souvent en pas-à-pas (avec point d'arrêt), et quand je me rends compte d'une erreur de code, il m'arrive de sortir (ou Excel me demande de le faire), et comme je suis dans le solutionnement, je ne pense pas toujours à la gestion des évènements. L'écran gris est un bon moyen 😀
la maccro test me sert à la remise en route des gestion dans ces cas.
A+
Salut
Ma boule de cristal étant brumeuse ce matin, j'ai du mal 😀
je suppose que c'est celle qui te permet d'avoir un max de formats conditionnels déclarés dans une autre feuille ?
Si c'est celle-là, il faut la mettre dans le module de classe ThisWorkBook !
Sinon, il faudrait savoir de laquelle tu parles, par ce qu'il en a fait un gros tas de macro.
A+
Salut
pas vue !
C'est une macro qui ne s'applique que sur la feuille liée au module où elle est (ici VIDE).
Paz contre, sa finalité, c'est, si le format conditionnel (dernière condition) commence par mDf, on évalue la formule qui suiy, qui détermine la présence visible d'un commentaire.
Comme d'hab. dès que je vois du code mDf, je me dis que je manque d'imagination 😱
A+
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD