tontonboulii
XLDnaute Nouveau
Bonjour,
Je cherche à pouvoir modifier mes données via un Userform (USF_SAISIE) sur 2 feuilles différentes. Pour saisir dans ces 2 feuilles, j'utilise le code suivant qui va saisir dans une feuille appelée "Tous_les_décès" et l'autre en fonction de la valeur de ma ComboBox... Jusque là, tout va bien
Donc ensuite, lorsque je suis sur ma page "Tous_les_deces", j'affiche les infos dans un autre UserForm (USF_PATIENT) en double cliquant sur la ligne que je souhaites consulter avec le code suivant (dans ma page Tous_les_deces) : Jusque là, tout va bien aussi
En utilisant cette méthode d'affichage via double clique, j'arrive à modifier mes données sur la page "Tous_les_deces" en utilisant le code suivant :
Et c'est là que tout ce complique ... Je souhaite pouvoir modifier mes données dans la feuille "Tous_les_deces" (ça c'est bon avec le code ci-dessus)et dans la feuille du service au NOM de la bonne personne. La feuille du service dans l'UserForm d'affichage (USF_PATIENT) apparaît dans ma ComboBox nommée "Cbo_services". Donc il faudrait que mes données se modifient dans la page "Tous_les_deces" ET dans la page du service au bon Nom de patient...
Un grand MERCI d'avance à ceux qui prendront le temps de lire ceci et de m'aider. Je suis assez novice en VBA.
Bien à vous
Je cherche à pouvoir modifier mes données via un Userform (USF_SAISIE) sur 2 feuilles différentes. Pour saisir dans ces 2 feuilles, j'utilise le code suivant qui va saisir dans une feuille appelée "Tous_les_décès" et l'autre en fonction de la valeur de ma ComboBox... Jusque là, tout va bien
VB:
Private Sub btn_enregistrer_Click() 'Bouton enregistrer USF_SAISIE
'################################
'### DEBUT CHAMPS OBLIGATOIRE ###
If Me.txt_nom.Value = Empty Then
s = MsgBox("Le champ : " & Label2 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.txt_nom.SetFocus
Exit Sub
End If
If Me.txt_prenom.Value = Empty Then
s = MsgBox("Le champ : " & Label3 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.txt_prenom.SetFocus
Exit Sub
End If
If Me.txt_naissance.Value = Empty Then
s = MsgBox("Le champ : " & Label4 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.txt_naissance.SetFocus
Exit Sub
End If
If Me.Cbo_services.Value = Empty Then
s = MsgBox("Le champ : " & Label5 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.Cbo_services.SetFocus
Exit Sub
End If
If Me.txt_deces.Value = Empty Then
s = MsgBox("Le champ : " & Label6 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.txt_deces.SetFocus
Exit Sub
End If
If Me.txt_hdeces.Value = Empty Then
s = MsgBox("Le champ : " & Label7 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.txt_hdeces.SetFocus
Exit Sub
End If
If Me.Cbo_precaution.Value = Empty Then
s = MsgBox("Le champ : " & Label8 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.Cbo_precaution.SetFocus
Exit Sub
End If
If Me.Cbo_pacemaker.Value = Empty Then
s = MsgBox("Le champ : " & Label9 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.Cbo_pacemaker.SetFocus
Exit Sub
End If
If Me.Cbo_bracelet.Value = Empty Then
s = MsgBox("Le champ : " & Label10 & " est obligatoire", vbCritical, "Erreur de saisie")
Me.Cbo_bracelet.SetFocus
Exit Sub
End If
'#### FIN CHAMPS OBLIGATOIRE ####
'################################
'-------------------------------------------------------------------
'###################################
'### DEBUT SAISIE TOUS_LES_DECES ###
Dim L As Integer 'Concerne la feuille Tous_les_deces
Dim C As Integer 'Concerne les feuilles SERVICES en fonction de la combobox
If MsgBox("Confirmer l'enregistrement d'un nouveau décès ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("Tous_les_deces").Range("B65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range("B" & L).Value = IIf(Me.option_madame = True, "Madame", "Monsieur")
Range("C" & L).Value = txt_nom
Range("D" & L).Value = txt_prenom
Range("E" & L).Value = txt_naissance
Range("G" & L).Value = Cbo_services
Range("H" & L).Value = txt_deces
Range("I" & L).Value = txt_hdeces
Range("J" & L).Value = Cbo_precaution
Range("K" & L).Value = Cbo_pacemaker
Range("L" & L).Value = Cbo_bracelet
Range("M" & L).Value = txt_famille
Range("N" & L).Value = txt_effet
Range("O" & L).Value = txt_autre
Range("P" & L).Value = Cbo_pf
If USF_PATIENT.option_DSB.Value = True Then 'Sélectionne le bon optionbutton à l'affichage pour DSB & MB
Range("Q" & L).Value = "DSB"
End If
If USF_PATIENT.option_MB.Value = True Then
Range("Q" & L).Value = "MB"
End If
Range("R" & L).Value = txt_depart
Range("U" & L).Value = txt_hdepart
Range("V" & L).Value = Cbo_presentation
Range("W" & L).Value = Cbo_sepulture
Range("X" & L).Value = txt_lieu
'#### FIN SAISIE TOUS_LES_DECES ####
'###################################
'-----------------------------------------------------------------
'#############################
'### DEBUT SAISIE SERVICES ###
C = Sheets(Cbo_services.Text).Range("B65536").End(xlUp).Row + 1
Sheets(Cbo_services.Text).Range("B" & C).Value = IIf(Me.option_madame = True, "Madame", "Monsieur")
Sheets(Cbo_services.Text).Range("C" & C).Value = txt_nom
Sheets(Cbo_services.Text).Range("D" & C).Value = txt_prenom
Sheets(Cbo_services.Text).Range("E" & C).Value = txt_naissance
Sheets(Cbo_services.Text).Range("G" & C).Value = Cbo_services
Sheets(Cbo_services.Text).Range("H" & C).Value = txt_deces
Sheets(Cbo_services.Text).Range("I" & C).Value = txt_hdeces
Sheets(Cbo_services.Text).Range("J" & C).Value = Cbo_precaution
Sheets(Cbo_services.Text).Range("K" & C).Value = Cbo_pacemaker
Sheets(Cbo_services.Text).Range("L" & C).Value = Cbo_bracelet
Sheets(Cbo_services.Text).Range("M" & C).Value = txt_famille
Sheets(Cbo_services.Text).Range("N" & C).Value = txt_effet
Sheets(Cbo_services.Text).Range("O" & C).Value = txt_autre
Sheets(Cbo_services.Text).Range("P" & C).Value = Cbo_pf
If USF_PATIENT.option_DSB.Value = True Then 'Sélectionne le bon optionbutton à l'affichage pour DSB & MB
Sheets(Cbo_services.Text).Range("Q" & C).Value = "DSB"
End If
If USF_PATIENT.option_MB.Value = True Then
Sheets(Cbo_services.Text).Range("Q" & C).Value = "MB"
End If
Sheets(Cbo_services.Text).Range("R" & C).Value = txt_depart
Sheets(Cbo_services.Text).Range("U" & C).Value = txt_hdepart
Sheets(Cbo_services.Text).Range("V" & C).Value = Cbo_presentation
Sheets(Cbo_services.Text).Range("W" & C).Value = Cbo_sepulture
Sheets(Cbo_services.Text).Range("X" & C).Value = txt_lieu
MsgBox ("Le décès de ") & txt_nom & " " & txt_prenom & "" & (" a été enregistré avec succès !")
'### FIN SAISIE SERVICES ###
'###########################
End If
'Unload Me
End Sub
Donc ensuite, lorsque je suis sur ma page "Tous_les_deces", j'affiche les infos dans un autre UserForm (USF_PATIENT) en double cliquant sur la ligne que je souhaites consulter avec le code suivant (dans ma page Tous_les_deces) : Jusque là, tout va bien aussi
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Pour afficher les infos décès par double clique
i = ActiveCell.Row
If Cells(i, 2).Value = "Monsieur" Then 'Sélectionne le bon optionbutton à l'affichage pour MR & MME
USF_PATIENT.Option_MR.Value = True
End If
If Cells(i, 2).Value = "Madame" Then
USF_PATIENT.Option_MME.Value = True
End If
USF_PATIENT.txt_nom = Cells(i, 3)
USF_PATIENT.txt_prenom = Cells(i, 4)
USF_PATIENT.txt_naissance = Cells(i, 5)
USF_PATIENT.txt_age = Cells(i, 6)
USF_PATIENT.Cbo_services = Cells(i, 7)
USF_PATIENT.txt_deces = Cells(i, 8)
USF_PATIENT.txt_hdeces = Cells(i, 9)
USF_PATIENT.Cbo_precaution = Cells(i, 10)
USF_PATIENT.Cbo_pacemaker = Cells(i, 11)
USF_PATIENT.Cbo_bracelet = Cells(i, 12)
USF_PATIENT.txt_famille = Cells(i, 13)
USF_PATIENT.txt_effet = Cells(i, 14)
USF_PATIENT.txt_autre = Cells(i, 15)
USF_PATIENT.Cbo_pf = Cells(i, 16)
If Cells(i, 17).Value = "DSB" Then 'Sélectionne le bon optionbutton à l'affichage pour DSB & MB
USF_PATIENT.option_DSB.Value = True
End If
If Cells(i, 17).Value = "MB" Then
USF_PATIENT.option_MB.Value = True
End If
USF_PATIENT.txt_depart = Cells(i, 18)
USF_PATIENT.txt_hdepart = Cells(i, 21)
USF_PATIENT.Cbo_presentation = Cells(i, 22)
USF_PATIENT.Cbo_sepulture = Cells(i, 23)
USF_PATIENT.txt_lieu = Cells(i, 24)
USF_PATIENT.Caption = "Fiche décès - " & Cells(i, 3) & " " & Cells(i, 4) 'Ajoute le NOM et prénom du défunt dans la Caption de l'UserForm
USF_PATIENT.Show
End Sub
En utilisant cette méthode d'affichage via double clique, j'arrive à modifier mes données sur la page "Tous_les_deces" en utilisant le code suivant :
VB:
Private Sub btn_modifier_Click() 'bouton modifier : Sert à insérer les TextBox qui ont été modifiées
If MsgBox("Voulez-vous mettre à jour la fiche décès ?", vbYesNo, "Mise à jour fiche décès ?") = vbYes Then
i = ActiveCell.Row
Cells(i, 2) = IIf(Me.Option_MME = True, "Madame", "Monsieur")
Cells(i, 3) = txt_nom.Value
Cells(i, 4) = txt_prenom.Value
Cells(i, 5) = txt_naissance.Value
Cells(i, 6) = txt_age.Value
Cells(i, 7) = Cbo_services.Value
Cells(i, 8) = txt_deces.Value
Cells(i, 9) = txt_hdeces.Value
Cells(i, 10) = Cbo_precaution.Value
Cells(i, 11) = Cbo_pacemaker.Value
Cells(i, 12) = Cbo_bracelet.Value
Cells(i, 13) = txt_famille.Value
Cells(i, 14) = txt_effet.Value
Cells(i, 15) = txt_autre.Value
Cells(i, 16) = Cbo_pf.Value
If USF_PATIENT.option_DSB.Value = True Then 'Sélectionne le bon optionbutton à l'affichage pour DSB & MB
Cells(i, 17) = "DSB"
End If
If USF_PATIENT.option_MB.Value = True Then
Cells(i, 17) = "MB"
End If
Cells(i, 18) = txt_depart.Value
Cells(i, 19) = txt_hdepart.Value
Cells(i, 20) = Cbo_presentation.Value
Cells(i, 21) = Cbo_sepulture.Value
Cells(i, 22) = txt_lieu.Value
MsgBox ("La fiche décès de ") & txt_nom & " " & txt_prenom & " " & ("a été mise à jour avec succès !")
End If
Unload Me
End Sub
Et c'est là que tout ce complique ... Je souhaite pouvoir modifier mes données dans la feuille "Tous_les_deces" (ça c'est bon avec le code ci-dessus)et dans la feuille du service au NOM de la bonne personne. La feuille du service dans l'UserForm d'affichage (USF_PATIENT) apparaît dans ma ComboBox nommée "Cbo_services". Donc il faudrait que mes données se modifient dans la page "Tous_les_deces" ET dans la page du service au bon Nom de patient...
Un grand MERCI d'avance à ceux qui prendront le temps de lire ceci et de m'aider. Je suis assez novice en VBA.
Bien à vous