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

Limiter une selection à la colonne d'appel

4 réponses
Avatar
Manbas
Bonjour,
Dans un classeur avec une barre d'outil spécifique, j'ai écris ce bout de
code pour gagner du temps:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel
As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True

Tout marche, OK.
Mais je voudrais que ma sélection ne puisse pas déborder de la colonne I
(par mégarde ou par intention).
Comment écrire ça?
Merci pour vos suggestions.

4 réponses

Avatar
Philippe.R
Bonsoir,
Avec cette petite adaptation :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
Range(Cells(Selection.Row, "i"), Cells(Selection.Row + _
Selection.Rows.Count - 1, "i")).Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True
End Sub

Convient-ce ?
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Manbas" a écrit dans le message de
news:
Bonjour,
Dans un classeur avec une barre d'outil spécifique, j'ai écris ce bout de
code pour gagner du temps:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel
As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True

Tout marche, OK.
Mais je voudrais que ma sélection ne puisse pas déborder de la colonne I
(par mégarde ou par intention).
Comment écrire ça?
Merci pour vos suggestions.



Avatar
Philippe.R
Re Mambas,
Ce sera peut être mieux comme ça :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
Range(Cells(IIf(Selection.Row < 10, 10, Selection.Row), "i"), _
Cells(IIf(Selection.Row + Selection.Rows.Count - 1 > 114, _
114, Selection.Row + Selection.Rows.Count - 1), "i")).Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True
End Sub
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Manbas" a écrit dans le message de
news:
Bonjour,
Dans un classeur avec une barre d'outil spécifique, j'ai écris ce bout de
code pour gagner du temps:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel
As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True

Tout marche, OK.
Mais je voudrais que ma sélection ne puisse pas déborder de la colonne I
(par mégarde ou par intention).
Comment écrire ça?
Merci pour vos suggestions.



Avatar
Manbas
Ah oui. Merci beaucoup Philippe.
ça marche âchement bien mais je comprends pas tout...

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:
%
Re Mambas,
Ce sera peut être mieux comme ça :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
Range(Cells(IIf(Selection.Row < 10, 10, Selection.Row), "i"), _
Cells(IIf(Selection.Row + Selection.Rows.Count - 1 > 114, _
114, Selection.Row + Selection.Rows.Count - 1), "i")).Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True
End Sub
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Manbas" a écrit dans le message de
news:
Bonjour,
Dans un classeur avec une barre d'outil spécifique, j'ai écris ce bout de
code pour gagner du temps:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range,
Cancel As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True

Tout marche, OK.
Mais je voudrais que ma sélection ne puisse pas déborder de la colonne I
(par mégarde ou par intention).
Comment écrire ça?
Merci pour vos suggestions.







Avatar
Philippe.R
Bonjour Manbas,
J'ai simplement rajouté ceci :

Range(Cells(IIf(Selection.Row < 10, 10, Selection.Row), "i"), _
Cells(IIf(Selection.Row + Selection.Rows.Count - 1 > 114, _
114, Selection.Row + Selection.Rows.Count - 1), "i")).Select

qui redéfinit la plage en fonction des bornes de la sélection sélection
Si la ligne de la 1ère cellule de la sélection est inférieure à 10, on
resélectionne une plage commençant en la cellule i10,
sinon, on conserve la ligne déjà sélectionnée, mais en colonne i seulement.
Si la dernière ligne de la sélection dépasse la ligne la ligne 114 (on la
calcule en comptant le nombre de lignes sélectionnées qu'on ajoute à la 1ère
ligne et auquel on retranche 1), on prend pour borne extrême de la plage la
cellule i114
sinon, on prend bien la dernière ligne, mais en colonne i seulement
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Manbas" a écrit dans le message de
news:e$
Ah oui. Merci beaucoup Philippe.
ça marche âchement bien mais je comprends pas tout...

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:
%
Re Mambas,
Ce sera peut être mieux comme ça :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
Range(Cells(IIf(Selection.Row < 10, 10, Selection.Row), "i"), _
Cells(IIf(Selection.Row + Selection.Rows.Count - 1 > 114, _
114, Selection.Row + Selection.Rows.Count - 1), "i")).Select
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True
End Sub
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Manbas" a écrit dans le message de
news:
Bonjour,
Dans un classeur avec une barre d'outil spécifique, j'ai écris ce bout
de code pour gagner du temps:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range,
Cancel As Boolean)
' coloriage des vacances scolaires
Dim VacScol As Boolean
VacScol = Not Intersect(Target, Range("I10:I114")) Is Nothing
If VacScol = True Then
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If
Cancel = True

Tout marche, OK.
Mais je voudrais que ma sélection ne puisse pas déborder de la colonne I
(par mégarde ou par intention).
Comment écrire ça?
Merci pour vos suggestions.