Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonctionnement conjoint de worksheet_Change et worksheet_selectionChange

4 réponses
Avatar
JP
Bonjour,

Dans une m=EAme feuille, j'ai les deux macros l=E0.
Quand je s=E9lectionne sur ma feuille une colonne (ailleurs que dans la zon=
e "edt")pour l=E0 maquer, excel 2010 plante.=20
Je dois red=E9marrer.
Est-ce quelqu'un aurait une id=E9e du pourquoi?

Merci

JP


Public Feuille As Worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("edt")) Is Nothing Then ' plage nomm=E9e edt
'Lance la macro DeprotegeFeuilles
Set Feuille =3D ActiveSheet
DeprotegeFeuilles
Feuille.Activate
'Lance la macro couleur du module
Couleurs
End If
End Sub
' ************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As Integer
For Each PK In Target
Set isect =3D Application.Intersect(PK, Range("edt")) ' plage nomm=E9e =
edt
If Not isect Is Nothing Then var =3D var + 1
Next
If var > 1 And var =3D Selection.Count Then
'Lance la macro DeprotegeFeuilles
Set Feuille =3D ActiveSheet
DeprotegeFeuilles
Feuille.Activate
UserForm5.Show
End If
End Sub

4 réponses

Avatar
DanielCo
Bonjour,
Essaie comme ceci :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim isect As Range
Set isect = Intersect(Target, Range("edt"))
If Not isect Is Nothing Then
If isect.Count = Target.Count Then
Set Feuille = ActiveSheet
DeprotegeFeuilles
Feuille.Activate
UserForm5.Show
End If
End If
End Sub
Cordialement.
Daniel


Bonjour,

Dans une même feuille, j'ai les deux macros là.
Quand je sélectionne sur ma feuille une colonne (ailleurs que dans la zone
"edt")pour là maquer, excel 2010 plante. Je dois redémarrer.
Est-ce quelqu'un aurait une idée du pourquoi?

Merci

JP


Public Feuille As Worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("edt")) Is Nothing Then ' plage nommée edt
'Lance la macro DeprotegeFeuilles
Set Feuille = ActiveSheet
DeprotegeFeuilles
Feuille.Activate
'Lance la macro couleur du module
Couleurs
End If
End Sub
' ************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As Integer
For Each PK In Target
Set isect = Application.Intersect(PK, Range("edt")) ' plage nommée edt
If Not isect Is Nothing Then var = var + 1
Next
If var > 1 And var = Selection.Count Then
'Lance la macro DeprotegeFeuilles
Set Feuille = ActiveSheet
DeprotegeFeuilles
Feuille.Activate
UserForm5.Show
End If
End Sub
Avatar
JP
Bonjour Daniel,

Je viens de tester. Il faut vraiment que la condition de sélection sur pl usieurs cellules soit prise en considération.
Avec ta proposition, dès qu'une nouvelle cellule est sélectionnée, la macro démarre, l'userform5 s'ouvre. Ce n'est pas le but recherché. L'u serform5 doit s'ouvrir que si plusieurs cellules sont selectionnées.


Cordialement

JP
Avatar
DanielCo
Ajoute la ligne :
If Target.Count = 1 Then Exit Sub
en début de macro.
Daniel

Bonjour Daniel,

Je viens de tester. Il faut vraiment que la condition de sélection sur
plusieurs cellules soit prise en considération. Avec ta proposition, dès
qu'une nouvelle cellule est sélectionnée, la macro démarre, l'userform5
s'ouvre. Ce n'est pas le but recherché. L'userform5 doit s'ouvrir que si
plusieurs cellules sont selectionnées.


Cordialement

JP
Avatar
JP
Une petite ligne en plus comme celle-là et tout et bien.

Merci Daniel

JP