XL 2019 Accepter une virgule (ou un point) dans un textbox

natorp

XLDnaute Barbatruc
Bonjour à toutes et tous

J'ai récupéré ce fichier que j'essaye d'adapter à nos besoins de garage participatif
Je bloque sur la possibilité de rentrer une valeur avec une virgule (ou un point) dans la colonne "quantité" du userform "devis"
Et que cela calcul comme il faut le total de ce même userform
Il y a un module de classe dans le code que je ne comprends pas et je ne vois pas comment faire
Par exemple, depuis l'onglet "paramètres" on clique sur "lancer l'interface", on choisit "Gestion devis + facturation"
un userform "devis" apparaît, que l'on choisisse un devis, ou que l'on veuille faire un nouveau devis, j'aimerais pouvoir saisir la quantité avec une virgule (ou un point) et que le total se mette à jour comme il faut, et que cela alimente l'onglet "Base devis" avec les bonnes valeurs

Merci pour votre attention et votre aide, cordialement, Gérard
 

Pièces jointes

  • Test devis.xlsm
    324.6 KB · Affichages: 16
Solution
re
VB:
Private Sub Cbn_Valider_Click()
  Dim I&
    With Range("archivedevis").ListObject
        For I = .ListRows.Count To 1 Step -1
            If .ListRows(I).Range.Cells(1) = Cbx_Devis.Text Then .ListRows(I).Delete
        Next
    End With
    For I = 0 To ListBX.ListCount - 1
        With Range("archivedevis").ListObject.ListRows.Add.Range
            'N°devis, N°client,nomclient ,Date ,description,prix unitaire,quantité,soutotal,Total
            .Cells(1) = Cbx_Devis
            .Cells(2) = Cbx_Client
            .Cells(3) = Tbx_Raison
            .Cells(4) = Tbx_DateDevis
            .Cells(5) = ListBX.List(I, 0)
            .Cells(6) = ListBX.List(I, 1)
            .Cells(7) = ListBX.List(I, 2)
            .Cells(8) =...

patricktoulon

