Créer un formulaire

Tiger62

XLDnaute Nouveau
Bonjour à tous

Je suis nouveau sur le forum et j’espère que vous serez indulgent avec moi :eek:

Je débute dans le monde des macros et j'ai créer un fichier, avec dedans un tableau avec plusieurs colonnes (noms, prénoms, conjoint, enfants adresse,.....)

Je voudrais créer un formulaire pour remplir plus facilement mon tableau, que toutes les colonnes se remplissent en cliquant sur un bouton du formulaire

Je vous joins un exemple de fichier et en cliquant sur l'onglet "salariès" en haut j'ai déjà creer mon questionnaire.

Le problème c'est que je n'arrive pas programmer tout le formulaire

Le seul bouton que j'ai réussi à programmer c'est celui ou j'appuie pour "quitter":mad:

J’espère que vous pourrez m'aider

Merci d'avance pour votre réponse

Tiger62
 

Pièces jointes

  • Essais.xlsm
    131.5 KB · Affichages: 115
  • Essais.xlsm
    131.5 KB · Affichages: 115
  • Essais.xlsm
    131.5 KB · Affichages: 117

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Bonjour,

Le formulaire est trop confus avec ce nombre incroyable de saisies !

néanmoins voici un exemple à compléter aprés avoir double cliqué sur le bouton editer !

Code:
Private Sub CmdEdit_Click()
Sheets("Salariès").Select
Range("A7").End(xlDown).Offset(1, 0).Select
Selection = TextBox1 ' nom
Selection.Offset(0, 1) = Txt1 ' prenom
Selection.Offset(0, 2) = TextBox2 ' date de naissance
Selection.Offset(0, 3) = Txt6 ' statut
Selection.Offset(0, 4) = TextBox25 ' coefficient
Unload Me
End Sub

Puis ajouter un focus dans le module 1 ici :
Code:
Sub Note()
Formulaire.TextBox1.SetFocus
Formulaire.Show
End Sub

Bon courage !! et bonne soirée
 
Dernière édition:

Jacou

XLDnaute Impliqué
Re : Créer un formulaire

Bonsoir le forum,

c'est vrai que le formulaire est un peu compliqué. Mais il comporte 18 données ( sur 31) qui concernent les enfants (en passant il vaudrait mieux donner un prénom2 à l'enfant1 et un prénom3 à l'enfant3 plutôt que le prénom1).

Peut-être serait-il plus judicieux de faire un formulaire spécifique pour les enfants en demandant dans le formulaire principal le nombre d'enfants.

La macro pour le bouton "quitter" serait mieux dans le code du formulaire que dans le module 1 (elle est d'ailleurs présente dans les deux feuilles de codes mais avec des instructions différentes

Bon courage; il y a du travail ! :)
Jacou
 

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Un exemple supplémentaire avec deux listes déroulantes dans Statut et Contrat que l'on pourrait faire pour d'autres saisies !

Code:
Private Sub CmdEdit_Click()
Sheets("Salariès").Select
Range("A7").End(xlDown).Offset(1, 0).Select
Selection = (Formulaire.TextBox1) ' nom
Selection.Offset(0, 1) = (Formulaire.Txt1) ' prenom
Selection.Offset(0, 2) = CDate(Formulaire.TextBox2) ' date de naissance
Selection.Offset(0, 3) = Formulaire.CmbListeStatut1.Value ' statut
Selection.Offset(0, 4) = (Formulaire.TextBox25) ' coefficient
Selection.Offset(0, 5) = Formulaire.CmbListeContrat.Value ' type de contrat
Unload Me
End Sub

Code:
Sub Note()
Dim vCellule As Object
Formulaire.TextBox1.SetFocus
For Each vCellule In Sheets("Param").Range("Statut1")
 If vCellule = "" Then Exit For
  Formulaire.CmbListeStatut1.AddItem vCellule.Value
Next
For Each vCellule In Sheets("Param").Range("Type_de_contrat")
 If vCellule = "" Then Exit For
  Formulaire.CmbListeContrat.AddItem vCellule.Value
Next
Formulaire.CmbListeStatut1.ListIndex = 0
Formulaire.CmbListeContrat.ListIndex = 0
Formulaire.Show
End Sub
 

Pièces jointes

  • Liste_du_Personnel.xls
    377 KB · Affichages: 90
Dernière édition:

Tiger62

XLDnaute Nouveau
Re : Créer un formulaire

Bonsoir tout le monde :rolleyes:

j'ai pris un peu d'idée à droite et à gauche. J'ai refait mon formulaire complètement en 3 parties comme me le suggérait Jacou, à juste titre (Je trouve mon formulaire beaucoup plus lisible maintenant). Ensuite j'essaie, avec pas mal de difficultés je l'avoue, d'avancer.

J'ai réussi, à partir du formulaire, à éditer une nouvelle ligne complète .:eek:

