Salut, j'espérais que quelqu'un puisse m'aider s'il vous plait.Génération d'une référence secondaire à partir d'un formulaire utilisateur à générer dans une seule feuille lorsque les données vont sur plusieurs feuilles
J'ai actuellement un dilemme. J'ai ici un code qui fonctionne parfaitement pour une simple saisie de données. Il suffit d'insérer les informations dans un formulaire utilisateur, puis de cliquer sur le bouton que l'information est envoyée à une feuille de maîtres (ws1), ainsi que 1 ou 2 des 3 autres feuilles dont elle a besoin en fonction des aspects spécifiques.
Le problème que j'ai ici est la feuille de maître a une référence qui est simplement le numéro suivant dans une séquence. Si les données saisies qualifient le for ws2, je souhaite qu'il génère un autre numéro de référence qui sera à nouveau le numéro suivant dans une séquence (dans cette feuille uniquement). Ci-dessous est mon code qui génère le nombre mais il apportera le nombre qui devrait être affiché sur ws2 seulement sur toutes les feuilles sur lesquelles les données seront présentes. Quelqu'un peut-il aider?
Merci,
Function GetNextId(ws As Worksheet, col As Variant) As Long
GetNextId = WorksheetFunction.Max(ws.Columns(col)) + 1
End Function
Private Sub DataEntry()
Dim mRow As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim ws4 As Worksheet
Dim Nextnum As Long
Dim Xnum As Long
Set ws1 = Worksheets("MasterData")
Set ws2 = Worksheets("X")
Set ws3 = Worksheets("A")
Set ws4 = Worksheets("C")
Nextnum = GetNextId(Sheets("MasterData"), "A")
Xnum = GetNextId(Sheets("X"), "AC")
Dim TargetWorksheets As Variant
'16 qualifying scenarios to determine where the data will be sent
Select Case True
Case ComboPD.Value = "Y" And ComboNP.Value = "Y" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 1: TargetWorksheets = Array(ws1, ws2, ws3)
Case ComboPD.Value = "Y" And ComboNP.Value = "Y" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 1: TargetWorksheets = Array(ws1, ws2, ws3)
Case ComboPD.Value = "Y" And ComboNP.Value = "Y" And txtClaimVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 1: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "Y" And ComboNP.Value = "Y" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 1: TargetWorksheets = Array(ws1, ws4)
Case ComboPD.Value = "Y" And ComboNP.Value = "N" And txtCVal.Value >= 50 And DateValue(Me.TD.Value) - DateValue(Me.TxtDD.Value) <= 3: TargetWorksheets = Array(ws1, ws2, ws3)
Case ComboPD.Value = "Y" And ComboNP.Value = "N" And txtCVal.Value >= 50 And DateValue(Me.TD.Value) - DateValue(Me.TxtDD.Value) > 3: TargetWorksheets = Array(ws1, ws2, ws4)
Case ComboPD.Value = "Y" And ComboNP.Value = "N" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 3: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "Y" And ComboNP.Value = "N" And txtCVal.Value < 50 And DateValue(Me.TD.Value) - DateValue(Me.TxtDD.Value) > 3: TargetWorksheets = Array(ws1, ws4)
Case ComboPD.Value = "N" And ComboNP.Value = "Y" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 1: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "N" And ComboNP.Value = "Y" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 1: TargetWorksheets = Array(ws1, ws4)
Case ComboPD.Value = "N" And ComboNP.Value = "Y" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 1: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "N" And ComboNP.Value = "Y" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 1: TargetWorksheets = Array(ws1, ws4)
Case ComboPD.Value = "N" And ComboNP.Value = "N" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 3: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "N" And ComboNP.Value = "N" And txtCVal.Value >= 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 3: TargetWorksheets = Array(ws1, ws4)
Case ComboPD.Value = "N" And ComboNP.Value = "N" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) <= 3: TargetWorksheets = Array(ws1, ws3)
Case ComboPD.Value = "N" And ComboNP.Value = "N" And txtCVal.Value < 50 And DateValue(Me.TxtRD.Value) - DateValue(Me.TxtDD.Value) > 1: TargetWorksheets = Array(ws1, ws4)
Case Else: TargetWorksheets = Array(ws1)
End Select
For Each ws In TargetWorksheets
'find first empty row in worksheets
mRow = ws.Cells.Find(what:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
'copy userform info data to the qualifying database sheets
ws.Cells(mRow, 1).Value = Nextnum
ws.Cells(mRow, 2).Value = Format(Date, "DD/MM/YYYY")
ws.Cells(mRow, 3).Value = Format(Time, "HH:MM:SS")
ws.Cells(mRow, 4).Value = CInt(Format(Date, "WW"))
ws.Cells(mRow, 5).Value = Format(Date, "MMM-YY")
ws.Cells(mRow, 6).Value = CInt(Format(Date, "YYYY"))
ws.Cells(mRow, 7).Value = 1
ws.Cells(mRow, 8).Value = TxtWt.Value * (1300/1000)
ws.Cells(mRow, 9).Value = Application.WorksheetFunction.VLookup(ComboBd.Value, Sheets("Lookup Vals").Range("G:H"), 2, False)
ws.Cells(mRow, 10).Value = Application.UserName
If ComboBd.Value = "Mn" Then ws.Cells(mRow, 11).Value = Application.WorksheetFunction.VLookup(ComboCompany.Value, Sheets("Lookup Vals").Range("L:N"), 2, False) Else
If ComboBd.Value = "Pur" Then ws.Cells(mRow, 11).Value = Application.WorksheetFunction.VLookup(ComboCompany.Value, Sheets("Lookup Vals").Range("P:R"), 2, False) Else
If ComboBd.Value = "Vog" Then ws.Cells(mRow, 11).Value = Application.WorksheetFunction.VLookup(ComboCom.Value, Sheets("Lookup Vals").Range("P:R"), 2, False)
ws.Cells(mRow, 12).Value = Format(Me.TxtRD.Value, "DD/MM/YYYY")
ws.Cells(mRow, 13).Value = ComboPD.Value
ws.Cells(mRow, 14).Value = ComboNP.Value
ws.Cells(mRow, 15).Value = ComboBd.Value
ws.Cells(mRow, 16).Value = ComboCom.Value
ws.Cells(mRow, 17).Value = TxtAdditional.Value
ws.Cells(mRow, 18).Value = Format(Me.TxtDD.Value, "DD/MM/YYYY")
ws.Cells(mRow, 19).Value = TxtBn.Value
ws.Cells(mRow, 20).Value = TxtFS.Value
ws.Cells(mRow, 21).Value = ComboPr.Value
ws.Cells(mRow, 22).Value = ComboIs.Value
ws.Cells(mRow, 23).Value = TxtUn.Value
ws.Cells(mRow, 24).Value = TxtWt.Value
ws.Cells(mRow, 25).Value = TxtIn.Value
ws.Cells(mRow, 26).Value = TxtDt.Value
ws.Cells(mRow, 27).Value = TxtShp.Value
ws.cells(mRow, 29).Value = Xnum
Next ws
End Sub