Sous Excel 2000, en mode enregistrement de macro, après avoir créer
sur une cellule une liste de validation, j'ai obtenu le code suivant :
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="0,5;1;1,5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = _
"Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5."
.ShowInput = True
.ShowError = True
End With
Lorsque je rejoue cette macro, il semble qu'il y ait une confusion
entre le point virgule (séparateurs de valeurs de la liste)
et la virgule (séparateur des décimales).
Quelle astuce permet de résoudre ce petit problème ?
Il y a quelque chose d'intéressant dans cette proposition, qui consiste si j'ai bien compris à profiter de l'évènement "Change" de la feuille pour convertir la chaîne de caractères en valeur numérique.
Je comprends aussi qu'elle s'applique seulement à la cellule B5.
J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules chacune nommées P1, P2 et P3 par exemple.
La question devient maintenant : Comment peut on prendre en compte ce paramétrage ?
Cordialement, Patrick EVEN
"Alain CROS" a écrit dans le message de news: %
Bonjour.
Par un évènement de feuille, il semble que ça fonctionne aussi mais il faut connaître l'emplacement des 'Selection' possibles.
Sub Valid_Liste() With [B5].Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Et dans le module de feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [B5]) Is Nothing Then Exit Sub Application.EnableEvents = False [B5] = Val([B5]) Application.EnableEvents = True End Sub
Alain CROS
"anonymousA" a écrit dans le message de news: 436cd69b$0$27405$ | Bonjour, | | malgré bien des essais, phénomène qui ne m'était pas apparu jusqu'ici, | en fait en VBA , quoiqu'on fasse, lors d'une définition avec le type | xlvalidatelist, les virgules sont considérées comme des séparateurs de | la liste et les autres caractères comme du texte. Or comme Excel est | bon enfant avec les formats , si on passe des valeurs entières, il n'y a | alors aucun problème, mais si on lui passe des valeurs décimales alors | elles sont prises par Excel pour ce qu'elles sont dans le cadre de | l'écriture d'un type xlvalidatelist c.à.d du texte. | En synthèse, il apparaît que la seule solution qui puisse se présenter à | toi est celle proposée par Mich Denis. | | A+ | | | > Bonjour, | > | > J'ai aussi pensé à cette éventualité. | > Mais dans ce cas, il y a un autre effet de bord. | > La cellule dotée de cette combo-box est considérée | > comme une chaîne de caractères alors que je souhaite | > récupérer une valeur numérique. | > | > Remplacer la virgule décimale par un point décimal | > n'est donc pas tout à fait satisfaisant. | > | > Mais je ne doute pas que l'un d'entre vous saura | > m'aider à surmonter cette difficulté passagère : | > | > Comment obtenir en VBA des valeurs décimales dans une combo-box de | > validation ? | > | > Cordialement, | > | > Patrick EVEN | > "JLuc" a écrit dans le message de news: | > | > | >>*Bonjour Patrick EVEN*, | >>Et si tu remplace les virgule par des points ? | >>Ca marche mieux ou pareil ? | >> | >> | >>>Bonjour, | >>> | >>>Remplace les point-virgules par une virgule, | >>>c'est la première chose qui m'est venue à l'esprit. | >>> | >>>La mauvaise nouvelle, c'est que le contenu de la combo-box de validation | >>>contient dans ce cas 5 valeurs (0 ; 5 ; 1 ; 1 ; 5) au lieu de 3 (0,5 ; 1 | >>>; 1,5) | >>>car VBA ne peut distinguer les virgules de type séparateur de valeurs | >>>des virgules décimales. | >>> | >>>La question reste donc entière : | >>>Comment obtenir en VBA des valeurs décimales dans une combo-box de | >>>validation ? | >>> | >>>Cordialement, | >>> | >>> Patrick EVEN | >>> | >>> | >>>"michdenis" a écrit dans le message de news: | >>>uus$ | >>> | >>>>Bonjour Patrick | >>>> | >>>>Tu es en VBA | >>>>Remplace les point-virgules par une virgule dans Formula1:="0,5;1;1,5" | >>>> | >>>> | >>>>Salutations! | >>>> | >>>> | >>>>"Patrick EVEN" a écrit dans le message de news: | >>>> | >>>>Bonjour, | >>>> | >>>>Sous Excel 2000, en mode enregistrement de macro, après avoir créer | >>>>sur une cellule une liste de validation, j'ai obtenu le code suivant : | >>>> | >>>> With Selection.Validation | >>>> .Delete | >>>> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, | >>>>Operator: > | >>>>_ | >>>> xlBetween, Formula1:="0,5;1;1,5" | >>>> .IgnoreBlank = True | >>>> .InCellDropdown = True | >>>> .InputTitle = "" | >>>> .ErrorTitle = "" | >>>> .InputMessage = "" | >>>> .ErrorMessage = _ | >>>> "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." | >>>> .ShowInput = True | >>>> .ShowError = True | >>>> End With | >>>> | >>>>Lorsque je rejoue cette macro, il semble qu'il y ait une confusion | >>>>entre le point virgule (séparateurs de valeurs de la liste) | >>>>et la virgule (séparateur des décimales). | >>>> | >>>>Quelle astuce permet de résoudre ce petit problème ? | >>>> | >>>>Cordialement, | >>>> | >>>> Patrick EVEN | >>>> | >>>> | >>>> | >>>> | >> | >> | >>-- | >>JLuc | >> | >>Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et | >>astuces ! | >>http://www.excelabo.net | >>http://jacxl.free.fr/ | >>http://dj.joss.free.fr/ | >>C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS | >> | >> | > | > | >
Bonjour,
Il y a quelque chose d'intéressant dans cette proposition,
qui consiste si j'ai bien compris à profiter de l'évènement "Change"
de la feuille pour convertir la chaîne de caractères en valeur numérique.
Je comprends aussi qu'elle s'applique seulement à la cellule B5.
J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5
mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules
chacune
nommées P1, P2 et P3 par exemple.
La question devient maintenant :
Comment peut on prendre en compte ce paramétrage ?
Cordialement,
Patrick EVEN
"Alain CROS" <Personne@ICI> a écrit dans le message de news:
%23uDjtsq4FHA.1536@TK2MSFTNGP12.phx.gbl...
Bonjour.
Par un évènement de feuille, il semble que ça fonctionne aussi mais il
faut connaître l'emplacement des 'Selection' possibles.
Sub Valid_Liste()
With [B5].Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=
_
xlBetween, Formula1:="0.5,1,1.5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = _
"Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5."
.ShowInput = True
.ShowError = True
End With
End Sub
Et dans le module de feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B5]) Is Nothing Then Exit Sub
Application.EnableEvents = False
[B5] = Val([B5])
Application.EnableEvents = True
End Sub
Alain CROS
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de news:
436cd69b$0$27405$8fcfb975@news.wanadoo.fr...
| Bonjour,
|
| malgré bien des essais, phénomène qui ne m'était pas apparu jusqu'ici,
| en fait en VBA , quoiqu'on fasse, lors d'une définition avec le type
| xlvalidatelist, les virgules sont considérées comme des séparateurs de
| la liste et les autres caractères comme du texte. Or comme Excel est
| bon enfant avec les formats , si on passe des valeurs entières, il n'y a
| alors aucun problème, mais si on lui passe des valeurs décimales alors
| elles sont prises par Excel pour ce qu'elles sont dans le cadre de
| l'écriture d'un type xlvalidatelist c.à.d du texte.
| En synthèse, il apparaît que la seule solution qui puisse se présenter à
| toi est celle proposée par Mich Denis.
|
| A+
|
|
| > Bonjour,
| >
| > J'ai aussi pensé à cette éventualité.
| > Mais dans ce cas, il y a un autre effet de bord.
| > La cellule dotée de cette combo-box est considérée
| > comme une chaîne de caractères alors que je souhaite
| > récupérer une valeur numérique.
| >
| > Remplacer la virgule décimale par un point décimal
| > n'est donc pas tout à fait satisfaisant.
| >
| > Mais je ne doute pas que l'un d'entre vous saura
| > m'aider à surmonter cette difficulté passagère :
| >
| > Comment obtenir en VBA des valeurs décimales dans une combo-box de
| > validation ?
| >
| > Cordialement,
| >
| > Patrick EVEN
| > "JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de
news:
| > mn.2aad7d5bedf79b36.40692@free.fr.ns...
| >
| >>*Bonjour Patrick EVEN*,
| >>Et si tu remplace les virgule par des points ?
| >>Ca marche mieux ou pareil ?
| >>
| >>
| >>>Bonjour,
| >>>
| >>>Remplace les point-virgules par une virgule,
| >>>c'est la première chose qui m'est venue à l'esprit.
| >>>
| >>>La mauvaise nouvelle, c'est que le contenu de la combo-box de
validation
| >>>contient dans ce cas 5 valeurs (0 ; 5 ; 1 ; 1 ; 5) au lieu de 3 (0,5
; 1
| >>>; 1,5)
| >>>car VBA ne peut distinguer les virgules de type séparateur de valeurs
| >>>des virgules décimales.
| >>>
| >>>La question reste donc entière :
| >>>Comment obtenir en VBA des valeurs décimales dans une combo-box de
| >>>validation ?
| >>>
| >>>Cordialement,
| >>>
| >>> Patrick EVEN
| >>>
| >>>
| >>>"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
| >>>uus$6UX4FHA.3684@TK2MSFTNGP10.phx.gbl...
| >>>
| >>>>Bonjour Patrick
| >>>>
| >>>>Tu es en VBA
| >>>>Remplace les point-virgules par une virgule dans
Formula1:="0,5;1;1,5"
| >>>>
| >>>>
| >>>>Salutations!
| >>>>
| >>>>
| >>>>"Patrick EVEN" <peven@capgemini.fr> a écrit dans le message de news:
| >>>>eVKNLNX4FHA.3876@TK2MSFTNGP09.phx.gbl...
| >>>>Bonjour,
| >>>>
| >>>>Sous Excel 2000, en mode enregistrement de macro, après avoir créer
| >>>>sur une cellule une liste de validation, j'ai obtenu le code suivant
:
| >>>>
| >>>> With Selection.Validation
| >>>> .Delete
| >>>> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
| >>>>Operator: > | >>>>_
| >>>> xlBetween, Formula1:="0,5;1;1,5"
| >>>> .IgnoreBlank = True
| >>>> .InCellDropdown = True
| >>>> .InputTitle = ""
| >>>> .ErrorTitle = ""
| >>>> .InputMessage = ""
| >>>> .ErrorMessage = _
| >>>> "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5."
| >>>> .ShowInput = True
| >>>> .ShowError = True
| >>>> End With
| >>>>
| >>>>Lorsque je rejoue cette macro, il semble qu'il y ait une confusion
| >>>>entre le point virgule (séparateurs de valeurs de la liste)
| >>>>et la virgule (séparateur des décimales).
| >>>>
| >>>>Quelle astuce permet de résoudre ce petit problème ?
| >>>>
| >>>>Cordialement,
| >>>>
| >>>> Patrick EVEN
| >>>>
| >>>>
| >>>>
| >>>>
| >>
| >>
| >>--
| >>JLuc
| >>
| >>Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et
| >>astuces !
| >>http://www.excelabo.net
| >>http://jacxl.free.fr/
| >>http://dj.joss.free.fr/
| >>C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
| >>
| >>
| >
| >
| >
Il y a quelque chose d'intéressant dans cette proposition, qui consiste si j'ai bien compris à profiter de l'évènement "Change" de la feuille pour convertir la chaîne de caractères en valeur numérique.
Je comprends aussi qu'elle s'applique seulement à la cellule B5.
J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules chacune nommées P1, P2 et P3 par exemple.
La question devient maintenant : Comment peut on prendre en compte ce paramétrage ?
Cordialement, Patrick EVEN
"Alain CROS" a écrit dans le message de news: %
Bonjour.
Par un évènement de feuille, il semble que ça fonctionne aussi mais il faut connaître l'emplacement des 'Selection' possibles.
Sub Valid_Liste() With [B5].Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Et dans le module de feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [B5]) Is Nothing Then Exit Sub Application.EnableEvents = False [B5] = Val([B5]) Application.EnableEvents = True End Sub
Alain CROS
"anonymousA" a écrit dans le message de news: 436cd69b$0$27405$ | Bonjour, | | malgré bien des essais, phénomène qui ne m'était pas apparu jusqu'ici, | en fait en VBA , quoiqu'on fasse, lors d'une définition avec le type | xlvalidatelist, les virgules sont considérées comme des séparateurs de | la liste et les autres caractères comme du texte. Or comme Excel est | bon enfant avec les formats , si on passe des valeurs entières, il n'y a | alors aucun problème, mais si on lui passe des valeurs décimales alors | elles sont prises par Excel pour ce qu'elles sont dans le cadre de | l'écriture d'un type xlvalidatelist c.à.d du texte. | En synthèse, il apparaît que la seule solution qui puisse se présenter à | toi est celle proposée par Mich Denis. | | A+ | | | > Bonjour, | > | > J'ai aussi pensé à cette éventualité. | > Mais dans ce cas, il y a un autre effet de bord. | > La cellule dotée de cette combo-box est considérée | > comme une chaîne de caractères alors que je souhaite | > récupérer une valeur numérique. | > | > Remplacer la virgule décimale par un point décimal | > n'est donc pas tout à fait satisfaisant. | > | > Mais je ne doute pas que l'un d'entre vous saura | > m'aider à surmonter cette difficulté passagère : | > | > Comment obtenir en VBA des valeurs décimales dans une combo-box de | > validation ? | > | > Cordialement, | > | > Patrick EVEN | > "JLuc" a écrit dans le message de news: | > | > | >>*Bonjour Patrick EVEN*, | >>Et si tu remplace les virgule par des points ? | >>Ca marche mieux ou pareil ? | >> | >> | >>>Bonjour, | >>> | >>>Remplace les point-virgules par une virgule, | >>>c'est la première chose qui m'est venue à l'esprit. | >>> | >>>La mauvaise nouvelle, c'est que le contenu de la combo-box de validation | >>>contient dans ce cas 5 valeurs (0 ; 5 ; 1 ; 1 ; 5) au lieu de 3 (0,5 ; 1 | >>>; 1,5) | >>>car VBA ne peut distinguer les virgules de type séparateur de valeurs | >>>des virgules décimales. | >>> | >>>La question reste donc entière : | >>>Comment obtenir en VBA des valeurs décimales dans une combo-box de | >>>validation ? | >>> | >>>Cordialement, | >>> | >>> Patrick EVEN | >>> | >>> | >>>"michdenis" a écrit dans le message de news: | >>>uus$ | >>> | >>>>Bonjour Patrick | >>>> | >>>>Tu es en VBA | >>>>Remplace les point-virgules par une virgule dans Formula1:="0,5;1;1,5" | >>>> | >>>> | >>>>Salutations! | >>>> | >>>> | >>>>"Patrick EVEN" a écrit dans le message de news: | >>>> | >>>>Bonjour, | >>>> | >>>>Sous Excel 2000, en mode enregistrement de macro, après avoir créer | >>>>sur une cellule une liste de validation, j'ai obtenu le code suivant : | >>>> | >>>> With Selection.Validation | >>>> .Delete | >>>> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, | >>>>Operator: > | >>>>_ | >>>> xlBetween, Formula1:="0,5;1;1,5" | >>>> .IgnoreBlank = True | >>>> .InCellDropdown = True | >>>> .InputTitle = "" | >>>> .ErrorTitle = "" | >>>> .InputMessage = "" | >>>> .ErrorMessage = _ | >>>> "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." | >>>> .ShowInput = True | >>>> .ShowError = True | >>>> End With | >>>> | >>>>Lorsque je rejoue cette macro, il semble qu'il y ait une confusion | >>>>entre le point virgule (séparateurs de valeurs de la liste) | >>>>et la virgule (séparateur des décimales). | >>>> | >>>>Quelle astuce permet de résoudre ce petit problème ? | >>>> | >>>>Cordialement, | >>>> | >>>> Patrick EVEN | >>>> | >>>> | >>>> | >>>> | >> | >> | >>-- | >>JLuc | >> | >>Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et | >>astuces ! | >>http://www.excelabo.net | >>http://jacxl.free.fr/ | >>http://dj.joss.free.fr/ | >>C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS | >> | >> | > | > | >
Alain CROS
Bonjour.
P1, P2 et P3 ne sont pas autorisé comme nom de plage. Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste() If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub With ActiveCell.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub Application.EnableEvents = False Target = Val(Target) Application.EnableEvents = True End Sub
Alain CROS
"Patrick EVEN" a écrit dans le message de news: | Bonjour, | | Il y a quelque chose d'intéressant dans cette proposition, | qui consiste si j'ai bien compris à profiter de l'évènement "Change" | de la feuille pour convertir la chaîne de caractères en valeur numérique. | | Je comprends aussi qu'elle s'applique seulement à la cellule B5. | | J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 | mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules | chacune | nommées P1, P2 et P3 par exemple. | | La question devient maintenant : | Comment peut on prendre en compte ce paramétrage ? | | Cordialement, | Patrick EVEN |
Bonjour.
P1, P2 et P3 ne sont pas autorisé comme nom de plage.
Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste()
If Intersect(ActiveCell, [Plg1]) Is Nothing And _
Intersect(ActiveCell, [Plg2]) Is Nothing And _
Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub
With ActiveCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0.5,1,1.5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = _
"Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5."
.ShowInput = True
.ShowError = True
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(ActiveCell, [Plg1]) Is Nothing And _
Intersect(ActiveCell, [Plg2]) Is Nothing And _
Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = Val(Target)
Application.EnableEvents = True
End Sub
Alain CROS
"Patrick EVEN" <Patrick-EVEN@wanadoo.fr> a écrit dans le message de news: uDTj9Bt4FHA.156@TK2MSFTNGP15.phx.gbl...
| Bonjour,
|
| Il y a quelque chose d'intéressant dans cette proposition,
| qui consiste si j'ai bien compris à profiter de l'évènement "Change"
| de la feuille pour convertir la chaîne de caractères en valeur numérique.
|
| Je comprends aussi qu'elle s'applique seulement à la cellule B5.
|
| J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5
| mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules
| chacune
| nommées P1, P2 et P3 par exemple.
|
| La question devient maintenant :
| Comment peut on prendre en compte ce paramétrage ?
|
| Cordialement,
| Patrick EVEN
|
P1, P2 et P3 ne sont pas autorisé comme nom de plage. Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste() If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub With ActiveCell.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub Application.EnableEvents = False Target = Val(Target) Application.EnableEvents = True End Sub
Alain CROS
"Patrick EVEN" a écrit dans le message de news: | Bonjour, | | Il y a quelque chose d'intéressant dans cette proposition, | qui consiste si j'ai bien compris à profiter de l'évènement "Change" | de la feuille pour convertir la chaîne de caractères en valeur numérique. | | Je comprends aussi qu'elle s'applique seulement à la cellule B5. | | J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 | mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules | chacune | nommées P1, P2 et P3 par exemple. | | La question devient maintenant : | Comment peut on prendre en compte ce paramétrage ? | | Cordialement, | Patrick EVEN |
Patrick EVEN
Bonjour,
Merci encore à tous pour vos contributions. Mention spéciale pour Alain. Je vais dès demain mettre en oeuvre cette solution que je crois être un bon palliatif.
Cordialement, Patrick EVEN
"Alain CROS" a écrit dans le message de news: %
Bonjour.
P1, P2 et P3 ne sont pas autorisé comme nom de plage. Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste() If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub With ActiveCell.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub Application.EnableEvents = False Target = Val(Target) Application.EnableEvents = True End Sub
Alain CROS
"Patrick EVEN" a écrit dans le message de news:
| Bonjour, | | Il y a quelque chose d'intéressant dans cette proposition, | qui consiste si j'ai bien compris à profiter de l'évènement "Change" | de la feuille pour convertir la chaîne de caractères en valeur numérique. | | Je comprends aussi qu'elle s'applique seulement à la cellule B5. | | J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 | mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules | chacune | nommées P1, P2 et P3 par exemple. | | La question devient maintenant : | Comment peut on prendre en compte ce paramétrage ? | | Cordialement, | Patrick EVEN |
Bonjour,
Merci encore à tous pour vos contributions.
Mention spéciale pour Alain.
Je vais dès demain mettre en oeuvre cette solution
que je crois être un bon palliatif.
Cordialement,
Patrick EVEN
"Alain CROS" <Personne@ICI> a écrit dans le message de news:
%23vSH7wt4FHA.1148@tk2msftngp13.phx.gbl...
Bonjour.
P1, P2 et P3 ne sont pas autorisé comme nom de plage.
Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste()
If Intersect(ActiveCell, [Plg1]) Is Nothing And _
Intersect(ActiveCell, [Plg2]) Is Nothing And _
Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub
With ActiveCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="0.5,1,1.5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = _
"Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5."
.ShowInput = True
.ShowError = True
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(ActiveCell, [Plg1]) Is Nothing And _
Intersect(ActiveCell, [Plg2]) Is Nothing And _
Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = Val(Target)
Application.EnableEvents = True
End Sub
Alain CROS
"Patrick EVEN" <Patrick-EVEN@wanadoo.fr> a écrit dans le message de news:
uDTj9Bt4FHA.156@TK2MSFTNGP15.phx.gbl...
| Bonjour,
|
| Il y a quelque chose d'intéressant dans cette proposition,
| qui consiste si j'ai bien compris à profiter de l'évènement "Change"
| de la feuille pour convertir la chaîne de caractères en valeur
numérique.
|
| Je comprends aussi qu'elle s'applique seulement à la cellule B5.
|
| J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5
| mais sur chaque cellule appartenant à 3 plages discontinues de 90
cellules
| chacune
| nommées P1, P2 et P3 par exemple.
|
| La question devient maintenant :
| Comment peut on prendre en compte ce paramétrage ?
|
| Cordialement,
| Patrick EVEN
|
Merci encore à tous pour vos contributions. Mention spéciale pour Alain. Je vais dès demain mettre en oeuvre cette solution que je crois être un bon palliatif.
Cordialement, Patrick EVEN
"Alain CROS" a écrit dans le message de news: %
Bonjour.
P1, P2 et P3 ne sont pas autorisé comme nom de plage. Donc avec Plg1, Plg2 et Plg3 :
Sub Valid_Liste() If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub With ActiveCell.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="0.5,1,1.5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = _ "Seules les valeurs suivantes sont valides : 0,5 - 1 et 1,5." .ShowInput = True .ShowError = True End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(ActiveCell, [Plg1]) Is Nothing And _ Intersect(ActiveCell, [Plg2]) Is Nothing And _ Intersect(ActiveCell, [Plg3]) Is Nothing Then Exit Sub Application.EnableEvents = False Target = Val(Target) Application.EnableEvents = True End Sub
Alain CROS
"Patrick EVEN" a écrit dans le message de news:
| Bonjour, | | Il y a quelque chose d'intéressant dans cette proposition, | qui consiste si j'ai bien compris à profiter de l'évènement "Change" | de la feuille pour convertir la chaîne de caractères en valeur numérique. | | Je comprends aussi qu'elle s'applique seulement à la cellule B5. | | J'aimerais pouvoir appliquer cette solution non pas sur la cellule B5 | mais sur chaque cellule appartenant à 3 plages discontinues de 90 cellules | chacune | nommées P1, P2 et P3 par exemple. | | La question devient maintenant : | Comment peut on prendre en compte ce paramétrage ? | | Cordialement, | Patrick EVEN |