Bonjour,
J'ai une dérive par rapport à l'utilisation de zone de texte que je n'arrive pas à résoudre. J'ai crée une classe afin d'ajouter deux évènement GetFocus et LostFocus sur des shapes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Option Explicit Private memShp As Shape Private WithEvents wbk As Workbook Public Event GetFocus(shp As Shape) Public Event LostFocus(shp As Shape) Public Sub ShapeClic(shp As Shape) FreeShape Set memShp = shp RaiseEvent GetFocus(memShp) End Sub Private Sub FreeShape() If Not memShp Is Nothing Then RaiseEvent LostFocus(memShp) Set memShp = Nothing End Sub Private Sub Class_Initialize() Set wbk = ThisWorkbook End Sub Private Sub wbk_BeforeClose(Cancel As Boolean) FreeShape End Sub Private Sub wbk_Deactivate() FreeShape End Sub Private Sub wbk_SheetActivate(ByVal Sh As Object) FreeShape End Sub Private Sub wbk_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) FreeShape End Sub
J'ai ensuite inséré dans le module thisWorkbook le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private WithEvents ShapesEvts As Cls_ShapesEvents Public Sub ClickShape() On Error Resume Next If ShapesEvts Is Nothing Then Set ShapesEvts = New Cls_ShapesEvents ShapesEvts.ShapeClic ActiveSheet.Shapes(Application.Caller) End Sub Private Sub ShapesEvts_GetFocus(shp As Shape) shp.TextFrame2.TextRange.Characters.Select End Sub Private Sub ShapesEvts_LostFocus(shp As Shape) End Sub
Lors que je click sur une zone de texte j'active l'évènement getFocus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub ShapesEvts_GetFocus(shp As Shape) shp.TextFrame2.TextRange.Characters.Select End Sub
Je sélectionne ainsi la zone de texte. Par contre lorsque je clique directement sur une seconde zone de texte, je rentre directement dans l'éditeur de texte sans déclencher de LostFocus.
Le lostFocus se déclenche uniquement lorsque je click sur une cellule à côté ou un Shape n'ayant pas de texte, et uniquement pour la première forme sélectionnée. Y a t-il moyen d'ajouter un évènement qui détecte le changement de selection de TextFrame2 des zones de textes ?? Ou bien de désactiver le changement de souris en mode édition de texte lorsque la souris survol d'autre zone de texte (afin de retrouver une main permettant de déclencher la propriété onaction qui renvoie sur shapeclick )
Merci d'avance.
Partager