Pourquoi cela ne fonctionne toujours pas !?!?

S

SAMANTHA

Guest
Bonjour le forum et tous les excelliens et excelliènes !!!

Pourquoi une fois cliqué sur ma cellule H14, mon USF (2) n'apparait pas ?
Comme qui dirait qu'il y à un chti bug...

Voici ci-dessous mes codes évenementiels et plus bas encore mes codes pour mes deux USF.

--------------------------------

Option Explicit

'Mes EVENEMENTIELLES !!!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("G14:G24")) Is Nothing Then
UserForm1.Show
End If
If Not Application.Intersect(Target, Union([E14:E24], [F14:F24])) Is Nothing Then Calendrier.Show
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("H14:H24")) Is Nothing Then
Cancel = True
UserForm1.Show
End If
If Not Application.Intersect(Target, Range("G14:G24")) Is Nothing Then
Cancel = True
UserForm2.Show
End If
End Sub

------------------------------

Ma commande USF 1

Option Explicit

'Thierry's Macro Démo sur www-excel-downloads.com, July 2003

Private Sub UserForm_Initialize() 'INITIALISATION DU USER FORM
'Ici je veux que la TextBox affiche un Text
TextBox1.Value = "Entrez ici votre commentaire !!"

'Ici j'authorise la TextBox à faire du Multi Lignes
TextBox1.MultiLine = True

'Pascal donner nom
TextBox1.Value = "Entrez le NOM ici !!"

'Ici j'authorise la TextBox à faire du Multi Lignes
TextBox1.MultiLine = True

End Sub

Private Sub UserForm_Activate() ' ACTIVATION DU USER FORM
Selection_SurBrillance
End Sub

Private Sub CommandButton1_Click()
'Ici je reporte ce qu'il y a dans la TextBox sur la cellule active
ActiveCell = TextBox1

'Ici je cache le UserForm qui reste en Mémoire (la TextBox garde la valeur Saisie)
Me.Hide
End Sub

Private Sub CommandButton2_Click() 'BOUTON EXIT
'Ici je décharge le UserForm de la Mémoire (la TextBox Perd la valeur Saisie)
Unload Me
End Sub

Private Sub Selection_SurBrillance()
'ici c 'est juste pour que le Text entré en initialisation soit en "sur-brillance"
'C'est à dire déjà sélectionné, pour le confort du User, qui n'a plus qu'à taper dans la TextBox.
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
End With
End Sub

-------------------------------

Ma commande USF 2

Option Explicit

'De moi, July 2003

Private Sub UserForm_Initialize() 'INITIALISATION DU USER FORM
'Ici je veux que la TextBox affiche un Text
TextBox1.Value = "Entrez ici votre commentaire !!"

'Ici j'authorise la TextBox à faire du Multi Lignes
TextBox1.MultiLine = True

'Pascal donner nom
TextBox1.Value = "Entrez le NOM de la personne !!"

'Ici j'authorise la TextBox à faire du Multi Lignes
TextBox1.MultiLine = True

End Sub

Private Sub UserForm_Activate() ' ACTIVATION DU USER FORM
Selection_SurBrillance
End Sub

Private Sub CommandButton1_Click()
'Ici je reporte ce qu'il y a dans la TextBox sur la cellule active
ActiveCell = TextBox1

'Ici je cache le UserForm qui reste en Mémoire (la TextBox garde la valeur Saisie)
Me.Hide
End Sub

Private Sub CommandButton2_Click() 'BOUTON EXIT
'Ici je décharge le UserForm de la Mémoire (la TextBox Perd la valeur Saisie)
Unload Me
End Sub

Private Sub Selection_SurBrillance()
'ici c 'est juste pour que le Text entré en initialisation soit en "sur-brillance"
'C'est à dire déjà sélectionné, pour le confort du User, qui n'a plus qu'à taper dans la TextBox.
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
End With
End Sub

***************************

PS : Tout ce qui concerne mon USF 1 ainsi que mon evenementiel concernant mes cellules G14:G24 fonctionne parfaitement....
 
@

@+Thierry

Guest
Bonjour Samantha, le Forum

Oui là tu tu compliques la vie avec Deux évènementielles différentes interferrant entre elles sur la même plage (G14:G24)... ! Faut le faire (lol)

En effet le RightClick peut faire déplacer ta cellule active et par conséquant il est considéré aussi comme un SelectionChange...

Huum Huum...

Soit tu changes pour des évènements qui ne n'interferrent pas entre eux (DoubleClick + RightClick) soit tu dois faire intervenir le cerveau du User avec un code comme celui si dans ton Private Module de Feuille :

Option Explicit
Dim ClickDroit As Boolean 'Public variable en Top du Module
Dim FirstClick As Byte 'Idem

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Range("G14:G24")) Is Nothing Then
'Si c'est le premier click
If FirstClick = 0 Then
FirstClick = MsgBox("Cette Plage est concernée par Deux Macros Evènementielles," _
& vbCrLf & "Pour Travailler en Click Droit répondre OUI" _
& vbCrLf & "Pour Travailler en Click Gauche Répondre NON", vbYesNo, "Attention")
'selon la réponse :
If FirstClick = 6 Then ClickDroit = True
If FirstClick = 7 Then ClickDroit = False
End If

'On test la Variable Boolean ainsi créée
If ClickDroit = False Then
MsgBox "USF1 Lancer par Sélection Change"
End If
End If
If Not Application.Intersect(Target, Union([E14:E24], [F14:F24])) Is Nothing Then
MsgBox "Calendrier"
End If
End Sub


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("H14:H24")) Is Nothing Then
Cancel = True
MsgBox "USF1"
End If
'On test la Variable Boolean ainsi créée
If ClickDroit = True Then
If Not Application.Intersect(Target, Range("G14:G24")) Is Nothing Then
Cancel = True
MsgBox "USF2 lancé par ClickDroit"
End If
End If
End Sub


Si tu as besoin de réinitialiser le tout, car dans cette démo les variables "FirstClick" et "ClickDroit" gardent en mémoire la réponse du User, tu peux placer le code suivant soit un bouton, soit sur un autre évènement de la Feuille en question...

Private Sub Worksheet_Activate()
FirstClick = 0
End Sub

....
Mais bon c'est Just For The Fun, car "It's Only Rock N' Roll" et un peu beaucoup tiré par les cheveux une solution pareil (lol)

Bonne Journée (et amuses-toi bien !!)
@+Thierry
 

Discussions similaires

Réponses
12
Affichages
446

Statistiques des forums

Discussions
312 215
Messages
2 086 322
Membres
103 178
dernier inscrit
BERSEB50