Comment remplir différentes feuilles Excel en utilisant des formulaires de saisie de données?

J'ai besoin de créer une solution Excel pour save des données sur une famille.

  1. Le formulaire doit générer un code unique (autonumérique) pour identifier cet logging. Ici, je request les noms, les noms de famille et la date de naissance des parents. Ceci est enregistré dans une feuille (appelée Parents ).
  2. Une famille peut contenir plus d'un enfant, alors j'ai pensé que cela devait être enregistré sur une autre feuille (appelée Children ) en gardant la relation avec ses parents.

Je peux sauvegarder chaque champ différent sur sa cellule correspondante (mappée). Voici le code que j'utilise pour l'get:

 Private Sub cmdSave_Click() ActiveWorkbook.Sheets("Parents").Activate Range("B2").Select Do If IsEmpty(ActiveCell) = False Then ActiveCell.Offset(1, 0).Select End If Loop Until IsEmpty(ActiveCell) = True 'Father ActiveCell.Value = txtFatherFN.Text ActiveCell.Offset(0, 1) = txtFatherSN.Text ActiveCell.Offset(0, 2) = txtFatherLN.Text ActiveCell.Offset(0, 3) = txtFatherBirthDay.Text 'Mother ActiveCell.Offset(0, 4) = txtMotherFN.Text ActiveCell.Offset(0, 5) = txtMotherSN.Text ActiveCell.Offset(0, 6) = txtMotherLN.Text ActiveCell.Offset(0, 7) = txtMotherBirthDay.Text Range("B2").Select End Sub 

Donc, j'ai besoin d'un moyen de générer un code et de garder la relation avec les enfants. Toute aide est la bienvenue!

D'accord. Journée lente pour moi. Voici votre code écrit pour vous. J'ai également nettoyé un peu votre code original pour le rendre plus efficace.

 Option Explicit Private Sub cmdSave_Click() Dim wks As Worksheet Set wks = Sheets("Parents") 'assumes headers in First Row, ID is Column A With wks 'find next empty row Dim lngRow As Long lngRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row 'find next unique Id Dim lngID As Long lngID = Application.WorksheetFunction.Max("A:A") + 1 'id .Cells(lngRow, 1) = lngID 'Father .Cells(lngRow, 2) = txtFatherFN.Text .Cells(lngRow, 3) = txtFatherSN.Text .Cells(lngRow, 4) = txtFatherLN.Text .Cells(lngRow, 5) = txtFatherBirthDay.Text 'Mother .Cells(lngRow, 6) = txtFatherFN.Text .Cells(lngRow, 7) = txtFatherSN.Text .Cells(lngRow, 8) = txtFatherLN.Text .Cells(lngRow, 9) = txtFatherBirthDay.Text End With Set wks = Sheets("Children") With wks 'find next empty row lngRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1).Row 'need to adjust the for statement for however you collect your children in your form For Each Child In Children 'this is an example only to illustrate. You will need to change Child / Children to the objects used to collect the children info. .Cells(lngRow, 1) = Child lngRow = lngRow + 1 Next End With End Sub