Saisie Userform pour base de données

TAL

XLDnaute Occasionnel
Bonsoir à tous,

Pourriez vous m'aider SVP sur la saisie de base de données.

Je vous joins le fichier.
J'ai essayé, en cherchant sur le forum et vidéo, de faire les codes, mais je n'arrive pas à les appliquer.
Se sont des codes pour ajouter modifier rechercher.

S'il vous plait
J'espère que vous pourrez m'aider
Bien à vous
 

Pièces jointes

  • 16.Tableau_essai_onglet_Admin.zip
    707.5 KB · Affichages: 8
Solution
Bonjour P56,

J'ai peut être trouvé, en espérant que cela soit juste :
Voilà ce que j'ai rajouté au code

Private Sub CommandButton16_Click() ' MODIFIER
If Not TextBox_Nom = "" Then Sauve "T_Admin", Td
If Me.Cbx_concat_nom.ListIndex > -1 Then Remplir_Usf Me.Cbx_concat_nom.ListIndex + 2
Me.Cbx_concat_nom.List = Range("L_Nom_Vacataire").Value
Me.Cbx_concat_nom.ListIndex = -1
Me.Cbx_concat_nom.SetFocus
End Sub

Peux tu me dire si c'est juste, je ne voudrais pas que cela plante au bout d'un moment à l'utilisation

Merci beaucouup

p56

XLDnaute Occasionnel
Bonjour @TAL,

C'est simple, juste un indice à modifier dans le code de la feuille "Admin"
J'en ai profité pour ajouter la coloration de la case "Etat du dossier" en rouge ou vert selon les infos saisies, et améliorer la formule en colonne AA.

Avec ces modif il est possible d'ajouter des lignes et/ou des colonnes dessus ou avant le TS "T_Admin" sans autre modif du code

P.
 

Pièces jointes

  • Tableau_essai_onglet_Admin.xlsm
    49.3 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
bonjour
sair et modifier une base de donnée sur tableau structuré peut être tres compliqué pour un novice ne connaissant pas les règles de base que tuaurais du apprendre avant de te lancer dans la conception d'un interface(userform)

tout d'abords on travaille sur un tableau structuré il faut donc employer les méthode d'accès en lecture et ecriture adéquoites
donc tout tes
VB:
'Saisie des informations pour chaque ligne
    Cells(L & 2) = TextBox_Nom.Value
    Cells(L & 3) = ComboBox2.Value
    Cells(L & 4) = TextBox1.Value
    Cells(L & 5) = TextBox2.Value
    '.......
    '.......
c'est deja pas la bonne méthode

on te dit qu'il est préférable de nommer tes textboxs avec des reductions de la signification de la donnée
c'est un plus ,mais là encore si il n'y a pas de corélation avec la ligne (ou la plage) c'est (choucroutte)
perso
je met dans le tag du control le numero de la colonne
j'ajoute une ligne avec les méthodes pour listobject(tableau structuré)
et dans une boucle je me sert du tag pour indexée ma donnée sur la ligne
sauf si formatage 3 lignes suffisent

tu travaille avec un tableau structuré
travaille donc avec ses méthodes
;)
 

patricktoulon

XLDnaute Barbatruc
Bonjour @p56
heum...
il faudra m'expliquer pourquoi sortir un module classe utiliséé en autant d'instance que le controls
alors que le job doit être fait finalement par le bouton ajouter / modifier / vider

et vu le niveau du code que tu propose
attend toi à ce qu'il revienne te voir en espérant que tu lui modifie ou repare
car lui en sera incapable avant un moment
et je dis cela par rapport au niveau démontré par ces propres codes

si tu donne un boeuf bourguignon a un homme qui a fain , attends toi a le voir ressoner a ta porte demain

par contre si tu lui explique les bases sans module classe et qu il fini par les maitriser, là ce jour là tu pourra lui montrer comment on classe des controls
et encore une fois je dis ca dans la condition une classe est necessaire
en l'occurence dans cet exercice pour moi c'est inutile

