Bonjour à Toutes et à Tous,
SVP, si quelqu’un peut m'aide je serai reconnaissant .
je viens de fini la réalisation de cette programme comme vous voyez dans les photos , c'est un USERFORM qui nous permet de saisir les arrêts techniques des lignes de production. donc quand on ouvre le programme le premier UserForm (UsrFrm2) s'affiche (Photo N°1).
et là tu peux cliquer sur bouton LIGNES ( en bleu) pour que s'affiche le 2éme USERFORM (UsrFrm1) (Photo N°2) avec une multi-pages qui comport des boutons sous forme des lignes de production donc des machines.
Le code que j'ai utilisé dans le bouton où je clique est :
Private Sub AA1B_Click()
UsrFrm2.TxtRes.Value = "ACHRAF"
UsrFrm2.TxtLig.Value = "A1"
UsrFrm2.TxtMac.Value = "BOUCHONNEUSE"
UsrFrm2.TxtMat.Value = "M2220"
UsrFrm1.Hide
UsrFrm2.Show
End Sub
Quand je clique sur n'import quelle bouton (Machine), le programme m'envoyer directement vers "UsrFrm2" Avec l'écriture automatique dans les zones de texte cadrées en rouge dans la photo N°3
ici l'utilisateur peut remplir le reste des cases, mais le PROBLEME ici quand il click sur le bouton ENREGISTRER (en vert)l'excel affiche un erreur ( la méthode "value" de l'objet "range" a échoué ) et sur place il commence à cessé. comme vous voyez sur la photo N° 4
Voici le code que j'ai utilisé pour le bouton ENREGISTRER :
Private Sub BtnEnr_Click()
Dim LastRow As Long
LastRow = WorksheetFunction.CountA(Sheets("B").Range("B:B"))
UsrFrm2.ListBox.RowSource = ""
If UsrFrm2.TxtRes.Value = "" Or UsrFrm2.TxtLig.Value = "" Or UsrFrm2.TxtMac.Value = "" Or UsrFrm2.TxtMat.Value = "" Or UsrFrm2.TxtDat.Value = "" Or UsrFrm2.TxtPro.Value = "" Or UsrFrm2.TxtInt.Value = "" Or UsrFrm2.TxtRem.Value = "" Or Me.TxtDur.Value = "" Or Me.TxtPdr.Value = "" Or (UsrFrm2.OptCor.Value = False And UsrFrm2.OptPre.Value = False And UsrFrm2.OptAme.Value = False) Then
MsgBox "MERCI DE REMPLIR TOUTES LES CASES !!"
Else
Sheets("B").Cells(LastRow + 1, 2).Value = UsrFrm2.TxtDat.Value
Sheets("B").Cells(LastRow + 1, 3).Value = UsrFrm2.TxtRes.Value
Sheets("B").Cells(LastRow + 1, 4).Value = UsrFrm2.TxtLig.Value
Sheets("B").Cells(LastRow + 1, 5).Value = UsrFrm2.TxtMac.Value
Sheets("B").Cells(LastRow + 1, 6).Value = UsrFrm2.TxtMat.Value
Sheets("B").Cells(LastRow + 1, 7).Value = UsrFrm2.TxtPro.Value
Sheets("B").Cells(LastRow + 1, 8).Value = UsrFrm2.TxtInt.Value
Sheets("B").Cells(LastRow + 1, 9).Value = UsrFrm2.TxtDur.Value
Sheets("B").Cells(LastRow + 1, 10).Value = UsrFrm2.TxtPdr.Value
If UsrFrm2.OptCor.Value = True Then
Sheets("B").Cells(LastRow + 1, 11).Value = "CORRECTIVE"
ElseIf UsrFrm2.OptPre.Value = True Then
Sheets("B").Cells(LastRow + 1, 11).Value = "PREVENTIVE"
Else
Sheets("B").Cells(LastRow + 1, 11).Value = "AMELIORATIVE"
End If
Sheets("B").Cells(LastRow + 1, 12).Value = UsrFrm2.TxtRem.Value
UsrFrm2.TxtRes.Value = ""
UsrFrm2.TxtLig.Value = ""
UsrFrm2.TxtMac.Value = ""
UsrFrm2.TxtMat.Value = ""
UsrFrm2.TxtDat.Value = ""
UsrFrm2.TxtInt.Value = ""
UsrFrm2.TxtPro.Value = ""
UsrFrm2.TxtInt.Value = ""
UsrFrm2.TxtRem.Value = ""
UsrFrm2.TxtDur.Value = ""
UsrFrm2.TxtPdr.Value = ""
UsrFrm2.OptCor.Value = False
UsrFrm2.OptPre.Value = False
UsrFrm2.OptAme.Value = False
End If
UsrFrm2.ListBox.RowSource = "Tble"
ActiveWorkbook.Save
End Sub
Merci en avance pour votre collaboration et attention.
NB : SVP, si le message a besoin de plus de clarification, nécessiter pas à demander pour que je reçoit la bonne solution
Très bon week end