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 :

excel vba comment 2 chiffres après la virgule


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 345
    Points : 135
    Points
    135
    Par défaut excel vba comment 2 chiffres après la virgule
    bonjour,
    je voudrai faire afficher les 2 chiffres a près la virgule. comment faire.

    exemple: dans tableau1 la somme xxx,70 alors que le résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme1 = Application.WorksheetFunction.Sum(Tableau1)
    me donne xxx,00 j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme1 = Application.WorksheetFunction.Sum(Tableau1).numberformat = "0.00"
    merci.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Dim Tableau1, tableau2, tableau3bis, tableau4 As Range 'Variable
    Dim Somme1 As Single
    Dim Somme2 As Single
    Dim Somme3 As Single
    Dim Somme4 As Single
    Dim TotSol As Single
    Dim sold1 As Single
    Dim sold2 As Single
     
     
    derniereLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
    derniereLigne = Range("C" & Rows.Count).End(xlUp).Row + 1
    derniereLigne = Range("D" & Rows.Count).End(xlUp).Row + 1
    derniereLigne = Range("E" & Rows.Count).End(xlUp).Row + 1
     
    Set Tableau1 = Range("B:B")
    Set tableau2 = Range("C:C")
    Set tableau3bis = Range("D:D")
    Set tableau4 = Range("E:E")
     
    Set tableaux1 = Range("f:f")
    Set tableaux2 = Range("g:g")
     
     
    Somme1 = Application.WorksheetFunction.Sum(Tableau1)
     
    Somme2 = Application.WorksheetFunction.Sum(tableau2)
    Somme3 = Application.WorksheetFunction.Sum(tableau3bis)
    Somme4 = Application.WorksheetFunction.Sum(tableau4)
    sold1 = Application.WorksheetFunction.Sum(tableaux1)
    sold2 = Application.WorksheetFunction.Sum(tableaux2)
     
     
     ActiveCell.Offset(0, 0).FormulaR1C1 = _
     Somme1
     ActiveCell.Offset(0, 1).FormulaR1C1 = _
     Somme2
     ActiveCell.Offset(0, 2).FormulaR1C1 = _
     Somme3
     ActiveCell.Offset(0, 3).FormulaR1C1 = _
     Somme4
     
     ActiveCell.Offset(0, 4).FormulaR1C1 = _
     sold1
     
     ActiveCell.Offset(0, 5).FormulaR1C1 = _
     sold2
     '----------------------------
     ActiveCell.Offset(1, 1).FormulaR1C1 = _
     Somme1 - Somme2
     ActiveCell.Offset(1, 0).Select
     
     ActiveCell.Offset(0, 3).FormulaR1C1 = _
     Somme4 - Somme3
     ActiveCell.Offset(1, 1).Select
     
    '------------------------------------
     
    ActiveCell.Offset(0, 4).FormulaR1C1 = _
    sold2 - sold1
    ActiveCell.Offset(1, 2).Select

  2. #2
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour Nouveau17,

    essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .NumberFormat = "#,##0.00"
    qui devrait fonctionner
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  3. #3
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 361
    Points : 643
    Points
    643
    Par défaut
    Bonjour,
    Moi je me pose la question, pourquoi utiliser la propriété FormulaR1C1, et pas tous simplement .Value.
    Tu ne renseignes pas une formule, mais bien une valeur dans les cellules non ?
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 119
    Points : 1 643
    Points
    1 643
    Par défaut
    Salut,

    Ce sont les cellules qu'il faut formater, pas les valeurs, sauf si tu aimes les sales surprises.

    De plus:
    ActiveCell.Offset(0, 0).FormulaR1C1 = Somme1
    De quelle cellule on parles ici ? (Celui qui répond A1 mange ses chaussures en dessert).
    Prend l'habitude de référencer explicitement les objets que tu manipules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Rng As Range
    Set Rng = Range("C4")    '// Ko, Implicitement ActiveWorkbook.ActiveSheet.range("C4")
     
    Dim Ws As Excel.Worksheet
    Set Ws = ThisWorkbook.Worksheets(1)    '// Ok, Explicite
     
    Dim Rng As Excel.Range
    Set Rng = Ws.Range("B10")    '// Ok, Explicite

  5. #5
    Membre habitué
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 345
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Salut,

    Ce sont les cellules qu'il faut formater, pas les valeurs, sauf si tu aimes les sales surprises.

    De plus:
    ActiveCell.Offset(0, 0).FormulaR1C1 = Somme1
    De quelle cellule on parles ici ? (Celui qui répond A1 mange ses chaussures en dessert).
    Prend l'habitude de référencer explicitement les objets que tu manipules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Rng As Range
    Set Rng = Range("C4")    '// Ko, Implicitement ActiveWorkbook.ActiveSheet.range("C4")
     
    Dim Ws As Excel.Worksheet
    Set Ws = ThisWorkbook.Worksheets(1)    '// Ok, Explicite
     
    Dim Rng As Excel.Range
    Set Rng = Ws.Range("B10")    '// Ok, Explicite
    Somme1 c'est la colonne b:b nommé tableau1.
    Je pense avoir résolu le problème j'ai remplacé as single par as variant et sa fonctionne.
    Par contre j'aurais besoins de mettre en couleur toutes les sommes 1,2,3,4,5,6 en rouge avec la police jaune en gras.
    Merci à tous.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai remplacé as single par as variant
    single = "simple précision" soit un réel stocké sur 4 octet sLe stockage est "flottant" c'est à dire qu'il va privilégier l'ordre de grandeur sur les décimales : si ton nombre est un peu grand, tu va perdre les deniers chiffres.
    Pour avoir plus de précision, il faut passer en double, qui va utiliser 8 octets et garde r18 chiffres significatifs (ou environ, à vérifier)

    Il y a le même piège sur les entiers avec integer et long. Comme on n'est plus à faire la chasse à l'octet, autant utiliser systématiquement double et long.

    L'utilisation du type variant n'est pas à conseiller pour des variables "normales" : ça revient à laisser à VBA la responsabilité de choisir à la volée le type de la variable, ça peut réserver des surprises.

  7. #7
    Membre habitué
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 345
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai remplacé as single par as variant
    single = "simple précision" soit un réel stocké sur 4 octet sLe stockage est "flottant" c'est à dire qu'il va privilégier l'ordre de grandeur sur les décimales : si ton nombre est un peu grand, tu va perdre les deniers chiffres.
    Pour avoir plus de précision, il faut passer en double, qui va utiliser 8 octets et garde r18 chiffres significatifs (ou environ, à vérifier)

    Il y a le même piège sur les entiers avec integer et long. Comme on n'est plus à faire la chasse à l'octet, autant utiliser systématiquement double et long.

    L'utilisation du type variant n'est pas à conseiller pour des variables "normales" : ça revient à laisser à VBA la responsabilité de choisir à la volée le type de la variable, ça peut réserver des surprises.
    Les chiffres sont un peu grand ils sont saisies avec deux chiffres après la virgules pas plus. je vais essayé avec double et en verra.
    Question: la somme manuelle à d faut c'est double ou bien autres.!??? Merci

  8. #8
    Membre habitué
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 345
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j'ai remplacé as single par as variant
    single = "simple précision" soit un réel stocké sur 4 octet sLe stockage est "flottant" c'est à dire qu'il va privilégier l'ordre de grandeur sur les décimales : si ton nombre est un peu grand, tu va perdre les deniers chiffres.
    Pour avoir plus de précision, il faut passer en double, qui va utiliser 8 octets et garde r18 chiffres significatifs (ou environ, à vérifier)

    Il y a le même piège sur les entiers avec integer et long. Comme on n'est plus à faire la chasse à l'octet, autant utiliser systématiquement double et long.

    L'utilisation du type variant n'est pas à conseiller pour des variables "normales" : ça revient à laisser à VBA la responsabilité de choisir à la volée le type de la variable, ça peut réserver des surprises.
    rebonjour,

    effectivement avec as double ca fonctionne parfaitement encore merci.

    cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/12/2019, 18h27
  2. Réponses: 2
    Dernier message: 31/03/2008, 11h27
  3. Comment limiter le nombre de chiffre après la virgule ?
    Par Hoopsy dans le forum C++Builder
    Réponses: 15
    Dernier message: 06/07/2007, 16h12
  4. Comment fixer le nombre de chiffre après la virgule d'un flottant
    Par moon93 dans le forum Général Python
    Réponses: 1
    Dernier message: 15/06/2007, 16h49
  5. Comment imposer un nombre de chiffre après la virgule
    Par Yagami_Raito dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 10h24

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