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

Problème sur liste de validation lors de la duplication de la feuille

15 réponses
Avatar
François
(Re-)Bonjour à tous,

Autre petit problème que je rencontre :
Lorsque je duplique par une macro une feuille (protégée) qui contient une
cellule non protégée avec une Validation/Liste et pour seules valeurs 0,3 et
0,55 ce qui donne -> 0,3;0,55 comme sélection, la liste de validation alors
dupliquée devient alors -> 0;3;0;55
Si j'enlève la protection de la feuille avant la duplication par macro, cela
ne change rien au problème !

S'agit-il d'un bog d'Excel 2000 ? Ou y-a-t-il une parade ?

Merci à tous.

François

10 réponses

1 2
Avatar
MichDenis
Si tu fais ta copie par VBA,
tu dois te rappeler que le séparateur décimale est le point et non la virgule
et que le séparateur d'arguments est la virgule et non le point-virgule.

Excel se charge de faire la correspondance dans ta feuille de calcul
en tenant compte de tes paramètres !


"François" a écrit dans le message de news:

(Re-)Bonjour à tous,

Autre petit problème que je rencontre :
Lorsque je duplique par une macro une feuille (protégée) qui contient une
cellule non protégée avec une Validation/Liste et pour seules valeurs 0,3 et
0,55 ce qui donne -> 0,3;0,55 comme sélection, la liste de validation alors
dupliquée devient alors -> 0;3;0;55
Si j'enlève la protection de la feuille avant la duplication par macro, cela
ne change rien au problème !

S'agit-il d'un bog d'Excel 2000 ? Ou y-a-t-il une parade ?

Merci à tous.

François
Avatar
MichDenis
(Il manquait juste un petit bout de phrase....

Si tu fais ta copie par VBA,
tu dois te rappeler que le séparateur décimale est le point et non la virgule
et que le séparateur d'arguments est la virgule et non le point-virgule lors
que tu écris ton code dans l'éditeur de code.

Excel se charge de faire la correspondance dans ta feuille de calcul
en tenant compte de tes paramètres !
Avatar
François
Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François
Avatar
François
La validation de la cellule à problème n'est pas faite par VBA mais
directement par Données/Validation...
seule la duplication est faîte par VBA ;

Voici le fichier : http://cjoint.com/?beseQgFSvi

sur la feuille "Frais", j'ai mis en vert (AD15) où la validation qui
fonctionne bien (entiers) et en orange (AD16) celle à problème (décimales)

François

"MichDenis" a écrit dans le message de news:
%
(Il manquait juste un petit bout de phrase....

Si tu fais ta copie par VBA,
tu dois te rappeler que le séparateur décimale est le point et non la
virgule
et que le séparateur d'arguments est la virgule et non le point-virgule
lors
que tu écris ton code dans l'éditeur de code.

Excel se charge de faire la correspondance dans ta feuille de calcul
en tenant compte de tes paramètres !






Avatar
MichDenis
quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François
Avatar
François
Mille excuses,

je ne croyais pas être à ce pont imprécis et abuser.
Je préfère retirer mais question.

François

"MichDenis" a écrit dans le message de news:

quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la
remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème
par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François





Avatar
Misange
Bonsoir,

Prends pas la mouche, Denis est parfois un peu ... vif dans ses
réactions, mais sur le fond, il souligne un point clef :
tu envoies un fichier complet pour demander de l'aide sur un point
précis. L'expérience montre que le fait d'essayer de reproduire sur un
nouveau classeur juste le bout de machin qui coince permet bien souvent
au questionneur de débroussailler le problème sinon de le résoudre.
Ensuite la classeur que tu envoies est protégé. OK, sans mot de passe
mais c'est quand même un peu agaçant de devoir déprotéger un truc pour
aider le demandeur.
Ensuite il y a effectivement pas mal de macros, dans des modules différents.
On veut bien t'aider mais il faut aussi macher au maximum le travail à
celui qui est prêt à le faire. Sincèrement dans 90% des cas, quand il y
a un classeur joint, FAUTE DE TEMPS, je ne regarde pas la question posée
pour les raisons justement exposées ici...
Juste comme ça : chez moi le séparateur décimal c'est le point et ta
liste orange c'est une , ce qui me fait supposer que tes données sont
considérées comme du texte et non pas comme des nombres...
Bon courage :-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Mille excuses,

je ne croyais pas être à ce pont imprécis et abuser.
Je préfère retirer mais question.

François

"MichDenis" a écrit dans le message de news:

quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la
remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème
par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François









Avatar
MichDenis
Pour ceux que la chose intéresse autre que François puisqu'il
a retiré sa question ...

Le test a été fait sous Excel 2003 donc ce bug existe depuis longtemps !
Que font (Qu'ont fait) les MVP sur ce coup ???? Hein ???

;-))

Si tu utilises un séparateur décimale autre que le point
(la virgule par exemple) dans ta feuille de calcul, Excel
ne transforme pas le point en virgule et tu obtiens un "nombre"
avec le mauvais séparateur décimale qui est alors vu comme
du texte dans la liste de validation et ceci est un "BUG" d'excel.

Dans cette ligne de code :
******************************
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0.22,25.36"
******************************
Excel transforme la virgule en Point-Virgule (séparateur d'éléments)
dans la liste mais oublie de transformer le point
des nombres en virgule -> ce qui cause le BUG
comme il le devrait ...

Comme alternative, tu peux utiliser la méthode Copy de l'objet Range
cette méthode va reproduire tout y compris la liste de validation et le format
de cellule....
Tu peux aussi utiliser le copier-collage spécial Validation pour ce faire








"François" a écrit dans le message de news:

Mille excuses,

je ne croyais pas être à ce pont imprécis et abuser.
Je préfère retirer mais question.

François

"MichDenis" a écrit dans le message de news:

quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la
remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème
par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François





Avatar
MichDenis
Et si cela peut aider, si tu mets ta liste dans une plage de cellules
tu pourras utiliser ceci :

A ) si ta plage de cellules contenant ta liste est dans la même feuille que
ta liste de validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$1:$A$3"

B ) si ta plage de cellules contenant ta liste est sur une autre feuille,
tu lui donnes un nom (insertion / nom / défini / LaListe
LaListe faisant référence à la plage de cellules)
Et tu peux utiliser ceci dans ton code :
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=laliste"

