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

If Not Intersect([x:x], target) Is Nothing ...

6 réponses
Avatar
j-pascal
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select


En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP

6 réponses

Avatar
JB
Bonjour,

-Intersect(champ1,champ2,…) donne l'intersection de champ1,champ2,...
-Renvoi Nothing si l'intersection ne comporte aucune cellule.
- If Not Intersect([C:H], Target) Is Nothing permet de tester si
target appartient au
champ [C:H]

Le code ci dessous déplace le curseur d'une colonne à droite lors
d'une sélection dans les colonnes C:H:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect([C:H], Target) Is Nothing Then Target.Offset(0,
1).Select
Application.EnableEvents = True
End Sub

Si on enlève Application.EnableEvents = False, l'événement
'SelectionChange' est activé à nouveau jusqu'à ce que le curseur
arrive en colonne I

JB
http://boisgontierjacques.free.fr/

On 13 jan, 00:27, j-pascal wrote:
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select

En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP


Avatar
j-pascal
Bonjour Jacques,

Merci pour ces explications.
Que faudrait-il faire pour que le curseur saute la colonne "E" (ie) si
celle-ci contient une valeur (ou plus généralement si une colonne
quelconque contient une valeur, alors le curseur passe à la première
cellule vide) ?
Pour moi, "intersection" veut dire "espace commun à deux plages".
J'imagine que le code fonctionne aussi si on met :
"If Not Intersect([C:C], Target) Is Nothing ..." et comme ceci ne fait
référence qu'à une seule "plage" je ne vois pas de notion
d'intersection ! Pourquoi le code ne teste pas "tout simplement" le
contenu des dites cellules : vides ou pas vides ? Quelque chose du
genre :
"If ([C:H], Target) Is Empty Then Target.Offset(0, 1).Select" ?
Désolé pour cette question de Candide ! Mais comme tu le vois, je bute
un peu sur la notion d'intersection...
@+ ?

JP

Bonjour,

-Intersect(champ1,champ2,…) donne l'intersection de champ1,champ2,...
-Renvoi Nothing si l'intersection ne comporte aucune cellule.
- If Not Intersect([C:H], Target) Is Nothing permet de tester si
target appartient au
champ [C:H]

Le code ci dessous déplace le curseur d'une colonne à droite lors
d'une sélection dans les colonnes C:H:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect([C:H], Target) Is Nothing Then Target.Offset(0,
1).Select
Application.EnableEvents = True
End Sub

Si on enlève Application.EnableEvents = False, l'événement
'SelectionChange' est activé à nouveau jusqu'à ce que le curseur
arrive en colonne I

JB
http://boisgontierjacques.free.fr/

On 13 jan, 00:27, j-pascal wrote:
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select

En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP




Avatar
Modeste
Bonsour® j-pascal
Bonne année !!! Meilleurs voeux à tous !!!

Pour moi, "intersection" veut dire "espace commun à deux plages".
J'imagine que le code fonctionne aussi si on met :
"If Not Intersect([C:C], Target) Is Nothing ..." et comme ceci ne fait
référence qu'à une seule "plage" je ne vois pas de notion
d'intersection !



l'instruction Intersect est composée de "AU MOINS" 2 paramétres plages
dans le cas présent : la plage(colonne C) et la plage (Target=1ére cellule de la selection)

si la cellule selectionnée est hors colonne C, il n'y a donc pas intersection : (Néant = is Nothing)
si la cellule selectionnée est en colonne C, il y a donc intersection (pas Néant = Not is Nothing)
Avatar
michdenis
Une autre variante quant à la façon de voir la situation:

Dim Rg As Range

Set Rg = Intersect(Target, Range("B5:C10"))

If not Rg is Nothing then
For each C in Rg
'le traitement pour chacune des cellules
'appartenant à l'intersection
Next
else
Msgbox "Aucune cellule commune des 2 plages de cellules"
end if




"j-pascal" a écrit dans le message de groupe de discussion :

Bonjour Jacques,

Merci pour ces explications.
Que faudrait-il faire pour que le curseur saute la colonne "E" (ie) si
celle-ci contient une valeur (ou plus généralement si une colonne
quelconque contient une valeur, alors le curseur passe à la première
cellule vide) ?
Pour moi, "intersection" veut dire "espace commun à deux plages".
J'imagine que le code fonctionne aussi si on met :
"If Not Intersect([C:C], Target) Is Nothing ..." et comme ceci ne fait
référence qu'à une seule "plage" je ne vois pas de notion
d'intersection ! Pourquoi le code ne teste pas "tout simplement" le
contenu des dites cellules : vides ou pas vides ? Quelque chose du
genre :
"If ([C:H], Target) Is Empty Then Target.Offset(0, 1).Select" ?
Désolé pour cette question de Candide ! Mais comme tu le vois, je bute
un peu sur la notion d'intersection...
@+ ?

JP

Bonjour,

