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

ScrollArea sur plage de cellules non adjacentes

6 réponses
Avatar
garnote
Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge

6 réponses

Avatar
michdenis
Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule désignée ...Faut pas t'arrêter à mi-chemin ...

;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de news:P4Mwc.25944$
Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge
Avatar
garnote
Yep !
J'avais pensé au BeforeDoubleClick mais pas au Cancel.
Mais veux-tu ben m'dire pourquoi Monsieur Soft n'a pas
prévu les plages discontinues pour son ScrollArea ?
Je ne suis pas le seul à m'arrêter à mi-chemin :-)

Serge



"michdenis" a écrit dans le message de news:

Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule désignée
...Faut pas t'arrêter à mi-chemin ...


;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)


End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de
news:P4Mwc.25944$

Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge





Avatar
michdenis
Bonjour Garnote,

S et T sont 2 plages de cellules nommées de largeur identique située une en dessous de l'autre avec un certain nombre de
lignes entre les 2 plages.

Essaie ce qui suit , tu ne devrais pas avoir besoin d'une autre procédure, nonobstant celle qui définit le ScrollRange à
l'ouverture du classeur.

Ce n'est pas parfait ... sinon tu devras t'adresser à Gros Bill !

;-))

'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range, C As Range

Set Rg = Union(Range("T"), Range("S"))
If Union(Target, Rg).Address <> Rg.Address Then
Set C = Intersect(Target, Rg)
If Not C Is Nothing Then
C(1, 1).Resize(C.Rows.Count, C.Columns.Count).Select
Else
Rg(1, 1).Select
End If
End If

End Sub
'-----------------------------


Salutations!



"garnote" a écrit dans le message de news:ACMwc.26201$
Yep !
J'avais pensé au BeforeDoubleClick mais pas au Cancel.
Mais veux-tu ben m'dire pourquoi Monsieur Soft n'a pas
prévu les plages discontinues pour son ScrollArea ?
Je ne suis pas le seul à m'arrêter à mi-chemin :-)

Serge



"michdenis" a écrit dans le message de news:

Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule désignée
...Faut pas t'arrêter à mi-chemin ...


;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)


End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de
news:P4Mwc.25944$

Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge





Avatar
garnote
Salut Denis,

Je vais de ce pas essayer ta macro. Moi j'en étais là :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Cancel = True
If Union(Target, Range("ici")).Address <> Range("ici").Address _
Then Range("ici").Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address <> Range("ici").Address _
Then Range("ici").Select
End Sub

Serge


"michdenis" a écrit dans le message de news:
#
Bonjour Garnote,

S et T sont 2 plages de cellules nommées de largeur identique située une
en dessous de l'autre avec un certain nombre de

lignes entre les 2 plages.

Essaie ce qui suit , tu ne devrais pas avoir besoin d'une autre procédure,
nonobstant celle qui définit le ScrollRange à

l'ouverture du classeur.

Ce n'est pas parfait ... sinon tu devras t'adresser à Gros Bill !

;-))

'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rg As Range, C As Range

Set Rg = Union(Range("T"), Range("S"))
If Union(Target, Rg).Address <> Rg.Address Then
Set C = Intersect(Target, Rg)
If Not C Is Nothing Then
C(1, 1).Resize(C.Rows.Count, C.Columns.Count).Select
Else
Rg(1, 1).Select
End If
End If

End Sub
'-----------------------------


Salutations!



"garnote" a écrit dans le message de
news:ACMwc.26201$

Yep !
J'avais pensé au BeforeDoubleClick mais pas au Cancel.
Mais veux-tu ben m'dire pourquoi Monsieur Soft n'a pas
prévu les plages discontinues pour son ScrollArea ?
Je ne suis pas le seul à m'arrêter à mi-chemin :-)

Serge



"michdenis" a écrit dans le message de news:

Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule
désignée


...Faut pas t'arrêter à mi-chemin ...

;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)


End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de
news:P4Mwc.25944$

Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge










Avatar
michdenis
Voici un autre façon de faire :

A1:F18 = ScrollArea

S et T sont 2 plages de cellules à l'intérieur de cette plage

'--------------------------
Sub LimterAccess()

With Worksheets("Feuil1")
.Unprotect
.Range("A1:F18").Locked = True
Union(.Range("T"), .Range("S")).Locked = False
.ScrollArea = .Range("A1:F18").Address
.EnableSelection = xlUnlockedCells
.Protect
End With

End Sub
'---------------------------------


Salutations!


"garnote" a écrit dans le message de news:ACMwc.26201$
Yep !
J'avais pensé au BeforeDoubleClick mais pas au Cancel.
Mais veux-tu ben m'dire pourquoi Monsieur Soft n'a pas
prévu les plages discontinues pour son ScrollArea ?
Je ne suis pas le seul à m'arrêter à mi-chemin :-)

Serge



"michdenis" a écrit dans le message de news:

Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule désignée
...Faut pas t'arrêter à mi-chemin ...


;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)


End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de
news:P4Mwc.25944$

Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge





Avatar
garnote
Et aussi la réponse de ChrisV ( 06/06/04 18:10 ) :


Bonjour Nicolas,

En supposant que le tableau soit constitué des plages:
B2:B12
B14
B19
et D5:G5

Déverrouiller les cellules du tableau (Format de cellule/Protection), puis
protéger la feuille, et enfin insérer le code suivant dans la feuille de
code de l'onglet concerné

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub


Bonne nuit.
Serge


"michdenis" a écrit dans le message de news:
O#
Voici un autre façon de faire :

A1:F18 = ScrollArea

S et T sont 2 plages de cellules à l'intérieur de cette plage

'--------------------------
Sub LimterAccess()

With Worksheets("Feuil1")
.Unprotect
.Range("A1:F18").Locked = True
Union(.Range("T"), .Range("S")).Locked = False
.ScrollArea = .Range("A1:F18").Address
.EnableSelection = xlUnlockedCells
.Protect
End With

End Sub
'---------------------------------


Salutations!


"garnote" a écrit dans le message de
news:ACMwc.26201$

Yep !
J'avais pensé au BeforeDoubleClick mais pas au Cancel.
Mais veux-tu ben m'dire pourquoi Monsieur Soft n'a pas
prévu les plages discontinues pour son ScrollArea ?
Je ne suis pas le seul à m'arrêter à mi-chemin :-)

Serge



"michdenis" a écrit dans le message de news:

Bonsoir Garnote,

Pourquoi penses-tu que cet événement existe ?

Tu utilises cancel et tu rediriges la sélection vers une cellule
désignée


...Faut pas t'arrêter à mi-chemin ...

;-))

'---------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)


End Sub
'---------------------


Salutations!


"garnote" a écrit dans le message de
news:P4Mwc.25944$

Bonsoir,

Comme je n'arrivais pas à utitiser ScrollArea sur une plage
de cellules non adjacentes, je croyais avoir trouvé un détour
en nommant «ici» la plage A1:D2 , A10:D10 et en utilisant la
macro suivante. Mais je viens de constater que si je double-clique
sur une cellule, ma macro ne convient plus.
Que faire ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Union(Target, Range("ici")).Address = Range("ici").Address Then
Exit Sub
Else
Range("ici").Select
End If
End Sub

Serge