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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #18374121
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
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


j-pascal
Le #18381761
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
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




Modeste
Le #18384301
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)
michdenis
Le #18384871
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"
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
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




j-pascal
Le #18384841
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" 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
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






j-pascal
Le #18398151
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
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




Publicité
Poster une réponse
Anonyme