-Intersect(champ1,champ2,…) donne l'intersection de champ1,champ2,...
-Renvoi Nothing si l'intersection ne comporte aucune cellule.
- If Not Intersect([C:H], Target) Is Nothing permet de tester si
target appartient au
champ [C:H]

Le code ci dessous déplace le curseur d'une colonne à droite lors
d'une sélection dans les colonnes C:H:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect([C:H], Target) Is Nothing Then Target.Offset(0,
1).Select
Application.EnableEvents = True
End Sub

Si on enlève Application.EnableEvents = False, l'événement
'SelectionChange' est activé à nouveau jusqu'à ce que le curseur
arrive en colonne I

JB
http://boisgontierjacques.free.fr/

On 13 jan, 00:27, j-pascal wrote:
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select

En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP




Avatar
j-pascal
Bonjour,

J'ai mis le code dans une feuille, mais même en ajoutant un offset, il
ne se passe rien (dans ou hors de la plage "B5:C10". J'ai dû oublier
qqch !

JP

Une autre variante quant à la façon de voir la situation:

Dim Rg As Range

Set Rg = Intersect(Target, Range("B5:C10"))

If not Rg is Nothing then
For each C in Rg
'le traitement pour chacune des cellules
'appartenant à l'intersection
Next
else
Msgbox "Aucune cellule commune des 2 plages de cellules"
end if




"j-pascal" a écrit dans le message de groupe de
discussion :
Bonjour Jacques,

Merci pour ces explications.
Que faudrait-il faire pour que le curseur saute la colonne "E" (ie) si
celle-ci contient une valeur (ou plus généralement si une colonne
quelconque contient une valeur, alors le curseur passe à la première
cellule vide) ?
Pour moi, "intersection" veut dire "espace commun à deux plages".
J'imagine que le code fonctionne aussi si on met :
"If Not Intersect([C:C], Target) Is Nothing ..." et comme ceci ne fait
référence qu'à une seule "plage" je ne vois pas de notion
d'intersection ! Pourquoi le code ne teste pas "tout simplement" le
contenu des dites cellules : vides ou pas vides ? Quelque chose du
genre :
"If ([C:H], Target) Is Empty Then Target.Offset(0, 1).Select" ?
Désolé pour cette question de Candide ! Mais comme tu le vois, je bute
un peu sur la notion d'intersection...
@+ ?

JP

Bonjour,

-Intersect(champ1,champ2,…) donne l'intersection de champ1,champ2,...
-Renvoi Nothing si l'intersection ne comporte aucune cellule.
- If Not Intersect([C:H], Target) Is Nothing permet de tester si
target appartient au
champ [C:H]

Le code ci dessous déplace le curseur d'une colonne à droite lors
d'une sélection dans les colonnes C:H:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect([C:H], Target) Is Nothing Then Target.Offset(0,
1).Select
Application.EnableEvents = True
End Sub

Si on enlève Application.EnableEvents = False, l'événement
'SelectionChange' est activé à nouveau jusqu'à ce que le curseur
arrive en colonne I

JB
http://boisgontierjacques.free.fr/

On 13 jan, 00:27, j-pascal wrote:
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select

En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP






Avatar
j-pascal
Bonsoir,

... et y a-t-il un moyen de sauter la cellule qui dans cette plage de
colonne serait non vide ?

@+ ?

JP

Bonjour,

-Intersect(champ1,champ2,…) donne l'intersection de champ1,champ2,...
-Renvoi Nothing si l'intersection ne comporte aucune cellule.
- If Not Intersect([C:H], Target) Is Nothing permet de tester si
target appartient au
champ [C:H]

Le code ci dessous déplace le curseur d'une colonne à droite lors
d'une sélection dans les colonnes C:H:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect([C:H], Target) Is Nothing Then Target.Offset(0,
1).Select
Application.EnableEvents = True
End Sub

Si on enlève Application.EnableEvents = False, l'événement
'SelectionChange' est activé à nouveau jusqu'à ce que le curseur
arrive en colonne I

JB
http://boisgontierjacques.free.fr/

On 13 jan, 00:27, j-pascal wrote:
Bonsoir,

Serait-il possible d'avoir une petite explication sur la syntaxe de ce
code :

If Not Intersect([C:H], target) Is Nothing Then target.Offset(0,
1).Select

En particulier : "If Not Intersect([C:H], target)"

Je sais que cela permet les tabulations automatiques après saisies,
mais je ne comprends pas le mot "Intersect" (Intersection ??) et la
double négation "If Not ... is nothing" !!!

L'action commence-t-elle quand on saisit une donnée sur B ou sur C ?

Le fait que les cellules soient vides, ou pas, interfère-til sur
l'ordre des tabulations ? Sinon est-il possible de tabuler en sautant
une cellule non vide (quand elle se trouve dans la plage [C:H] (ie) ?

Merci pour vos lumières,

JP