N'empêche que le Bug est bien présent, si tu veux définir la liste en dure
dans ton code... comme expliquer dans le message précédent.





"MichDenis" a écrit dans le message de news:

Pour ceux que la chose intéresse autre que François puisqu'il
a retiré sa question ...

Le test a été fait sous Excel 2003 donc ce bug existe depuis longtemps !
Que font (Qu'ont fait) les MVP sur ce coup ???? Hein ???

;-))

Si tu utilises un séparateur décimale autre que le point
(la virgule par exemple) dans ta feuille de calcul, Excel
ne transforme pas le point en virgule et tu obtiens un "nombre"
avec le mauvais séparateur décimale qui est alors vu comme
du texte dans la liste de validation et ceci est un "BUG" d'excel.

Dans cette ligne de code :
******************************
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0.22,25.36"
******************************
Excel transforme la virgule en Point-Virgule (séparateur d'éléments)
dans la liste mais oublie de transformer le point
des nombres en virgule -> ce qui cause le BUG
comme il le devrait ...

Comme alternative, tu peux utiliser la méthode Copy de l'objet Range
cette méthode va reproduire tout y compris la liste de validation et le format
de cellule....
Tu peux aussi utiliser le copier-collage spécial Validation pour ce faire








"François" a écrit dans le message de news:

Mille excuses,

je ne croyais pas être à ce pont imprécis et abuser.
Je préfère retirer mais question.

François

"MichDenis" a écrit dans le message de news:

quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la
remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème
par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François





Avatar
Misange
je vois que ta bouderie a duré super longtemps Denis :-)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Et si cela peut aider, si tu mets ta liste dans une plage de cellules
tu pourras utiliser ceci :

A ) si ta plage de cellules contenant ta liste est dans la même feuille que
ta liste de validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$1:$A$3"

B ) si ta plage de cellules contenant ta liste est sur une autre feuille,
tu lui donnes un nom (insertion / nom / défini / LaListe
LaListe faisant référence à la plage de cellules)
Et tu peux utiliser ceci dans ton code :
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=laliste"

N'empêche que le Bug est bien présent, si tu veux définir la liste en dure
dans ton code... comme expliquer dans le message précédent.





"MichDenis" a écrit dans le message de news:

Pour ceux que la chose intéresse autre que François puisqu'il
a retiré sa question ...

Le test a été fait sous Excel 2003 donc ce bug existe depuis longtemps !
Que font (Qu'ont fait) les MVP sur ce coup ???? Hein ???

;-))

Si tu utilises un séparateur décimale autre que le point
(la virgule par exemple) dans ta feuille de calcul, Excel
ne transforme pas le point en virgule et tu obtiens un "nombre"
avec le mauvais séparateur décimale qui est alors vu comme
du texte dans la liste de validation et ceci est un "BUG" d'excel.

Dans cette ligne de code :
******************************
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0.22,25.36"
******************************
Excel transforme la virgule en Point-Virgule (séparateur d'éléments)
dans la liste mais oublie de transformer le point
des nombres en virgule -> ce qui cause le BUG
comme il le devrait ...

Comme alternative, tu peux utiliser la méthode Copy de l'objet Range
cette méthode va reproduire tout y compris la liste de validation et le format
de cellule....
Tu peux aussi utiliser le copier-collage spécial Validation pour ce faire








"François" a écrit dans le message de news:

Mille excuses,

je ne croyais pas être à ce pont imprécis et abuser.
Je préfère retirer mais question.

François

"MichDenis" a écrit dans le message de news:

quand on veut avoir une réponse précise, il faut demander
une question précise et donner précisément les informations
requises.

Désoler mais je ne vais pas fouiller tout ton code pour savoir
où la macro que tu utilises ? Non plus, faire des efforts pour
savoir dans quelles cellules tes listes de validation sont placées !

Ou bedon tu précises ou bedon tu t'organises avec ton problème



"François" a écrit dans le message de news:

Rebonjour Michdenis,

Je fais bien la duplication par VBA.
J'ai changé la validation de ma cellule avant duplication pour la
remplacer
par :
0.3,0.55
Si la validation de la cellule sur la feuille dupliquée apparaît bien avec
le ";" à la place de la ","
le "." n'a pas été remplacé par une "," décimale !

Par ailleurs, j'ai d'autres validations de suite de chiffres entiers
naturels (Liste / 1;2;3;4;5;6) où le ";" est automatiquement "gardé" en";"
sur la feuille dupliquée ; Curieux que le ";" soit traité sans problème
par
VBA pour les nombres entiers et pas pour les décimaux ?

Qu'en penser ?

Merci à toi

François











1 2