J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1,
ça marche très bien mais lorsque je remplace (Target = Range("A10")) par
(Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la
feuille.
Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsNumeric(Target) = False Then
If (Target = Range("A10")) Then
MsgBox "Valeur numérique obligatoire"
Target.Clear
Target.Select
End If
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour Jean-Pierre Jean-Pierre a écrit :
Bonjour,
J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1, ça marche très bien mais lorsque je remplace (Target = Range("A10")) par (Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la feuille. Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If IsNumeric(Target) = False Then If (Target = Range("A10")) Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A10:B20")) Is Nothing Then If IsNumeric(Target) = False Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
-- Cordialement,
Jacques.
Bonjour Jean-Pierre
Jean-Pierre a écrit :
Bonjour,
J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1,
ça marche très bien mais lorsque je remplace (Target = Range("A10")) par
(Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la
feuille.
Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsNumeric(Target) = False Then
If (Target = Range("A10")) Then
MsgBox "Valeur numérique obligatoire"
Target.Clear
Target.Select
End If
End If
End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
If IsNumeric(Target) = False Then
MsgBox "Valeur numérique obligatoire"
Target.Clear
Target.Select
End If
End If
End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1, ça marche très bien mais lorsque je remplace (Target = Range("A10")) par (Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la feuille. Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If IsNumeric(Target) = False Then If (Target = Range("A10")) Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A10:B20")) Is Nothing Then If IsNumeric(Target) = False Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
-- Cordialement,
Jacques.
Jean-Pierre
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Merci JP
"Jacques93" a écrit dans le message de news:
Bonjour Jean-Pierre Jean-Pierre a écrit :
Bonjour,
J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1, ça marche très bien mais lorsque je remplace (Target = Range("A10")) par (Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la feuille. Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If IsNumeric(Target) = False Then If (Target = Range("A10")) Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A10:B20")) Is Nothing Then If IsNumeric(Target) = False Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
-- Cordialement,
Jacques.
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne :
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Merci
JP
"Jacques93" <jacques.le-gocNO@PUBwouanadoo.fr> a écrit dans le message de
news: OsDzvtigFHA.3256@TK2MSFTNGP12.phx.gbl...
Bonjour Jean-Pierre
Jean-Pierre a écrit :
Bonjour,
J'ai écris cette procédure pour obliger la saisie de valeur numérique en
A1, ça marche très bien mais lorsque je remplace (Target = Range("A10"))
par (Target = Range("A10 : B20")) cela interdit la saisie de texte dans
toute la feuille.
Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsNumeric(Target) = False Then
If (Target = Range("A10")) Then
MsgBox "Valeur numérique obligatoire"
Target.Clear
Target.Select
End If
End If
End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
If IsNumeric(Target) = False Then
MsgBox "Valeur numérique obligatoire"
Target.Clear
Target.Select
End If
End If
End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Merci JP
"Jacques93" a écrit dans le message de news:
Bonjour Jean-Pierre Jean-Pierre a écrit :
Bonjour,
J'ai écris cette procédure pour obliger la saisie de valeur numérique en A1, ça marche très bien mais lorsque je remplace (Target = Range("A10")) par (Target = Range("A10 : B20")) cela interdit la saisie de texte dans toute la feuille. Pouvez-vous me dire pourquoi ?
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If IsNumeric(Target) = False Then If (Target = Range("A10")) Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
Merci d'avance.
JP
Essaie :
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A10:B20")) Is Nothing Then If IsNumeric(Target) = False Then MsgBox "Valeur numérique obligatoire" Target.Clear Target.Select End If End If End Sub
PS : le forum approprié serait plus microsoft.public.fr.excel
-- Cordialement,
Jacques.
Jacques93
Bonsoir Jean-Pierre, Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
Bonsoir Jean-Pierre,
Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne :
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection
rectangulaire des deux plages (en gros, les cellules qui sont communes
aux eux plages).
Par ex:
-----
! !
! Rg1 !
! !
! !
-----
-----
! !
! Rg2 !
! !
! !
-----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai.
Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc
Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche
(cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux
manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai
pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide
Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
Patrice Henrio
effectivement la bonne utilisation des booléens permet une programmation plus lisible te surtout transportable.
If <prédicat> then nécessite l'évaluation du prédicat qui doit renvoyer Vrai ou faux
Donc If booléen=true then nécessite l'évaluation de booléen puis l'évaluation de booléen=true, alors qu'on a exactement le même résultat avec l'évaluation directe de booléen. De même avec Not, false .... cela reviendrait à écrire par exemple
If ((x=1)= true) then
au lieu de
If (x=1) then
... "Jacques93" a écrit dans le message de news:
Bonsoir Jean-Pierre, Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
effectivement la bonne utilisation des booléens permet une programmation
plus lisible te surtout transportable.
If <prédicat> then nécessite l'évaluation du prédicat qui doit renvoyer Vrai
ou faux
Donc If booléen=true then
nécessite l'évaluation de booléen puis l'évaluation de booléen=true, alors
qu'on a exactement le même résultat avec l'évaluation directe de booléen.
De même avec Not, false ....
cela reviendrait à écrire par exemple
If ((x=1)= true) then
au lieu de
If (x=1) then
...
"Jacques93" <jacques.le-gocNO@PUBwouanadoo.fr> a écrit dans le message de
news: uJ2EPWmgFHA.3780@TK2MSFTNGP10.phx.gbl...
Bonsoir Jean-Pierre,
Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne :
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection
rectangulaire des deux plages (en gros, les cellules qui sont communes aux
eux plages).
Par ex:
-----
! !
! Rg1 !
! !
! !
-----
-----
! !
! Rg2 !
! !
! !
-----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai.
Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc
Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche
(cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière
de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas)
trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide
Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et
VB6.
effectivement la bonne utilisation des booléens permet une programmation plus lisible te surtout transportable.
If <prédicat> then nécessite l'évaluation du prédicat qui doit renvoyer Vrai ou faux
Donc If booléen=true then nécessite l'évaluation de booléen puis l'évaluation de booléen=true, alors qu'on a exactement le même résultat avec l'évaluation directe de booléen. De même avec Not, false .... cela reviendrait à écrire par exemple
If ((x=1)= true) then
au lieu de
If (x=1) then
... "Jacques93" a écrit dans le message de news:
Bonsoir Jean-Pierre, Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
Jean-Pierre
Bonsoir,
OK merci de ces explications très clair.
JP
"Jacques93" a écrit dans le message de news:
Bonsoir Jean-Pierre, Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
Bonsoir,
OK merci de ces explications très clair.
JP
"Jacques93" <jacques.le-gocNO@PUBwouanadoo.fr> a écrit dans le message de
news: uJ2EPWmgFHA.3780@TK2MSFTNGP10.phx.gbl...
Bonsoir Jean-Pierre,
Jean-Pierre a écrit :
Bonjour,
OK merci ça marche mais puis-je avoir des infos sur cette ligne :
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection
rectangulaire des deux plages (en gros, les cellules qui sont communes aux
eux plages).
Par ex:
-----
! !
! Rg1 !
! !
! !
-----
-----
! !
! Rg2 !
! !
! !
-----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai.
Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc
Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche
(cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière
de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas)
trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide
Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et
VB6.
OK merci ça marche mais puis-je avoir des infos sur cette ligne : If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Intersect (Rg1, Rg2) renvoie un objet range représentant l'intersection rectangulaire des deux plages (en gros, les cellules qui sont communes aux eux plages).
Par ex:
----- ! ! ! Rg1 ! ! ! ! ! -----
----- ! ! ! Rg2 ! ! ! ! ! -----
Pas d'intersection, donc Intersect(Rg1, Rg2) Is Nothing est vrai. Par contre :
Il y a intersection, vu que Rg2 est inclus dans Rg1, donc Intersect (Rg1, Rg2) Is Nothing est faux, c'est le cas que tu cherche (cellule modifiée dans la plage ("A10:B20"). Et il y au moins deux manière de l'écrire :
If Intersect(Target, Range("A10:B20")) Is Nothing = False Then
ou
If Not Intersect(Target, Range("A10:B20")) Is Nothing Then
Ce qui revient au même. Mais certains "puristes" (que je ne nommerai pas) trouvent que la seconde syntaxe est plus élégante ;-)
J'espère avoir été clair. Tu peux aussi jeter un coup d'oeil sur l'aide Excel concernat Intersect. La syntaxe quand à elle est commune à VBA et VB6.
-- Cordialement,
Jacques.
Zoury
Bonjour Jean-Pierre ! :O)
If IsNumeric(Target) = False Then
Juste une p'tite mise en garde concernant IsNumeric() http://groups.google.com/groups?selm=uvk9PbzHFHA.580%40TK2MSFTNGP15.phx.gbl
-- Cordialement Yanick MVP pour Visual Basic
Bonjour Jean-Pierre ! :O)
If IsNumeric(Target) = False Then
Juste une p'tite mise en garde concernant IsNumeric()
http://groups.google.com/groups?selm=uvk9PbzHFHA.580%40TK2MSFTNGP15.phx.gbl