Autres Formulaire et incrémentation plusieurs bases de données

lamine12

XLDnaute Nouveau
Bonjour,

Je débute en codage VBA et j’avance petit a petit sur mon projet en cherchant des morceaux de codes sur les forums.

Je coince sur une partie de mon code, je n'ai trouvé nulle part la réponse à ma question. J’espère pouvoir trouver de l’aide ici.

J’ai un fichier excel servant de base de données pour la gestion du stock de divers laboratoires. Mon fichier comporte plusieurs feuilles (en fonction des laboratoires). J’ai créé un formulaire afin d’insérer sur chaque base de données, de nouveaux produits.

Je souhaiterais qu’en fonction de l’option button qui est coché, les données rentrées dans le formulaire aille dans le tableau de la feuille correspondante.

Lorsque je fais fonctionner mon formulaire, les données que je souhaite ajouter à ma base de données sont uniquement incrémentées à la feuille « animalerie » , je cherche donc a incrémenter les nouvelles données dans le bon tableau de la bonne feuille.

Au final, j’aurais autant de feuilles que d’option button.

J’espère avoir été compréhensible...

Merci pour votre aide
 

Pièces jointes

  • stocks 2022_.xlsm
    96 KB · Affichages: 15

ChTi160

XLDnaute Barbatruc
Bonjour nimel
Bienvenue sur XLD

j'ai constaté que dans la procédure du Bouton "Ajouter au Stock" il n'y avait que deux cas prévus
"Animalerie" et "Pharmacie" je ne me suis pas occupé du reste Lol
Peut être une solution a ton Problème
L'utilisation d'un "Select Case" (perfectible)
Voir le Code que j'ai modifié :
VB:
Private Sub CmdAjouter_Click()
If PeremptionTxt = "" Or StockageBox = "" Or PeremptionTxt = "JJ/MM/AAAA" Then 'VERFIER "JJ/MM/AAAA"
MsgBox ("renseigner le lieu de stockage et la date de péremption")
Exit Sub
End If
Select Case True 'cas ou c'est vrai
      Case OBAnim= True
  With Sheets("animalerie")
    If .Range("a6") = "" Then
       .Range("a6") = DescripTxt
    Else
       Range("t_Animalerie").ListObject.ListRows.Add
    End If
dlt = .Range("d1048576").End(xlUp).Row   
    .Range("a" & dlt) = TypeBox
    .Range("b" & dlt) = AttributionTxt
    .Range("c" & dlt) = StockageBox
    .Range("d" & dlt) = ReceptionTxt
    .Range("e" & dlt) = PeremptionTxt
    .Range("f" & dlt) = PeremptionTxt
 End With
  Case OBpharma = True
With Sheets("pharmacie")
    If .Range("a6") = "" Then
       .Range("a6") = TypeBox
    Else
       Range("t_Pharmacie").ListObject.ListRows.Add
    End If
dlt = .Range("d1048576").End(xlUp).Row   
     .Range("a" & dlt) = DescripTxt
     .Range("b" & dlt) = AttributionTxt
     .Range("c" & dlt) = LotTxt
     .Range("d" & dlt) = QteTxt.Value
     .Range("e" & dlt) = StockageBox
     .Range("f" & dlt) = PeremptionTxt
End With
End Select
Unload UserFormStock
UserFormStock.Show
End Sub
edit : j'ai simplifié un peu le Code !(17:31)
Bonne fin de Journée
Jean marie
PS: Bonsoir vgendron
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Hello

avec une indentation (décalage des lignes) correcte du code, on voit tout de suite ce qui ne va pas
VB:
Private Sub CmdAjouter_Click()

If OBAnim = True Then
    If PeremptionTxt = "" Or StockageBox = "" Or PeremptionTxt = "JJ/MM/AAAA" Then 'VERFIER "JJ/MM/AAAA"
        MsgBox ("renseigner le lieu de stockage et la date de péremption")
        Exit Sub
    Else
        If Sheets("animalerie").Range("a6") = "" Then
        Sheets("animalerie").Range("a6") = DescripTxt
        Else
        Sheets("animalerie").ListObjects("Tableau7").ListRows.Add
    End If

    dlt = Sheets("animalerie").Range("d1048576").End(xlUp).Row
    
    Sheets("animalerie").Range("a" & dlt) = TypeBox
    Sheets("animalerie").Range("b" & dlt) = AttributionTxt
    Sheets("animalerie").Range("c" & dlt) = StockageBox
    Sheets("animalerie").Range("d" & dlt) = ReceptionTxt
    Sheets("animalerie").Range("e" & dlt) = PeremptionTxt
    Sheets("animalerie").Range("f" & dlt) = PeremptionTxt

    If OBpharma = True Then
        If PeremptionTxt = "" Or StockageBox = "" Or PeremptionTxt = "MM/AAAA" Then
            MsgBox ("renseigner le lieu de stockage et la date de péremption")
            Exit Sub
            Else
                If Sheets("pharmacie").Range("a6") = "" Then
                Sheets("pharmacie").Range("a6") = TypeBox
                Else
                Sheets("pharmacie").ListObjects("Tableau1").ListRows.Add
                End If

                dlt = Sheets("pharmacie").Range("d1048576").End(xlUp).Row
                    
                Sheets("pharmacie").Range("a" & dlt) = DescripTxt
                Sheets("pharmacie").Range("b" & dlt) = AttributionTxt
                Sheets("pharmacie").Range("c" & dlt) = LotTxt
                Sheets("pharmacie").Range("d" & dlt) = QteTxt.Value
                Sheets("pharmacie").Range("e" & dlt) = StockageBox
                Sheets("pharmacie").Range("f" & dlt) = PeremptionTxt
            End If
        End If
    End If
    Unload UserFormStock
    UserFormStock.Show
End If
End Sub
 

vgendron

XLDnaute Barbatruc
en pj, j'ai modifié ton code associé au bouton d'ajout au stock
c'est une idée comme une autre

après. en fonction de l'option bouton, il va falloir que tu définisses (et code) les controles que tu fais
 

Pièces jointes

  • stocks 2022_.xlsm
    89.7 KB · Affichages: 29

lamine12

XLDnaute Nouveau
Bonjour,
avec un peu de retard merci à tous les 2 pour votre aide !
J'ai testé vos 2 méthodes qui fonctionnent très bien, avec une petite préférence pour celle de Chti160 plus simple a comprendre pour mon niveau débutant 🤪. mais qui me sera certainement utile pour de futurs projets 👍.

Bonne journée
 

Discussions similaires