j'ai donc pris la liberté de tout refaire
dans le userform
car le fichier plantait chez moi des que je touchais à quelque chose
j'ai pris la liberté de l'arranger un peu
et de lui mettre mon calendrier (rien de plus penible que de devoir sair une date (mais c'est mon opinion personnel

dans un nouveau fichier apres avoir copier les données et le userform

donc je prends le userform et je vire absolument tout le code
et je met celui ci
VB:
Private Sub Cbx_concat_nom_Change()
    CommandButton1.Enabled = Cbx_concat_nom.ListIndex = -1
    CommandButton2.Enabled = Not CommandButton1.Enabled
End Sub

'REMPLISSAGE DES COMBOBOX DANS L ACTIVATE DU USERFORM
Private Sub UserForm_Activate()
    Cbx_concat_nom.List = Range("T_Admin[NOM]").Value        'liste des noms
    ComboBox2.List = Array("M.", "Mme")         'liste civilité
    ComboBox3.List = Range("T_CATEGORIE").Value    'liste des catégorie
    ComboBox4.List = Range("T_STATUTS").Value    'liste des status
End Sub
'BOUTON VIDER
Private Sub CommandButton15_Click()
    For Each ctrl In Me.Controls
        If ctrl.Tag <> "" Then
            Select Case ctrl.Tag
            Case 21 To 24: ctrl.Value = False
            Case Else: ctrl.Value = ""
            End Select
        End If
    Next
End Sub


'Formatage du TextBox télephone
Private Sub TextBox13_Change(): TextBox13.MaxLength = 10: End Sub
Private Sub textbox13_Afterupdate(): TextBox13.Value = Format(TextBox13, "00 00 00 00 00"): End Sub

'textbox  date de naissance on peut appeler le calendrier au click droit
Private Sub TextBox3_MouseuP(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then TextBox3 = Calendar.ShowX(TextBox3, 0, 0, 1)
End Sub

'BOUTON AJOUTER
Private Sub CommandButton1_Click()
    Dim ctrl, Col As Long
    '****************************************************************
    ' peut être mettre ici  un contrôle sur certains textbox qui pourrait être obligatoire
    'a fin de stoper si lces conditions ne sont pas remplies
    '**************************************************************************
    With Range("T_Admin").ListObject.ListRows.Add.Range
        For Each ctrl In Me.Controls
            If ctrl.Tag <> "" Then
                Col = Val(ctrl.Tag)
                Select Case Col
                Case 5: .Cells(Col) = CDate(ctrl)
                Case 21 To 24: .Cells(Col) = Array("", "X")(Abs(ctrl.Value))
                Case Else: .Cells(Col) = ctrl.Value
                End Select
            End If
        Next
    End With
End Sub

'BOUTON MODIFIER
Private Sub CommandButton2_Click()
    Dim ctrl, Col As Long, lig As Long
    lig = Cbx_concat_nom.ListIndex + 1
    With Range("T_Admin").ListObject.ListRows(lig).Range
        For Each ctrl In Me.Controls
            If ctrl.Tag <> "" Then
                Col = Val(ctrl.Tag)
                Select Case Col
                Case 5: .Cells(Col) = CDate(ctrl)
                Case 21 To 24: .Cells(Col) = Array("", "X")(Abs(ctrl.Value))
                Case Else: .Cells(Col) = ctrl.Value
                End Select
            End If
        Next
    End With
End Sub

'BOUTON FERMER
Private Sub Cbt_fermer_Click(): Unload Me: End Sub
 

Pièces jointes

  • 16.Tableau_essai_onglet_Admin V patrick toulon.xlsm
    98.7 KB · Affichages: 4

TAL

XLDnaute Occasionnel
Bonjour @p56, @patricktoulon

@p56, un grand Merci pour ton AIDE. C'est Génial !!!

Il est certain que je n'ai pas vos compétences, mais j'essaye.
Avant de demander de l'aide, je passe des semaines à essayer de construire quel chose, d'y arriver par moi-même.
Je regarde énormément de vidéo et j'essaye, je fais beaucoup de recherche sur ce forum, je télécharge les fichiers qui sont susceptible de m'intéresser pour essayer d'adapter les codes à mes besoins.
Mon ordi est rempli de fichier téléchargé. Ces fichiers téléchargés sont exclusivement de ce forum et je sais que l'on peut vous faire confiance.
Au bout d'un moment, parce que la date est fatidique, je demande de l'aide et pour ça UN GRAND MERCI.
Vous nous enlevé une épine du pied, vous apportez un soulagement ! Heureusement que vous existez !!!
Que vous soyez là pour nous aider !!!

On apprend petit à petit, en tout cas pour ma part.
Je suis fière de moi, pour ce qui est déjà de la création d'un userform, c'est pas beaucoup pour vous mais pour moi c'est énorme. Pour ce qui est des codes, houla !!!! beaucoup plus difficile !!!! mais j'ai déjà réussi à faire de toutes petites choses, toutes petites.

@patricktoulon, merci pour ton fichier. Le calendrier moi je bravo
Par contre, l'userform "Admin", il ne télécharge pas les données du tableau pour modification.
La date est sur la TextBox "Dépt de naissance", mais je pense pouvoir arriver à le changer 😳

En tout cas, UN GRAND MERCI A VOUS !!!
Et espère à nouveau, pouvoir compter sur vous !!

Je vous souhaite une excellente journée
Merci beaucoup pour votre aide
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
pas de soucis
le rechargement de la ligne par le choix dans la combobox nomprenom
demo.gif
 

Pièces jointes

  • 16.Tableau_essai_onglet_Admin V patrick toulon.xlsm
    100.1 KB · Affichages: 16

TAL

XLDnaute Occasionnel
Bonjour @TAL,

C'est simple, juste un indice à modifier dans le code de la feuille "Admin"
J'en ai profité pour ajouter la coloration de la case "Etat du dossier" en rouge ou vert selon les infos saisies, et améliorer la formule en colonne AA.

Avec ces modif il est possible d'ajouter des lignes et/ou des colonnes dessus ou avant le TS "T_Admin" sans autre modif du code

P.
Bonsoir P56,

Je reviens vers vous, si vous voulez bien m'apporter ce tout petit détail.
J'ai rajouter un bouton MODIFIER
Repris le code du bouton VALIDER et copier/coller ce code dans le bouton MODIFIER.
Dans ce code j'ai supprimer la ligne "Remplir_Usf Lg_Vide" pour que les champs restent affiché après modification.
Toutes les modifications apporté fonction très bien, aussi bien dans l'userform que dans le Tableau Excel, cela permet de suivre les modifications en directe, j'ai juste un soucis sur la textbox16, qui elle, ne veut pas se mettre à jour après validation du bouton MODIFIER.

Je pense que c'est un tout petit code qu'il faut apporter mais lequel ?

Par avance MERCI
Bonne soirée à tous
 
Dernière édition:

TAL

XLDnaute Occasionnel
Bonjour P56,

J'ai peut être trouvé, en espérant que cela soit juste :
Voilà ce que j'ai rajouté au code

Private Sub CommandButton16_Click() ' MODIFIER
If Not TextBox_Nom = "" Then Sauve "T_Admin", Td
If Me.Cbx_concat_nom.ListIndex > -1 Then Remplir_Usf Me.Cbx_concat_nom.ListIndex + 2
Me.Cbx_concat_nom.List = Range("L_Nom_Vacataire").Value
Me.Cbx_concat_nom.ListIndex = -1
Me.Cbx_concat_nom.SetFocus
End Sub

Peux tu me dire si c'est juste, je ne voudrais pas que cela plante au bout d'un moment à l'utilisation

Merci beaucouup
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 271
Membres
103 168
dernier inscrit
isidore33