Mais je n'arrive pas à modifier une ligne existante avec mon formulaire ou en supprimer une. :mad:

Aussi, une question, lorsque j'ajoute une ligne, est ce qu'il est possible qu'il y est un tri automatique (par ordre alphabétique de la première colonne du tableau)?

Je vous remercie de vos réponses et vos précieux conseils

Tiger62
 

Pièces jointes

  • Essais 2.xlsm
    156.4 KB · Affichages: 68
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Bonsoir,

Pour le tri :

Tu peux faire comme j'ai fait en incorporant la macro crée avec l'enregistreur ( j'ai essayé de faire plus simple sans résultat) après la ligne concernée :

Code:
ActiveWorkbook.Worksheets("Salariés").ListObjects("Tableau150").Sort.SortFields _
        .Add Key:=Range("Tableau150[Noms]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Salariés").ListObjects("Tableau150").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

NOTA : toutes les colonnes sont concernées ( logique )

Bonne soirée !
 

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Bonjour,

Petit soucis dû à ta mise en page concernant la première ligne (8) à incorporée ! il faut :

Code:
Private Sub CmbEditer_Click()
Sheets("Salariés").Select
If Range("A8") = "" Then
Range("A8").Select
Else
Range("A7").End(xlDown).Offset(1, 0).Select
End If
Selection = (Formulaire.TNew1) ' nom

' Et la suite

Quant à l'oublie d'une saisie il peut y avoir :

Code:
Private Sub CmbEditer_Click()
Sheets("Salariés").Select
Dim vMessageErreur As String
Dim Message As String
Dim vErreur As Integer
vMessageErreur = ""
vErreur = 0
If Formulaire.TNew1 = "" Then
vErreur = 1
vMessageErreur = vMessage + Chr(10) + "le Nom"
End If
If Formulaire.TNew2 = "" Then
vErreur = 1
vMessageErreur = vMessage + Chr(10) + "le Prénom"
End If
If Formulaire.TNew3 = "" Then
vErreur = 1
vMessageErreur = vMessage + Chr(10) + "la Date de naissance"
End If
' et la suite

If vErreur = 1 Then
 MsgBox "Vous avez oublié" + vMessageErreur, , "Erreur"
 Exit Sub
End If
' mettre le début ci-dessus
 
If Range("A8") = "" Then
Range("A8").Select
Else
Range("A7").End(xlDown).Offset(1, 0).Select
End If
Selection = (Formulaire.TNew1) ' nom

de plus il y a un site parmi tant d'autre sur les formulaires :

Applications excel - Cours VBA -



Bonne journée
 
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Bonjour Jean Marcel,

Ton Fichier convient le mieux, mais en l'essayant de l'adapter (je m'excuse de cette audace), à la nouvelle boite de dialogue de Tiger, il y a un bug sur l'ouverture du formulaire ( peut-être cela a rebuté Tiger )

bonne soirée !
 

Pièces jointes

  • Liste_du_personnel.xlsm
    170.4 KB · Affichages: 62
  • Liste_du_personnel.xlsm
    170.4 KB · Affichages: 66
  • Liste_du_personnel.xlsm
    170.4 KB · Affichages: 70

patoq

XLDnaute Occasionnel
Re : Créer un formulaire

Bonsoir tout le monde,

L'erreur provient du fait que les combobox alimentés à l'initialisation de l'userform le sont simultanément par AddItem et par RowSource.

Supprimes RowSource ça devrait allez mieux.

Cdt
Patrice
 

JBARBE

XLDnaute Barbatruc
Re : Créer un formulaire

Merci pour ta réponse Jean Marcel !!

Il y a des dysfonctionnements simple que j'ai pu résoudre, mais j'avoue que je sèche sur ta macro ( mon enseignement se limite à un ancien bouquin de 2003, mais j'apprends beaucoup ici )

De plus, la première saisie démarre maintenant à la ligne 8 au lieu de 9 !!

Mais, je pense que tiger à été confronté au même problème que moi et a choisi mes macros simples !

bonne soirée !
 
Dernière édition:

Tiger62

XLDnaute Nouveau
Re : Créer un formulaire

Bonjour tout le monde

Jean Marcel, je te remercie pour ton fichier il est parfait.

Je n'ai pas gardé ton premier fichier car (c'est de ma faute) mon formulaire était compliqué et trop illisible (comme le disait Jacou).

Sur ton fichier, il y a des petits bugs que je n'arrive pas à changer.

Lorsque je modifie ou j'ajoute, le formulaire ne me met pas le prénom, la date de naissance du conjoint et le nom du 3ème enfant

Aussi lorsque je clique sur l'onglet du formulaire , la boite à outils s'affiche.

Peux tu me renseigner ?

Bon dimanche et encore merci

Tiger
 
Dernière édition:

Discussions similaires

Réponses
21
Affichages
309
Réponses
17
Affichages
668
Réponses
5
Affichages
363

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD