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 :

total dans une textbox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut total dans une textbox
    bonjour à tous

    j'ai fait un formulaire avec un principe de article en menu déroulant/prix unitaire/quantité/total

    problème : je n'arrive pas à obtenir un chiffre à virgul
    le prix unitaire est récupéré dans une liste selon le choix de la référence

    voici le code:

    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
     
    Option Explicit
    Private Sub UserForm_Initialize()
    ' activez les sources de menu déroulant
    c12ref1.RowSource = "tarif!a1:n" & Range("tarif!a65536").End(xlUp).Row
    End Sub
                             'EVENEMENT POUR CHAQUE SELECTION DE REF
    Private Sub c12ref1_Change()
    Dim rech1 As String, c12prix1 As Double
    Sheets("tarif").Activate
    rech1 = c12ref1.Value
    Cells.Find(What:=rech1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
    c12prix1 = ActiveCell.Value
    c12p1.Value = c12prix1
    End Sub
                              ' evenement sur changement quantité
    Private Sub q1_Change()
    t1 = Round(Val(q1) * Val(c12p1), 2)
    End Sub
    donc si le prix unitaire est 6.20 et que je prenne 1 en quantité
    le résultat dans la box t1 sera 6
    pour une quantité de 2, il sera de 12

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Je ne vois pas le dimensionnement de tes variables 't1' et 'q1' à mon avis en les dimensionnant en Single, Double ou Decimal (voir en Variant) ça doit le faire.
    A+

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    t1 et q1 sont des box, je doit faire un dim.. as.. sur le nom d'une box ?

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    t1 et q1 sont des box, je doit faire un dim.. as.. sur le nom d'une box ?
    Je te rassure non.
    Par contre a mon avis cela viens d'un problème de séparateur de décimal. 6.5 n'est pas forcément la même chose que 6,5.

    Essaye d'afficher le contenu de q1 et c12p1.
    avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t1 = Round(Val(q1) * Val(c12p1), 2)
    Si tu as une , il va te falloir la remplacer par un .

    Je pense que cela viens de là, par contre je ne peux pas t'en dire plus j'utilise dans mes option windows le . comme séparateur de décimale

    Edit
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t1 = Round(Val(replace(q1,",",".")) * Val(replace(c12p1,",",".")), 2)

  5. #5
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Désolé, j'ai pas été clair, c'est plutot la valeur de ces box qu'il faut dimensionner.
    Si la solution de Krovax (Salut) ne fonctionne pas tu peux essayer en ajoutant une variable (dimensionnée en Double) qui récupère la valeur de tes box.
    Voici ce que j'ai obtenu en faisant un test (concluant )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub q1_Change()
     
    Dim q1 As Object, C12p1 As Object
    Dim t1 As Double, q1Val As Double, C12p1Val As Double
     
    Set q1 = UserForm1.q1
    Set C12p1 = UserForm1.C12p1
    q1Val = Val(q1)
    C12p1Val = Val(C12p1)
     
    t1 = Round(q1Val * C12p1Val, 2)
    End Sub
    A+

  6. #6
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    merci à vous deux

    krovax, tu as raison le problème viens de la virgule
    ça fonctionne

    par contre quelle option utilises-tu pour ne pas rencontrer ce problème

  7. #7
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Le meilleur moyen est dans les option excel tu choisis dans l'onglet international séparateur de décimal le .
    Tu peux également dans le panneaux de configuration windows dans les paramètre régionaux (je crois) faire la même chose.

    Le problème est que si ton code fonctionne bien chez toi il risque de ne pas tourner sur un ordinateur ou l'utilisateur n'a pas fait cette manip. Le plus simple est de remplacer les , par des . quand tu récupère la valeur d'une box ou directement quand tu entres la valeur dans une box

  8. #8
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    ok, merci
    bonne info

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

Discussions similaires

  1. [XL-2010] Total dans une textbox dans un module de classe
    Par crissud dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/12/2013, 13h17
  2. Affichage dans une textbox
    Par philo71 dans le forum MFC
    Réponses: 25
    Dernier message: 30/01/2006, 09h34
  3. [Javascript] appui sur la touche entrée dans une textbox
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 11h19
  4. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39
  5. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 10h12

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