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
Nom : test.jpg
Affichages : 223
Taille : 10,6 Ko


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.

Nom : Test 2.jpg
Affichages : 210
Taille : 14,2 Ko

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.