XLDnaute Barbatruc
re
j'ai un peu modifier et mis les purge
VB:
Private Sub Cbn_NouveauDevis_Click()
    Dim X&, Z&
    TbL = Range("archivedevis").Value
    For I = 1 To UBound(TbL)
        X = Val(Replace(TbL(I, 1), "D", ""))
        If Z <= X Then Z = X
    Next

    Cbx_Devis.Value = Format(Z + 1, """D""0000")
    Cbx_Client = ""
    Tbx_Raison = ""
    Tbx_DateDevis = ""
ListBX.Clear
End Sub
 

natorp

XLDnaute Barbatruc
re
j'ai un peu modifier et mis les purge
VB:
Private Sub Cbn_NouveauDevis_Click()
    Dim X&, Z&
    TbL = Range("archivedevis").Value
    For I = 1 To UBound(TbL)
        X = Val(Replace(TbL(I, 1), "D", ""))
        If Z <= X Then Z = X
    Next

    Cbx_Devis.Value = Format(Z + 1, """D""0000")
    Cbx_Client = ""
    Tbx_Raison = ""
    Tbx_DateDevis = ""
ListBX.Clear
End Sub
Super, nos messages se sont croisés, merci beaucoup, ça marche !!
Bonne journée, Gérard
 

natorp

XLDnaute Barbatruc
Bonjour @natorp
j'en ai profité que c'est samedi tranquille pour avancer dans le projet
étape 3 facturation
Merci Patrick
je suis vraiment reconnaissant pour ce travail (du samedi), personnellement je n'avais aucune disponibilité ce WE, et je découvre le super travail que tu nous as fait. Je vais effectivement pouvoir coder les boutons "quitter" sans problème
Nous allons commencer notre activité avec un 1er super outil. Avec le temps je reviendrai certainement vers toi pour améliorer ce fichier
très cordialement, bonne semaine, Gérard
 

patricktoulon

XLDnaute Barbatruc
j'etais d'humeur taquine ce week 🥳 🥳 🥳 🥳

VB:
Private Sub Cbn_Facturer_Click()

    Dim oldindex
    With Sheets("FACTURE")
        oldindex = .[E6].Text
        .[E6] = Format(Val(Replace(.[E6], "F", "")) + 1, """F""0000")
        Range("D9:D14,D7:E7,B20:E35,E37,E39,B44").ClearContents
        Id = Cbx_Client
        X = WorksheetFunction.Match(Id, Range("t_Clients").Columns(1).Cells, 0)
        prenom = Range("t_Clients").Cells(X, 3)
        Addr = Range("t_Clients").Cells(X, 4)
        cdp = Range("t_Clients").Cells(X, 5)
        ville = Range("t_Clients").Cells(X, 6)

        .[d7] = Date
        .[D9] = Tbx_Raison & " " & prenom
        .[D10] = Addr
        .[D11] = ville
        .[D12] = cdp
        .[B41] = "Référence devis: " & Cbx_Devis
        .[B42] = "Date devis: " & Tbx_DateDevis

tb = ListBX.List

        .[B20].Resize(ListBX.ListCount, 4).Value = tb
        .[B38,E37,E39].Value = CDbl(Tbx_MontantHTDevis)
        DoEvents

        If MsgBox("Voulez vous imprimer la facture ?", vbYesNo) Then
            Me.Hide
            .PrintPreview
            Me.Show
            With Range("memofacture").ListObject.ListRows.Add.Range
                .Cells(1) = Sheets("FACTURE").[E6]
                .Cells(2) = Cbx_Devis
            End With

        Else
            .[E61] = oldindex
        End If

    End With


End Sub
 

natorp

XLDnaute Barbatruc
j'etais d'humeur taquine ce week 🥳 🥳 🥳 🥳

VB:
Private Sub Cbn_Facturer_Click()

    Dim oldindex
    With Sheets("FACTURE")
        oldindex = .[E6].Text
        .[E6] = Format(Val(Replace(.[E6], "F", "")) + 1, """F""0000")
        Range("D9:D14,D7:E7,B20:E35,E37,E39,B44").ClearContents
        Id = Cbx_Client
        X = WorksheetFunction.Match(Id, Range("t_Clients").Columns(1).Cells, 0)
        prenom = Range("t_Clients").Cells(X, 3)
        Addr = Range("t_Clients").Cells(X, 4)
        cdp = Range("t_Clients").Cells(X, 5)
        ville = Range("t_Clients").Cells(X, 6)

        .[d7] = Date
        .[D9] = Tbx_Raison & " " & prenom
        .[D10] = Addr
        .[D11] = ville
        .[D12] = cdp
        .[B41] = "Référence devis: " & Cbx_Devis
        .[B42] = "Date devis: " & Tbx_DateDevis

tb = ListBX.List

        .[B20].Resize(ListBX.ListCount, 4).Value = tb
        .[B38,E37,E39].Value = CDbl(Tbx_MontantHTDevis)
        DoEvents

        If MsgBox("Voulez vous imprimer la facture ?", vbYesNo) Then
            Me.Hide
            .PrintPreview
            Me.Show
            With Range("memofacture").ListObject.ListRows.Add.Range
                .Cells(1) = Sheets("FACTURE").[E6]
                .Cells(2) = Cbx_Devis
            End With

        Else
            .[E61] = oldindex
        End If

    End With


End Sub
Super, merci
Encore 2 questions, comment faire pour que les valeurs (prix unitaire et montant) de chaque ligne qui alimentent la facture, la virgule soit remplacée par un point, sinon le symbole "euro" n'apparaît pas
Et pourquoi 61 à cet endroit ?
VB:
        Else
            .[E61] = oldindex
Merci beaucoup, cordialement, Gérard
 
Dernière édition:

natorp

XLDnaute Barbatruc
non c'est E6 pas E61 pardon
c'est au cas ou tu veux pas imprimer(click non dans le message) le numero revient au précedent
Bonjour Patrick

Me voilà de retour avec mon fichier finalisé, mais voilà après avoir valider un devis pour la première fois, au moment d'imprimer ce devis j'ai une erreur "incompatibilité de type" sur les lignes jaunes :
1728466349792.png

1728466447577.png


Merci pour ton aide, cordialement, Gérard
 

Pièces jointes

  • Devis et Facturation.xlsm
    663.6 KB · Affichages: 1

natorp

XLDnaute Barbatruc
Bonjour tout le monde

Je reviens avec une erreur de total :
1730810245460.png

Le total est erroné : 230.66 au lieu de 232.88
Apparemment, le tableau "oublie" d'additionner les valeurs après la virgule, il ne compte que la dernière ligne.

Et j'ajoute à cette demande la possibilité de supprimer une ligne dans ce tableau

merci pour votre aide, cordialement, Gérard
 

Pièces jointes

  • Devis et Facturation.xlsm
    630.8 KB · Affichages: 1
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 126
Messages
2 116 487
Membres
112 762
dernier inscrit
kohl