Microsoft 365 Code VBA Bon Commande

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mld.sebastien

XLDnaute Junior
Bonjour,

Je cherche un code VBA pour autant de ligne dans le bon de commande.

Pour chaque textbox : Tbx_Quantité , Tbx_Prix qui ce multiplie et donne un Montant en Tbx_Montant.
Et à la fin un Tbx_Total en additionnant les Montant.

Je l'ai fait pour chaque ligne comme cela :

VB:
Private Sub Tbx_Prix1_Change()
    Tbx_Montant1.Value = Format(Tbx_Quantie1.Value * Tbx_Prix1.Value, "#,##0.00 €")
End Sub

Private Sub Tbx_Montant1_Change()
    Tbx_Total.Value = Format(Tbx_Montant1.Value + Tbx_Montant2.Value, "#,##0.00 €")
End Sub

Je cherche si il y pas plus simple ??

@job75 m'avait super bien aider à un moment je le remercie d'ailleurs, j'utilise toujours tous le temps ses codes.

Cordialement.
 
Solution
Hello

remplace le code du combo par celui ci
VB:
Private Sub Lst_NomPrénom_Change() 'lorsque la selection change dans le combo
    If Me.Lst_NomPrénom.ListIndex = -1 Then 'si il n'y a pas de selection OU qu'il y a une saisie ne correspondant pas à la liste du combo
        Me.Tbx_DateAnniverssaire = " "
        Me.Tbx_Adresse = " "
        Me.Tbx_Téléphone = " "
        Me.Tbx_Mail = " "
        Exit Sub
    End If
    With Sheets("Lst_Clients") 'avec la feuille
        With .ListObjects("Lst_tab_Clients") 'avec la table
            Set trouve = .ListColumns("Nom Prénom").Range.Find(Me.Lst_NomPrénom, lookat:=xlWhole, LookIn:=xlValues) 'on cherche le Nom Prénom dans la colonne
            If Not trouve Is Nothing Then 'si on l'a trouvé...
ca sert à quoi d'enregistrer les données du formulaire dans la feuille "Données Macro" ??
avant de les mettre aussi dans la feuille "Evt_Achat" ??
Bas j'ai toujours fait cela, peu être plus compliquer si plus simple suis preneur, les données formulaire Bon commande devrait être dans le tableau de la feuille Evt_Achat et pour le formulaire création clients les données devrait être dans le tableau Lst_articles, j'avais pris l'habitude de faire comme cela copier dans Données Macro.
C'est sur que mon code devrait etre nettoyer.
Merci de ton aide
 
Voir PJ

1) j'ai ajouté un control "Numéro de commande" sur le formulaire
==> j'ai donc aussi ajouté une colonne "NumCommande" dans le tableau (en dernière à droite pour pas casser tout le code actuel.... pour l'instant)

2) tu te remplis un bon de commande avec plusieurs lignes ==> et tu valides
==> TOUTES les lignes sont ajoutées SEPAREMMENT dans la table avec le numero de commande
 

Pièces jointes

En PJ, j'ai repris aussi le code pour créer un nouveau client

la feuille "Données Macro".. ne sert à rien... le code n'y fait plus appel (à part peut etre les messages box.. avec un code à rallonge pour .. euh... ??..)
Merci beaucoup, je vais regarde cela et voir pour le format Nom Prénom en 1er lettre majuscule et le reste minuscule, et voir pour mais coche virement,etc...

J'ai supprimer ma feuille Donnée_Macro et mis une feuille Préface ou je mis les boutons que tu as mis j'allais en faire justement pour cela.
Merci beaucoup
 

Pièces jointes

voir fonction "Nompropre"
Oui j'ai fait cela pour les Nom et Prénom pour les textbox:

VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Trim(TextBox1) <> "" Then TextBox1.Text = UCase(Left(TextBox1, 1)) & LCase(Right(TextBox1, Len(TextBox1) - 1))
End Sub

et j'ai cela pour les coches :

Code:
Private Sub btnSubmit_Click()
    Dim i As Integer
    Dim selectedOptions As String
    selectedOptions = "Options sélectionnées : "
    ' Boucle à travers les cases à cocher
    For i = 0 To 2 ' 3 options (indice 0, 1, 2)
        If Me.Controls("chkOption" & i).Value = True Then
            selectedOptions = selectedOptions & Me.Controls("chkOption" & i).Caption & ", "
        End If
    Next i
    ' Enlever la dernière virgule et espace
    If Len(selectedOptions) > 0 Then
        selectedOptions = Left(selectedOptions, Len(selectedOptions) - 2)
    End If
    ' Afficher les options sélectionnées dans une cellule Excel
    Sheets("Feuil1").Range("A1").Value = selectedOptions
    MsgBox selectedOptions ' Afficher un message avec les options sélectionnées
