XL 2010 Débutant Tableau de bord code VBA

fJack38

XLDnaute Junior
bonjour à tous,

Je suis encore novice en code VBA et je viens de créer un tableau de bord avec formulaire de saisie avec plusieurs champs.
Je viens de créer plusieurs onglets avec un cahier des charges bien précis.

1 Tableau de bord avec bouton formulaire
2 onglet stock véhicule chantier
3 onglet stock PDT véhicule SAV
4 onglet stock PDT véhicule SAV Froid
5 liste

L'aide dont j'ai besoin est spécifique mais je n'ai pas les connaissances nécessaires pour y arriver si c'est possible !

Je souhaiterai pouvoir remplir les champs et sélectionner un ou deux ou trois ( Valider) et renvoyer dans les tableaux correspondants en venant se placer automatiquement à la suite en tenant compte de la famille correspondante.

EXEMPLE:1
si je rentre dans mon formulaire
Désignation: flexible raccordement eau inox 200 cm 3/4 FF
Fournisseur SMG
Référence XXX
Quantité 2
Prix achat HT 25
Famille Eau
je valide les 3 champs

Est-il possible de le placer dans les 3 tableaux correspondant à la suite ( FAMILLE) exemple en gras dans les 3 tableaux.
Pour info, j'ai passé une journée à rechercher des tutos, exemples pour y arriver à ce niveau, j'ai compris pas mal de choses mais c'est encore dur dur !

Par avance merci à celui ou celle qui parviendra à m'aider à avancer voir finaliser mon travail et merci de me mettre les infos des différents code VBA à venir pour que je puisse essayer de comprendre et que cela me soit constructif comme je l'ai fais pour moi.

fJack38.
 

Pièces jointes

  • stock véhiculesV2.xlsm
    59.5 KB · Affichages: 37

Rouge

XLDnaute Impliqué
Bonjour,

Votre code complété
VB:
'Permettant de sauvegarder l'ajout de la base de données PDT.
Private Sub btnsauvegarder_Click()
    'Déclaration des variables
    Dim f As Worksheet
    Dim DerLig_f As Long, Qte As Long
    Dim Famille As String, Design As String, Fournisseur As String, Ref As String
    Dim Prix As Double
    
    'Test que tous les champs obligatoires ont bien été saisie
    If Len(Me.TextBoxdésignation) = 0 Then
        Me.lblmessage = " Veuillez saisir la pièce détachée"
        Me.TextBoxdésignation.SetFocus
    ElseIf Len(Me.TextBoxfournisseur) = 0 Then
        Me.lblmessage = " Veuillez saisir le nom du fournisseur"
        Me.TextBoxfournisseur.SetFocus
    ElseIf Len(Me.TextBoxréference) = 0 Then
        Me.lblmessage = " Veuillez saisir la réference"
        Me.TextBoxréference.SetFocus
    ElseIf Len(Me.TextBoxquantité) = 0 Then
        Me.lblmessage = " Veuillez saisir la quantité"
        Me.TextBoxquantité.SetFocus
    ElseIf Len(Me.TextBoxprixachatHT) = 0 Then
        Me.lblmessage = " Veuillez saisir le prix d'Achat HT"
        Me.TextBoxprixachatHT.SetFocus
    ElseIf Len(Me.cbofamille) = 0 Then
        Me.lblmessage = " Veuillez saisir la famille de produit"
        Me.cbofamille.SetFocus
    Else
    ' Si tous les champs sont renseignés alors on peut sauvegarder
        'on récupère les données
        Famille = cbofamille.Text
        Design = TextBoxdésignation.Text
        Fournisseur = TextBoxfournisseur.Text
        Ref = TextBoxréference
        Qte = TextBoxquantité.Text
        Prix = TextBoxprixachatHT.Text
        
        'on reporte les données dans chaque feuille cochée
        If CheckBoxvalider1 = True Then
            Set f = Sheets("Stock PDT Véhicule Chantier")
            DerLig_f = f.ListObjects("Tstockpdtvéhiculechantier").DataBodyRange.Rows.Count
            f.Range(f.Cells(DerLig_f + 1, "A"), f.Cells(DerLig_f + 1, "F")) = Array(Famille, Design, Fournisseur, Ref, Qte, Prix)
        End If
        If CheckBoxvalider2 = True Then
            Set f = Sheets("Stock PDT véhicules SAV")
            DerLig_f = f.ListObjects("TstockpdtvéhiculesSAV").DataBodyRange.Rows.Count
            f.Range(f.Cells(DerLig_f + 1, "A"), f.Cells(DerLig_f + 1, "F")) = Array(Famille, Design, Fournisseur, Ref, Qte, Prix)
        End If
        If CheckBoxvalider3 = True Then
            Set f = Sheets("Stock PDT Véhicules SAV Froid")
            DerLig_f = f.ListObjects("TstockvéhiculesSAVfroid").DataBodyRange.Rows.Count
            f.Range(f.Cells(DerLig_f + 1, "A"), f.Cells(DerLig_f + 1, "F")) = Array(Famille, Design, Fournisseur, Ref, Qte, Prix)
        End If
    End If
    
    Set f = Nothing 'on libère la mémoire
End Sub

Cdlt
 

Pièces jointes

  • fJack38_Débutant Tableau de bord code VBA.xlsm
    57.7 KB · Affichages: 48

Discussions similaires