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 :

réaliser encaissement userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut réaliser encaissement userform
    bonjour,
    comme je n'arrive pas à envoyer mon modèle en userform car beaucoup trop lourd, j'ai effectué sur excel un modèle de userform que je souhaiterais obtenir si c'est possible bien entendu car cela fait un petit moment que je suis bloquée.
    Merci pour vos réponses
    Fichiers attachés Fichiers attachés

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Avec combien de sucre ton café pendant que l'on fait ton boulot?

    Tu aurais plus de chance d'avoir une réponse si tu essayé d'expliquer ce que tu arrive a faire et ce qui te bloque (un point après l'autre).
    On résous un problème puis on passe au suivant.

    Il y a aussi des tutos qui explique comment utiliser les userform et comment utiliser les contrôles.

    C'est un forum d'entraide pas de clampin qui font ton boulot a l'oeil parce que tu as la flemme d'apprendre

    Les tutos en question
    http://excel.developpez.com/cours/?page=prog#userform
    Lis les deux premier

    Pour afficher en textebox2 le contenue de la textbox1 fois 0.30 ba la validation de la 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TextBox1_Change()
    if isnumeric(TextBox1) then
    textbox2=textbox1*0.3
    elseif textbox1=""  then
    textbox2=""
    else 
    textbox1=""
    msgbox "Veuiller saisir un nombre"
    end if
    End Sub

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    que veux-tu dire par beaucoup trop lourd ?
    Un userform avec les quelques contrôles que tu veux ne prend pas tant de place que ça.
    Fait ton design et le code que tu connait qui va avec et reposte ton classeur.
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    la difficulté que je rencontre c'est faire mon montant total car quand je lui demande de me faire l'addition du total noir et blanc et couleur il m'affiche :
    exemple : 0,20,0,9

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Et si tu nous montré ton code (en utilisant les balise code)
    Je suis sur que l'on pourrais t'aider
    Je pense que le problème viens du fait que tu ne déclare pas tes variable du coup le + devient de la concaténation de caractère. Tu tape , qlors que vba utilise le . pour les décimale

    solution (enfin une solution la déclaration propre des variable reste utile surtout quand on débute)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "," Then KeyAscii = Asc(".")
    End Sub
    Créer une version pour chaque textebox appelé a recevoir un nombre décimal

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    voici un bout de mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Private Sub nb_Change()
    txtmontant.Value = nb.Value * prix.Value
    End Sub
    Private Sub txtprix_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "," Then KeyAscii = Asc(".")
    End Sub
    Private Sub txtprix_Change()
    If IsNumeric(txtprix) Then
    totnb = txtprix * 0.1
    ElseIf txtprix = "" Then
    totnb = ""
    Else
    txtprix = ""
    MsgBox "Veuiller saisir un nombre"
    End If
    End Sub
    Private Sub Textnombre_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "," Then KeyAscii = Asc(".")
    End Sub
    Private Sub txtnombre_change()
    If IsNumeric(txtnombre) Then
    Totcouleur = txtnombre * 0.3
    ElseIf txtnombre = "" Then
    Totcouleur = ""
    Else
    txtnombre = ""
    MsgBox "Veuiller saisir un nombre"
    End If
    End Sub
     
    Private Sub txtmontant_Change()
    txtmontant.Value = Format(txtmontant, "0,00")
    End Sub
     
    Private Sub cbpaiement_Change()
    txtmontant = totnb + Totcouleur
    End Sub

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    dans ton textmontant_change tu met toi meme la ,
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub txtmontant_Change()
    txtmontant.Value = Format(txtmontant, "0.00")
    End Sub
    Mais cela pose problème de metytre le format a ta place je le virerai tout simplement

    Pour le reste je ne vais pas tout tester essaye de nous dire exactement ce qui ne va pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Par défaut
    que je mette un format ou non ca ne marche pas je montre avec un imp écran.
    Images attachées Images attachées  

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    A tout hasard, essayez ce code modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub cbpaiement_Change()
    txtmontant = CDbl(totnb) + CDbl(Totcouleur)
    End Sub
    Cordialement.

    PMO
    Patrick Morange

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour tous,
    N'ayant pas ton userform je ne me retrouve pas dans ton code.
    Aussi j'ai fait un autre userform avec plus ou moins tes critères

    Remarque:
    Tu met toute les actions dans les _change, ce qui provoque un appel redondant dans tour tes texrbox à chaque frappe au clavier.

    Patrick (bonjour) mettre en double ne modifie pas le statut des textbox qui reste en string ce qui donne une concaténation à la place d'une addition.

    A+
    Fichiers attachés Fichiers attachés

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Patrick*(bonjour) mettre en double ne modifie pas le statut des textbox qui reste en string ce qui donne une concaténation à la place d'une addition.

    C'est FAUX. En voici la démonstration.

    1) créez un UserForm (UserForm1)
    2) ajoutez-y 2 TextBox (TextBox1 et TextBox2) et 2 Label (Label1 et Label2)
    3) copiez le code suivant dans la fenêtre de code du UserForm
    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
     
    Private Sub UserForm_Initialize()
    Dim A As String
    Dim B As Variant
    A = "12.9"
    B = "2.5"
    Me.Caption = "Résultat de A+B (12.9+2.5)"
    Label1.Caption = "Sans cast A + B"
    Label2.Caption = "Avec cast CDbl(A) + CDbl(B)"
    TextBox1 = A + B
    TextBox2 = CDbl(A) + CDbl(B)
    '--- Inscription en B1 et B2 de la feuille active ---
    [b1] = TextBox1
    [b2] = CDbl(TextBox2)
    End Sub
    4) lancez le UserForm

    On obtient une concaténation SANS le cast et le résultat d'une opération arithmétique AVEC le cast.

    Cordialement.

    PMO
    Patrick Morange

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par PMO2017 Voir le message
    Bonjour,




    C'est FAUX. En voici la démonstration.

    1) créez un UserForm (UserForm1)
    2) ajoutez-y 2 TextBox (TextBox1 et TextBox2) et 2 Label (Label1 et Label2)
    3) copiez le code suivant dans la fenêtre de code du UserForm
    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
     
    Private Sub UserForm_Initialize()
    Dim A As String
    Dim B As Variant
    A = "12.9"
    B = "2.5"
    Me.Caption = "Résultat de A+B (12.9+2.5)"
    Label1.Caption = "Sans cast A + B"
    Label2.Caption = "Avec cast CDbl(A) + CDbl(B)"
    TextBox1 = A + B
    TextBox2 = CDbl(A) + CDbl(B)
    '--- Inscription en B1 et B2 de la feuille active ---
    [b1] = TextBox1
    [b2] = CDbl(TextBox2)
    End Sub
    4) lancez le UserForm

    On obtient une concaténation SANS le cast et le résultat d'une opération arithmétique AVEC le cast.

    Cordialement.

    PMO
    Patrick Morange

    C'est VRAI. En voici la démonstration.
    Tu adapte les circonstances à tes désirs... Ca marche peut-être avec des variables mais pas avec des textbox.

    Sur un UserForm, deux textBox, deux label, un bouton
    dans l'événement du bouton..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
        Label1.Caption = CStr(TextBox1) + CStr(TextBox2)
        Label2.Caption = Val(TextBox1) + Val(TextBox2)
    End Sub
    entrer 12.9 dans l'un et 2.5 dans l'autre et cliquer Le bouton !!
    vous pouvez aussi essayer 12,9 et 2,5 c'est idem.
    A+
    Edit:
    Au fait, j'ai tester aussi avec des variables et le résultat est identique..
    Plus simple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub TesterCdbl()
    Dim A, B, C, D
        A = "12.9"
        B = "2.5"
        C = CStr(A) + CStr(B)
        D = Val(A) + Val(B)
        MsgBox C & Chr(13) & D
    End Sub

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Rappel de votre assertion
    Patrick (bonjour) mettre en double ne modifie pas le statut des textbox qui reste en string ce qui donne une concaténation à la place d'une addition.
    Je reviens sur votre assertion.
    Il s'agissait de démontrer l'usage de CDbl (conversion en type Double) sur les termes d'une expression pour que le résultat s'affiche
    comme résultat d'une opération arithmétique et non comme une concaténation dans une variable objet de type TextBox.

    Je réitère le propos de mon message précédent : c'est FAUX

    Pour que vous en soyez convaincu, remplacez dans votre propre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub CommandButton1_Click()
        Label1.Caption = CStr(TextBox1) + CStr(TextBox2)
        Label2.Caption = Val(TextBox1) + Val(TextBox2)
    End Sub
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub CommandButton1_Click()
        Label1.Caption = Format(CDbl(TextBox1) + CDbl(TextBox2), "# ##0.00 €")
        Label2.Caption = CDbl(TextBox1) + CDbl(TextBox2)
    End Sub
    Entrez 12.9 dans l'une des TextBox et 2.5 dans l'autre et cliquer sur le bouton (soit la même démarche que la vôtre)
    Vous pourrez voir s'afficher, dans les Label, 15.40 € ou 15.4 selon le format indiqué dans le code.
    On obtient bien la somme des 2 termes (12.9 + 2.5) et non une concaténation comme vous l'affirmez.

    Cordialement.

    PMO
    Patrick Morange

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Ne vous disputez pas pour rien ...

    Je crois simplement qu'il a échappé que le séparateur décimal utilisé (voir l'image jointe par le demandeur) est une virgule et non un point....

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bizarre, bizarre bizarre...
    Images attachées Images attachées  

  16. #16
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bon...

    1) je n'ai (bien évidemment) ouvert aucun fichier joint de type .xls ....
    2) j'ai par contre bien regardé l'image que guizmotte88 à jointe à son message n° 8 (on y voit desz virgules et non des points)

  17. #17
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par PMO2017 Voir le message
    Bonjour,

    A tout hasard, essayez ce code modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub cbpaiement_Change()
        txtmontant = CDbl(totnb) + CDbl(Totcouleur)
    End Sub
    Cordialement.

    PMO
    Patrick Morange
    Bonjour Ucfoutu,
    la polémique n'est pas sur le point ou la virgule, ce sujet ayant été débatu, non, il est sur le poste que PMO à mis et auquel je précisais que Cdbl() ne transformait pas un texte en nombre, mais apprement PMO veux absolument avoir raison et emploi toutes sorte d'artifice pour essayer d'avoir raison.
    En fait ça fonctionne avec une variable avec virgule genre a = "12,5" pas avec un point.
    Mais la question était d'aditionner des textbox et ça ne fonctionne pas, que ce soit avec point ou virgule. Si ont fait une addition ça fait une concaténation et si ont fait une multiplication ça plante.
    En fait ont a tout les deux raison, ça marche pas avec des textBox et éventuellement ça PEU fonctionner avec Cdbl() pour des variables, à condition de traiter le point/virgule)
    A+

  18. #18
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    Bonjour à tous

    quelque chose m'a certainement échapppé, mais chez moi, sous Excel 2003, le code ci-dessous a l'air de fonctionner, que le séparateur décimal soit un point ou une virgule...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    TextBox3 = CDbl(Replace(TextBox1, ",", ".")) + CDbl(Replace(TextBox2, ",", "."))
    TextBox4 = CDbl(Replace(TextBox1, ",", ".")) * CDbl(Replace(TextBox2, ",", "."))
    End Sub
    Ci-joint image de l'USF avant et après click sur le bouton...

    Bonne journée
    @+
    Images attachées Images attachées  

  19. #19
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Pierrot,
    Certainement que j'ai des excel spéciaux
    J'ai fait un copier coller de ton code (donc pas de modif)
    et voilà le résultat ??
    Edit Tester sur Excel 2000 et Excel 2007, même résultat sur les 2.
    Y a un mystère dans mon clavier
    A+
    Images attachées Images attachées  

  20. #20
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    Re

    Etrange en effet... Chez toi ne prend carrément pas en compte les décimales... Par contre les valeurs ne sont plus concaténées lors de l'addition et pas de message d'erreur sur la multiplication... J'ai essayé de modifier mon séparateur décimale et / ou le séparateur de millier, mais je n'arrive pas à reproduire ton résultat.... Peut être une autre option régionale du panneau de configuration qui vient interférer dans le résultat... Mais laquelle ??? Pas d'autre idée pour le moment... Le mystère demeure....

    @+

Discussions similaires

  1. [XL-2010] Réalisation d'un tableau dans userform
    Par meli82 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/02/2015, 14h14
  2. [XL-2007] Besooin d'aide pour réaliser un userform de saisie
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2012, 01h21
  3. [XL-2010] Réalisation d'userform, sauvegarde et automatisation sous VBA
    Par Thomas.33 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/01/2012, 19h37
  4. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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