End Sub

Il y a peu être mieux.
 
Hello

remplace le code du combo par celui ci
VB:
Private Sub Lst_NomPrénom_Change() 'lorsque la selection change dans le combo
    If Me.Lst_NomPrénom.ListIndex = -1 Then 'si il n'y a pas de selection OU qu'il y a une saisie ne correspondant pas à la liste du combo
        Me.Tbx_DateAnniverssaire = " "
        Me.Tbx_Adresse = " "
        Me.Tbx_Téléphone = " "
        Me.Tbx_Mail = " "
        Exit Sub
    End If
    With Sheets("Lst_Clients") 'avec la feuille
        With .ListObjects("Lst_tab_Clients") 'avec la table
            Set trouve = .ListColumns("Nom Prénom").Range.Find(Me.Lst_NomPrénom, lookat:=xlWhole, LookIn:=xlValues) 'on cherche le Nom Prénom dans la colonne
            If Not trouve Is Nothing Then 'si on l'a trouvé
                ligne = trouve.Row - .Range.Row 'numéro de ligne
                Me.Tbx_DateAnniverssaire = .ListColumns("Date Anniversaire").DataBodyRange(ligne)
                Me.Tbx_Adresse = .ListColumns("Adresse").DataBodyRange(ligne)
                Me.Tbx_Téléphone = .ListColumns("Téléphone").DataBodyRange(ligne)
                Me.Tbx_Mail = .ListColumns("Mail").DataBodyRange(ligne)
            End If
        End With
    End With
End Sub
 
Hello

remplace le code du combo par celui ci
VB:
Private Sub Lst_NomPrénom_Change() 'lorsque la selection change dans le combo
    If Me.Lst_NomPrénom.ListIndex = -1 Then 'si il n'y a pas de selection OU qu'il y a une saisie ne correspondant pas à la liste du combo
        Me.Tbx_DateAnniverssaire = " "
        Me.Tbx_Adresse = " "
        Me.Tbx_Téléphone = " "
        Me.Tbx_Mail = " "
        Exit Sub
    End If
    With Sheets("Lst_Clients") 'avec la feuille
        With .ListObjects("Lst_tab_Clients") 'avec la table
            Set trouve = .ListColumns("Nom Prénom").Range.Find(Me.Lst_NomPrénom, lookat:=xlWhole, LookIn:=xlValues) 'on cherche le Nom Prénom dans la colonne
            If Not trouve Is Nothing Then 'si on l'a trouvé
                ligne = trouve.Row - .Range.Row 'numéro de ligne
                Me.Tbx_DateAnniverssaire = .ListColumns("Date Anniversaire").DataBodyRange(ligne)
                Me.Tbx_Adresse = .ListColumns("Adresse").DataBodyRange(ligne)
                Me.Tbx_Téléphone = .ListColumns("Téléphone").DataBodyRange(ligne)
                Me.Tbx_Mail = .ListColumns("Mail").DataBodyRange(ligne)
            End If
        End With
    End With
End Sub
Super, jetais bien déçu la commande LookIn je chercher justement ce que je devait mettre après le =.

Un grand merci, j’étais déçus depuis ce matin. Je vais pouvoir regarder pour les checkbox sur le forum.

Cordialement.
 
Super, jetais bien déçu la commande LookIn je chercher justement ce que je devait mettre après le =.

Un grand merci, j’étais déçus depuis ce matin. Je vais pouvoir regarder pour les checkbox sur le forum.

Cordialement.
Bonjour à tous,
Puis-je me permettre de vous proposer le fichier ci-joint, même si le fil a été clôturé.
Bonne journée à tous.
 

Pièces jointes

Bonjour @vgendron ,

J'ai bien avancer sur mon fichier.

J'aurais deux points à voir :
1 - J'ai rajouter La liste articles tous ce passe bien aucun souci sauf que je voudrais modifier mon code qu'il regarde mon tableau si déjà pas une référence identique inscris.
2 - J'ai aussi fait L'onglet Bon de commande quand pense-tu dans feuil1(Bon Commande) ? Il me reste les lignes à faire en récupérant les informations.

Cordialement.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
80
Réponses
2
Affichages
409
Réponses
3
Affichages
241
Retour