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

Macros et VBA Excel Discussion :

Utilisation de NumberFormat pour %


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut Utilisation de NumberFormat pour %
    Bonjour à tous,

    Je rencontre depuis hier un petit souci avec le format en pourcentage lors de l'utilisation de NumberFormat.

    De façon assez classique j'utilise la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultSht.Range(Chr(67 + i) + "9").NumberFormat = "0.0%"
    En effet je veux mettre le nombre de ma cellule en pourcentage avec un seul chiffre après la virgule.

    Lorsque je fais tourner la macro sur mon poste (Excel 2016) j'ai au début le nombre suivant 0,58 , par exemple, et après exécution de la macro, cela se transforme en 58,0%.

    Jusque là tout va bien.

    Par contre sur le poste d'un de mes collègues, lorsque qu'on fait tourner la même macro, 0,58 se transforme en 0.6%.
    On remarque donc que le chiffre n'est pas transformé en % ainsi que l’apparition du "." au lieu de la virgule.
    A savoir, mon collègue utilise Excel 365.

    Quelqu'un aurait-il une idée du pourquoi du comment?

    En espérant avoir été assez clair, n'hésite pas à me le dire si ce n'est pas le cas.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Votre collègue n'a probablement pas les mêmes paramètres régionaux pour ce qui est du séparateur décimal ("," ou ".") ainsi que le séparateur des milliers. A vérifier via un code simple dans la fenêtre immédiate (débogage) en tapant "?1/2"; le résultat sera 0.5 ou 0,5 en fonction du séparateur prédéfini.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour compléter la réponse de Zekraoui_Jakani, que je salue, je te conseille la lecture du Tutoriel de Jean-Philippe André Excel et les paramètres régionaux : Application.International
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut
    Bonjour,

    Merci pour votre retour.

    J'avais justement vérifié cette histoire de région.

    Dans le doute, j'ai fais ce que vous m'avez dit de faire et le résultat est bien 0,5

    EDIT : Merci Philippe, je vais aller lire, mais je doute que ce soit mon problème.

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par Westood5 Voir le message
    De façon assez classique j'utilise la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultSht.Range(Chr(67 + i) + "9").NumberFormat = "0.0%"
    Ca n'a rien à voir avec la demande, mais ton Range pourrait s'écrire plus simplement ainsi : Cells(9, 3 + i).

    D'autant plus que ta méthode ne fonctionnera plus si "i" dépasse 23 alors qu'il n'y a aucun problème en utilisant Cells.

    D'une manière générale, il est préférable d'utiliser Cells (cellule) pour une cellule unique et Range (zone) pour un ensemble de cellules.
    Pour les variables, ces deux objets sont de type Range (Cells n'existe pas en tant que type de variable).

  6. #6
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut
    Bonjour,

    Merci Menhir. En effet, j'aurai dû utiliser Cells, car en plus j'ai justement fait toute un gestion pour gérer le fait que i dépasse 23 et pour que cela puisse continuer de marcher. Je me suis pris la tête pour rien...

    Encore merci.

    Par contre concernant mon souci, ce n'est pas un problème de région. Nous avons les mêmes paramètres avec mon collègue, sauf la version d'office.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu peux donner le code qui entoure la ligne que tu as donnée au #1? Le 0.58, il est présent avant l'exécution de toute la macro ou bien est-ce la macro qui place la valeur dans la cellule?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut
    Salut Pierre,

    Le 0,58 (avec la virgule) est le résultat d'une formule directement mise par la macro. Que je souhaite ensuite mettre en pourcentage.

    Sur mon poste c'est bien 58% qui se met, celui de mon collègue 0.6% (donc même pas converti en pourcentage).

    Ci-dessous le code qu'il y a juste avant et qui fait le calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    F = "=IF(" & Chr(67) & LTrim(Str(FirstLine - 1)) & "<>0,(" & Chr(68) & LTrim(Str(FirstLine - 1)) & "/" & Chr(67) & LTrim(Str(FirstLine - 1)) & ")-1,""-"")"
    resultSht.Range(Chr(67 + i) + "9").Formula = F
    resultSht.Range(Chr(67 + i) + "9").NumberFormat = "0.0%"
    Merci

Discussions similaires

  1. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58
  2. Utilisation de CASCADE pour mise à jour
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/08/2004, 08h49
  3. utilisation du mid pour tester le début d'un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 09/07/2004, 13h10
  4. Réponses: 36
    Dernier message: 13/05/2004, 18h22

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