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 :

Problème formatage décimales VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut Problème formatage décimales VBA
    Bonjour le Forum,
    J'affiche dans 3 textbox des données avec 2, 3 et 4 décimales avec le code ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TxtPoids.Text = Format(vCellule.Offset(0, 6), "#0.000") 'Poids
    TxtCout.Text = Format(vCellule.Offset(0, 8), "#0.0000") 'Coût
    TxtTemps.Text = Format(vCellule.Offset(0, 9), "#0.00") 'temps
    Après l'enregistrement de la saisie d'un article avec les données 3.567 - 28.3200 - 12.50, le premier affichage est correct.
    Quand je modifie un élément quelconque (mais autre) du même article qui utilise exactement les mêmes procédures enregistrer / chargefiche ci dessous, les données en cause sont 3567.000 - 283200.0000 - 12.50.
    Et ainsi de suite si je renouvelle 3567000.000 - 2832000000.0000 - 12.50.
    C'est une heureuse façon de s'enrichir virtuellement mais ça commence à me ruiner la santé, d'autant qu'il n'y a pas de problèmes tant que je reste sur 2 décimales.
    Je précise avoir essayé la virgule, les # en place des 0 et autres choses sans résultats.

    Merci de votre aide.
    Cordialement

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Sub ChargeFiche()
     
    '  Alimentation de la fiche Article
     
        'recherche de l'enregistrement
        Set vCellule = vWstArticles.Cells(2, 1)
            Do While vClé <> vCellule
                Set vCellule = vCellule.Offset(1, 0)
            Loop
     
        ' si modif charger le n° d'enregistrement
        vNumLigne = vCellule.Row
     
        ' charge les controles
        CbxFamille.Text = vCellule.Offset(0, 1) 'famille
        TxtEtat = vCellule.Offset(0, 2) 'État(Article supprimé)
        CbxLibelléInterne.Text = vCellule.Offset(0, 3) 'libellé interne
        CbxFormat.Text = vCellule.Offset(0, 4) 'Format
        CbxGrammage.Text = Format(vCellule.Offset(0, 5), "###0") 'grammage
        TxtPoids.Text = Format(vCellule.Offset(0, 6), "#0.000") 'Poids
        CbxFournisseur.Text = vCellule.Offset(0, 7) 'Fournisseur
        TxtCout.Text = Format(vCellule.Offset(0, 8), "#0.0000") 'Coût
        TxtTemps.Text = Format(vCellule.Offset(0, 9), "#0.00") 'temps
        CbxLibelléClient.Text = vCellule.Offset(0, 10) 'libellé client
        TxtCommentaires.Text = vCellule.Offset(0, 11) 'commentaires
     
    End Sub
     
    Sub Enregistrer()
    ' Enregistrement d'un nouvel Article ou d'une modification
    '-------------------------------------------------
     
    'Contrôle des saisies
    vMessage = ""
        If CbxFamille.Text = "" Then vMessage = vMessage & "Famille, "
        If CbxLibelléInterne.Text = "" Then vMessage = vMessage & "Libellé interne, "
        If CbxLibelléClient.Text = "" Then vMessage = vMessage & "Libellé client, "
        If vMessage <> "" Then
            vMessage = "Veuillez saisir : " & vMessage
            Alerte (vMessage): Exit Sub
        End If
        'Incrémentation Code et adresse de l'enregistrement (si modif ou suppr, vNumLigne est chargé dans LvwArticles_ItemClick() )
        If vCommande = "Nouveau" Then
            vClé = Application.WorksheetFunction.Max(Range("A:A")) + 1
            vNumLigne = vWstArticles.Range("A65536").End(xlUp).Row + 1
        End If
     
    'Enregistrement dans la table
    Set vCellule = vWstArticles.Cells(vNumLigne, 1)
     
        vCellule.Offset(0, 0) = vClé 'VClé est chargé CmdNouveau,Cmdnouveau2 ou LvwArticles_ItemClick
        vCellule.Offset(0, 1) = CbxFamille.Text
        vCellule.Offset(0, 2) = TxtEtat.Text
        vCellule.Offset(0, 3) = CbxLibelléInterne.Text
        vCellule.Offset(0, 4) = CbxFormat.Text
        vCellule.Offset(0, 5) = Format(CbxGrammage.Text, "###0")
        vCellule.Offset(0, 6) = Format(TxtPoids.Text, "#0.000")
        vCellule.Offset(0, 7) = CbxFournisseur.Text
        vCellule.Offset(0, 8) = Format(TxtCout.Text, "#0.0000")
        vCellule.Offset(0, 9) = Format(TxtTemps.Text, "#0.00")
        vCellule.Offset(0, 10) = CbxLibelléClient.Text
        vCellule.Offset(0, 11) = TxtCommentaires.Text
     
        ThisWorkbook.Save
     
        'Mise à jour des combobox, listview
        LvwArticles.Sorted = False
        MajListingArticles
        ComboFill
     
        'Conserver les données du dernier Article saisi
        ChargeFiche
        vMessage = ""
     
        'MAJ des boutons de commande
        vCommande = "Enregistrer"
        Commande vCmdN, vCmdN2, vCmdM, vCmdE, vCmdA
     
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour danisoaz,

    Fais un essai avec la propriété NumberFormat.

    J'ai testé le code suivant qui fonctionne.
    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
    Private Sub UserForm_Initialize()
     
        Range("A1") = 1256.638
        Range("B1") = 1256.638
        Range("C1") = 1256.638
        Range("D1") = 1256.638
     
        Range("A1").NumberFormat = "# ##0" 'grammage
        Range("B1").NumberFormat = "# ##0.000" 'Poids
        Range("C1").NumberFormat = "# ##0.0000" 'Coût
        Range("D1").NumberFormat = "#0.00" 'temps
     
        TextBox1.Text = Format(Range("A1"), "# ##0") 'grammage
        TextBox2.Text = Format(Range("B1"), "# ##0.000") 'Poids
        TextBox3.Text = Format(Range("C1"), "# ##0.0000") 'Coût
        TextBox4.Text = Format(Range("D1"), "# ##0.00") 'temps
     
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour,

    Merci pour ton aide. Hélàs ça ne fonctionne pas mieux. Peut-être ais-je mal posé le problème :
    Soit un article à créer dont le coût est 28.72
    1) je crée cet article : saisie + procédures Enregistrer + ChargeFiche qui m'affiche ce nouvel enregistrement = affichage 28.7200
    2.a) je rappelle ce même article : sélection + charge fiche = affichage 28.7200
    2.b) je modifie une de ses données, commentaires par exemple, + procédure Enregister + ChargeFiche = affichage 287200.0000
    3) si je renouvelle l'opération 2 j'obtiens 2872000000.0000) and so on...

    Bon ben tout ce blabla pour rien ON VIENT DE TROUVER (Merci Sylvain): Panneau de config, paramètres régionaux, symbole décimal "." au lieu de ",".

    Reste à vérifier que ce paramétrage ne cause pas de souci à l'utilisateur dans ses autres applis... A moins que l'on puisse intervenir dessus au lancement et la fermeture de cette appli, et ça je ne sais pas faire non plus !

    Bon dimanche

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

Discussions similaires

  1. [XL-2010] Problème séparateur décimal SQL->VBA Excel
    Par pitipilot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2014, 15h54
  2. [FLASH MX] Problème de décimale avec euro
    Par yoda_style dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2005, 04h14
  3. Problème formatage dans balise title / alt
    Par jflebegue dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 09/12/2004, 15h18
  4. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  5. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24

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