IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Problème de format de nombre à virgule dans une liste de validation [XL-2007]


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut Problème de format de nombre à virgule dans une liste de validation
    Bonjour

    J'ai un document Excel qui gère des listes de validation dynamique et ce grace à un petit code VBA.

    Tout marche bien, sauf quand les listes de validation sont des nombres à virgule.

    En effet, la propriété Formula1 ne comprend pas le format "Français" des nombres (qui est celui qui est pris si je tape à la main) et demande donc le format "Anglais".

    Dans l'absolu, cela fonctionne bien. J'ai en final dans ma liste de validation les bons chiffres mais comme les , sont des ., Excel ne les reconnait pas comme chiffre et sa plante mes calculs.

    Je m'explique :

    En mode manuel, ma liste de validation serait : 1 ; 1,5 ; 1,6

    Dans le code VBA, je dois mettre : 1 , 1.5 , 1.6

    Mais la valeur 1.6 n'est pas un chiffre pour Excel.

    Je suis donc complètement planté. Existe t'il un moyen dans Excel pour qu'il prenne en charge correctement les valeurs de validation?
    Connaissez vous une astuce pour transformer le 1.6 au format Français.

    D'avance merci de votre aide. Mon outil doit être en prod lundi et je suis complètement planté.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour, bonjour,

    là c'est le forum des formules dans les feuilles de calculs, pour du code c'est dans Macros et VBA Excel

    Ensuite sans poster le code entre balises via l'icône # conformément aux règles du forum …

    Utiliser le Générateur de macros, le code est livré sur un plateau !
    En référençant une liste de cellules contenant les valeurs autorisées, aucun souci …
    Et pas de souci non plus avec les points comme séparateur décimal vu que le VBA est nativement en anglais !

    Sans compter l'explication de l'aide intégrée VBA concernant Validation et son paramètre Formula1

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    En effet, c'est plus un souci de code VBA mais mon code fonctionne et le souci est l'utilisation ensuite dans mon classeur.

    Pour ce qui est de l'enregistrement via l'outil de macro pas de souci mais le résultat ne fonctionne pas car il prend :
    #xlBetween, Formula1:="1;1,2;1,3"#
    et pour que celà fonctionne (cad avoir la bonne liste) il faut :
    #xlBetween, Formula1:="1,1.2,1.3"#
    Et là maintenant j'ai la bonne liste de validation.

    Mais si dans mon classeur, je saisi : 1,2 => Erreur

    Donc oui en natif VBA/Excel est anglais ce qui nous impose de traduire les informations dans ce format mais ensuite il ne sait pas s'adapter au format local.

    D'où ma question et mes recherches en cours.

    La solution est elle VBA? Un paramètrage Excel qqconque ? Ou tout simplement, une nouvelle fonction qui traduit la valeur saisie avant mes formules de calcul?

    J'aimerai avoir, si ca existe, une solution simple

    A+

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Aucun souci de mon côté mais là je n'ai pas de version 2007 sous le coude, je testerai ce week-end …

    Mais j'ai des codes tournant sur 2007 version française avec des nombres décimaux en dur sans problème côté Excel …

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si tu te sers de ces nombres uniquement pour construire des formules, rien ne t'empêche de les utiliser en mode texte.
    Tu peux changer ton nombre en texte et substituer une virgule au point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REPLACE( STR( mavaleur ), "." , "," )
    Si ça te semble trop compliqué de le mettre systématiquement pour toutes les valeurs, tu peux te fabriquer une petite fonction VBA (avec un nom court pour en faciliter l'usage) qui fait ça.
    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function VtoP(Var as long) as String
       VtoP = REPLACE( STR( mavaleur ), "." , "," )
    End Function

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    J'ai reproduit son problème, voir son code dans le forum VBA …

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème de format de nombre à virgule dans une liste de validation
    Par basto dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/05/2014, 15h03
  2. [XL-2003] Problème de format de cellules imposés dans une procédure évènementielle
    Par Joloma dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2011, 18h41
  3. Réponses: 2
    Dernier message: 14/11/2008, 18h31
  4. problème de zero apres la virgule dans une table
    Par mosca_coroneja dans le forum Outils
    Réponses: 11
    Dernier message: 08/04/2006, 21h57
  5. [FLASH MX] Choisir un nombre aléatoire dans une liste
    Par grenatdu55 dans le forum Flash
    Réponses: 4
    Dernier message: 23/04/2005, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo