1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Private Sub userform_initialize()
Call MettreDateBilan
SetClass 'module de classe pour les label qui mettent en forme les textbox
Set f = Sheets("Bilan 1") 'raccourci pour appeler l'onglet Patients actifs facilement dans la suite du code
ListePatients = Application.Transpose(f.Range("B2:B" & f.[A65000].End(xlUp).Row).Value) 'On déclare ListePatients de cette manière pour que la suite du code soit homogène (ListePatients/ListePatientsbis) avec les 2 combobox, même si là on remplit ChoixPatientsActifs différemment. On se sert de ListePatients juste pour choper le n° de ligne quand on validera ou récupèrera les données.
Me.ChoixPatients.List = ListePatients
Me.ChoixPatients.Value = ""
Me.MultiPage1.Value = 0
Me.ChoixPatients.SetFocus
LabelNomNouveau.Width = 0 'rendre invisible textbox nom du nouveau patient
TextBox1.Width = 0
BoutonCréerPatient.Width = 0
End Sub
Private Sub ChoixPatientsRemplissage()
Dim Col As Long
Dim MesControles As MSForms.Control
Dim MesPages As MSForms.Page
For i = 1 To UBound(ListePatients)
If ListePatients(i) = ChoixPatients Then 'si la ligne i (de Transpose) correspond à la selection alors
LigneSrc = i + 1
With Me
For Each MesPages In .MultiPage1.Pages 'routine pour remplir les cellules avec les textboxes
MesPages.TransitionPeriod = 0 'on supprime la transition et on active les page pour permettre le setfocus sur le textbox
.MultiPage1.Value = Mid(MesPages.Name, 5) - 1
For Each MesControles In MesPages.Controls
If TypeName(MesControles) = "TextBox" Then
If MesControles.Tag <> "Résumé" And MesControles.Tag <> "Séances" Then
Col = Mid(MesControles.Name, 8) + 1 ' la colonne à rentrer en fonction du textbox
MesControles.Text = Sheets("Bilan 1").Cells(LigneSrc, Col)
MesControles.SetFocus
MesControles.CurLine = 0
End If
End If
Next MesControles
Next
OptionButton1.Value = IIf(f.Cells(LigneSrc, 1) = "Madame", True, False)
OptionButton2.Value = IIf(f.Cells(LigneSrc, 1) = "Monsieur", True, False)
End With
End If
Next i
Me.MultiPage1.Value = 0
Me.ChoixPatients.SetFocus
For Each MesPages In Me.MultiPage1.Pages
MesPages.TransitionPeriod = 500
Next
End Sub |
Partager