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 :

probleme décimale après procédure checkbox [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut probleme décimale après procédure checkbox
    Bonjour les amis
    un nouveau gros problème pour moi mais sans doute petit pour vous
    je saisie mais devis à partir d'un userform et chaque fois que je saisie une nouvelle ligne cela rajoute une ligne sur ma feuille excel (jusque la pas de soucis)
    après j'ai une checkbox qui ce mais sur le coté de ma ligne userform des que je valide la dernière.

    les checkbox qui sont la pour me permette de faire un sous total des lignes précédentes, au besoin, avant de continu la suite, mon code que voici s'agrandi au fur à mesure. ce que j'ai fait pour l'instant fonctionne un peu près mais quand je valide mon code checkbox j'ai 5 chiffres après la virgule (1er problème) et s'achant que j'ai 18 checkbox y a t'il pas moyen de facilité mon code sinon je suis obligé de le faire manuellement par rapport à chaque ligne . en vous remerciant

    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
    Private Sub o1_Click()
    taxe = Worksheets("Ndev").Range("B4").Value
    tva = [SUM(O19:O20)] * taxe
    Rep = MsgBox("Souhaitez-vous créer un sous-total pour la ligne ?", vbYesNo + vbQuestion + vbDefaultButton2, "Confirmation")
             If Rep = vbYes Then
        Call Ajout_ligne
    Worksheets("Ndev").Range("G20").Value = "Sous-total :" & " " & [SUM(O19:O20)] + tva & " " & "€ TTC"
            Range("G20").Select
            With Selection
            .HorizontalAlignment = xlRight
            End With
        l2.Visible = True
        l2 = Range("G20")
            Else: Rep = vbNo
    Exit Sub
    End If
    End Sub
    Pièce jointe 246005

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    on voit bien que ton taux de tva est un nombre à 5 chiffres après virgules sur la copie écran de ton Userform
    Forcément, quand tu calcules ta variable tva ... elle aura au minimum cette précision si le chiffre ne tombe pas juste


    Tu dois formater ou arrondir ou tronquer ton chiffre avant de l'écrire dans la textbox ... c'est à dire sur ta ligne de code 7 .. ou le faire sur ta variable tva sur la ligne 3

  3. #3
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    merci de votre réponse mais j'ai pas compris, ce qui se passe c'est que ça copie sur la feuille et ensuite c'est retranscrit dans le textbox, formater ou arrondir je ne sait pas du tout comment faire. un peu perdu là , le textbox c'est une recopie de la feuille copie dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    taxe = Worksheets("Ndev").Range("B4").Value
    tva = [SUM(O19:O20)] * taxe
    Pièce jointe 246023

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Avant de savoir comment faire, il faut savoir quoi faire
    Désires-tu gommer l'affichage 5 décimales des textbox, ou avoir des "vrais" chiffres à deux décimales dans ta feuille ?

    Dans la majeure partie des cas, la fonction Format() peut s'avérer utile
    http://jpcheck.developpez.com/tutori...rmat-dans-vba/

  5. #5
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    en faite je sais pas trop, le format de ma feuille est en format nombre avec 2 décimal, les textbox c'est pas un problème
    avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t1.Value = Format(t1.Value, "#,##0.00")
    mais au final il faut que sur ma feuille excel ce soit à 2 décimals
    mon taux de tva est calculé par rapport à la cellulle b4 Pièce jointe 246029 donc les textbox n'ont rien à voir,et la plage de cellule est reprise directement sur la feuille aussi

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Il faut agir sur le premier transfert de la valeur calculée pour neutraliser de facto les effets de cascades.

    Si c'est bien la ligne 7 de ton tout premier code, va voir l'aide au sujet de Application.WorksheetFunction.Round pour arrondir ça


  7. #7
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    oui j'ai essayé autrement et même problème, le problème est là mais je c'est pas plus, merci

    il y a des formules dans la plage de cellule, le problème ne viendrait pas de là ??

    il y a du mieux mais ça arrondi 71.5 au lieu de 71.05 comme modèle plus haut, une autre idée ???

    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
    Private Sub o1_Click()
    taxe = Worksheets("Ndev").Range("B4").Value
    tvaa = (Round(Application.WorksheetFunction.Sum(Range("O19:O20")))) * taxe
    Rep = MsgBox("Souhaitez-vous créer un sous-total pour la ligne ?", vbYesNo + vbQuestion + vbDefaultButton2, "Confirmation")
             If Rep = vbYes Then
        Call Ajout_ligne
    Worksheets("Ndev").Range("G20").Value = "Sous-total :" & " " & (Round(Application.WorksheetFunction.Sum(Range("O19:O20")))) + tvaa & " " & "€ TTC"
            Range("G20").Select
            With Selection
            .HorizontalAlignment = xlRight
            End With
        l2.Visible = True
        l2 = Range("G20")
            Else: Rep = vbNo
    Exit Sub
    End If
    End Sub

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

Discussions similaires

  1. [Nombre]formater le nombre de décimal après une virgule.
    Par PascalCmoa dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 09/03/2007, 10h40
  2. Problème X après compilation noyau 2.6.13.2
    Par nicodeme dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 08/10/2005, 14h41
  3. Probleme : comment mettre un checkbox innaccessible ?
    Par angelevil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/02/2005, 19h13
  4. Probleme avec les procédures d'opengl dans Vb 6
    Par fun31 dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/12/2004, 07h57
  5. SOS recup champ après préocédure stockée
    Par seb92 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/11/2004, 07h47

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