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 :

Format numérique


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut Format numérique
    Bonjour,

    J'ai un tableau Excel, comprenant une colonne avec des nombres entiers, cette colonne est au format numérique, sans décimal avec séparateur de milliers.

    Dans une autre colonne, je met des formule tout simple du style SOMME(D1;D2), et il me met 0 au lieu de faire la somme.

    Apparamment le problème viens du séparateur de millier, car quand je supprime le blanc à la main dans les cellule concernés, la somme se fait bien.

    Y à t-il un moyen de régler ce problème ? Car ma colonne de nombresest rempli par une macro qui met systématiquement le séparateur de milliers.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce n'est pas un problème d'affichage, car le calcul se fera tout seul. C'est que la macro convertit le chiffre en texte.

    Essayes cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(CNUM(D1);CNUM(D2))
    Starec

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Merci de ton aide mais ca ne marche toujours pas il met met !VALEUR! dans la cellule.

    Quand je supprime à la main le blanc qui sépare les millier dans D1 et D2 la somme se refait bien.

    Mes cellule D1 et D2 restent bien au format numérique, dans la macro je l'ai même rajouté en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets(1).Cells(lig, 4).NumberFormat = "0"
    Worksheets(1).Cells(lig, 4) = valeur

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    C'est bizarre ton truc, je n'arrive pas à produire un comportement similaire.

    Qu'est-ce que valeur ?


    Starec

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    C'est une valeur numérique lue dans un fichier, des nombres entiers à 5 ou 6 chiffres.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Fais une conversion en numérique avant de les mettre dans les cellules pour voir, et non avec le formatage de la cellule.

    Starec

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    J'ai bien essayé de supprimer le séparateur de millier, mais la macro le remet, ce qui veux donc dire qu'que la macro considère bien la donnée en numérique.

    Je veux bien reforcer le format dans la macro, mais je connais pas l'instruction approprié.

    De plus je comprend pas pourquoi le SOMME, ne prend pas en compte les numériques avec séparateur de milliers.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Vraiment bizarre, quand je coche et décoche le séparateur de millier avec le générateur de macro il me génère ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'séparateur de milliers coché
    Selection.NumberFormat = "#,##0"
     
    'séparateur de millier décoché
    Selection.NumberFormat = "0"
    C'est bien le décoché que j'ai mis dans la macro et il me met quand même un séparateur, après le passage de la macro, quand je vais foir le format de la cellule le séparateur est décoché ??????

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Quel est le séparateur décimal dans le panneau de configuration des paramètres régionaux de windows.

    Starec

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Heuu tu voulais parler du séparateur de millier ? je n'ai pas de problème avec les décimales, je n'en ai pas (sinon c'est virgule).

    Pour le séparateur de milliers, j'ai bien un espace dans Symbole de groupement de chiffres des paramètres régionnaux

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut format numérique
    Bonjour,

    J'ai une macro qui lis un fichier, pour chaque enregistrement, je récupère un compteur statistique par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stat = Mid(enr, 22, 10)
    J'ai donc une variable numérique sur 10 positions.
    Puis je renseigne une colonne que je met au format numérique par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets(1).Cells(lig, 4).NumberFormat = "0"
    Worksheets(1).Cells(lig, 4) = valeur
    Mon problème est que la colonne se renseigne bien, mais avec un séparateur de millier (espace) alors quand je coche et décoche le séparateur de millier avec le générateur de macro il me génère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'séparateur de milliers coché
    Selection.NumberFormat = "#,##0"
     
    'séparateur de millier décoché
    Selection.NumberFormat = "0"
    J'ai donc bien choisit décoché et pourtant il me met un espace en générateur de millier, par contre si après l'exécution de la macro je vais voir le format des cellules, il est également décoché, c'est à n'y rien comprendre.

    En fait, le séparateur de millier me gène pas, j'aurais même préfére, mais ca me génère un autre problème sur une simple fonction Excel SOMME(D1;D2) qui ne marche pas quand il y a un espace, second problème qui me parais bizarre.

    Si quelqu'un à une explication merci d'avance

  12. #12
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Pourquoi tu veux mettre la cellule dans un certain format ? pourquoi tu met pas la colonne directement dans le format que tu veux ?

    Si, quand tu met ta valeur tu met un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(lig,4).value = valeur
    ça sera bon je pense
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    C'est ce que j'avais au début, mais il me met systématiquement un espace pour séparer les milliers, même si la colonne est au bon format, ce qui provoque un problème avec la fonction SOMME, donc j'ai essayé de le forcer, sans succès

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Si tu mets
    SOMME(D1;D2)
    ça ne peut pas fonctionner... Et si tu metsça ne fonctionne toujours pas ?
    Si c'est une erreur dans ton premier post, tu dis... avant qu'on cherche plus loin
    A+

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Non c'est pas une erreur, les deux points c'est pour un interval, et moi je veux la somme de plusieurs cellule spécifique du style SOMME (D1;D3;D10) je crois que le points virgule est la bonne syntaxe pour faire ca.

    Même avec un interval ca marche pas, c'est le séparateur de millier (espace) qui pose problème.

    Et j'arrive pas à l'enlever par la macro

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    D'où viennent tes données ?
    Selon leur provenance, le séparateur peut être un espace. Tu peux le tester en mettant tes données en mode standard et si le séparateur persiste, remplace " " (l'espace) par rien dans toute ta colonne.
    Si ça fonctionne, tu as ta réponse.
    Tu dis.

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    Oui, quand je supprime à la main l'espace, le SOMME marche bien, le problème est que ces données viennent d'un fichier via une macro, et que j'arrive pas à les mettre sans le séparateur, relis le post plut haut tu as les instruction de ma macro

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Les séparateurs de milliers ne sont pas des espaces, tu dois supprimer ces derniers lors de la lecture des données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = Replace(LaDonnéeLue, " ", "")
    Si tu nous passes le code qui te permet de lire ces données, on pourra te l'adapter
    A+

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    mais mes données n'ont pas de séparateur de milliers dans le fichier que je lis, ce sont des compteurs de statistiques comprenant 10 chiffre sans aucun format.

    C'est quand je les met dans la colonne qu'il me met un séparateur de millier (espace). En plus quand je vais voir le format par le menu excel, après le passage de la macro, le séparateur de millier n'est pas coché

    Mon script
    'tant que non fin de fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Do Until EOF(1)
        'lecture d'une ligne dans le fichier (enregistrement)
        Line Input #1, enr
        'récupération du code statistique dans le fichier
        stat = Mid(enr, 22, 10)
        'récupération de la valeur correspondante au code statistique
        valeur = Format(Mid(enr, 102, 9), "#,0")
        'recherche du code statistique dans la feuille
        For lig = 2 To Worksheets(1).UsedRange.Rows.Count
        'si le code statistique correspond au code statistique concerné
        If Worksheets(1).Cells(lig, 3) = stat Then
            'affectation de la valeur correspondante
            Worksheets(1).Cells(lig, 4).NumberFormat = "0"
            Worksheets(1).Cells(lig, 4) = valeur
            Exit For
        End If
    Next
    dans le fichier valeur est de la forme 0000123456

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est toujours mieux avec le code (!)
    Remplace
    Worksheets(1).Cells(lig, 4) = valeur
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           Worksheets(1).Cells(lig, 4).Value = valeur
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           Worksheets(1).Cells(lig, 4).value = Val(valeur)
    Avec cette ligne,
    valeur = Format(Mid(enr, 102, 9), "#,0")
    tu places un string dans ta cellule, non une valeur.
    Tu dis
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Conversion format numérique/caractère
    Par Laverdure_mt dans le forum Access
    Réponses: 1
    Dernier message: 16/08/2006, 14h49
  2. Réponses: 4
    Dernier message: 09/06/2006, 09h33
  3. Format numérique
    Par viscere dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 03/05/2006, 14h45
  4. Format numérique
    Par _developpeur_ dans le forum Access
    Réponses: 7
    Dernier message: 04/01/2006, 11h19
  5. Réponses: 2
    Dernier message: 21/06/2005, 16h37

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