Sub SaveUSF(NumLigne As Integer, Nouveau As Boolean) 'macro de sauvegarde du formulaire dans la table excel
With WsSource.ListObjects(1) 'avec la table de l'onglet "Inscription"
'on enregistre les données du formulaire sur la feuille
If Nouveau Then 'Sauv Col A
.ListColumns("N° Client").DataBodyRange(NumLigne) = .ListColumns("N° Client").DataBodyRange(NumLigne - 1).Value + 1 'On met dans la cellule la valeur de Txt_N°_Client qui vaut la ligne précédent + 1==> Mettre plutot Max +1 ??
Else
.ListColumns("N° Client").DataBodyRange(NumLigne) = Me.Txt_N°_Client.Value
End If
'Renseignements Administratifs
.ListColumns("Nom Adulte").DataBodyRange(NumLigne) = Application.Proper(Txt_Nom_Adulte.Value) 'Col G
.ListColumns("N° Tel 1").DataBodyRange(NumLigne) = Txt_Tel_1.Value 'Col H
.ListColumns("N° Tel 2").DataBodyRange(NumLigne) = Txt_Tel_2.Value 'Col I
.ListColumns("Mail").DataBodyRange(NumLigne) = Txt_Mail.Value 'Col J
.ListColumns("Réservation").DataBodyRange(NumLigne) = Cbx_Pre_reservation.Value 'Col AF
.ListColumns("Etoile").DataBodyRange(NumLigne) = ToggleButtonEtoile.Value 'Col AT
'Tarifs et paiement
.ListColumns("Total Club").DataBodyRange(NumLigne) = Format(Txt_Total_Club.Value, "0 €") 'Col N
.ListColumns("Total Nat").DataBodyRange(NumLigne) = Format(Txt_Total_Nat.Value, "0 €") 'Col AG
'manque me.Text_addition_TOTAL 'pas de colonne associée = Calcul interne au formulaire (inutile??)
.ListColumns("Total").DataBodyRange(NumLigne) = Format(Txt_TOTAL.Value, "0 €") 'Col S
.ListColumns("Paiement").DataBodyRange(NumLigne) = Format(Txt_Paiement.Value, "0 €") 'Col T
'manque Txt_Doit (21) la colonne contient une formule==> il faut peut etre vérifier que le calcul correspond au calcul interne du formulaire..?
If Txt_Date_Paiement.Value = "" Then ' 'Col V
.ListColumns("Date Paiement").DataBodyRange(NumLigne) = "Inconnue" 'à remplacer par
Else
.ListColumns("Date Paiement").DataBodyRange(NumLigne) = CDate(Txt_Date_Paiement.Value)
End If
'Gestion des cases à cocher 'Col W à AC
.ListColumns("Chèque").DataBodyRange(NumLigne) = IIf(Case_chèque = True, "X", "")
.ListColumns("Ch. Vac.").DataBodyRange(NumLigne) = IIf(Case_Chèque_vacances = True, "X", "")
.ListColumns("Espèce").DataBodyRange(NumLigne) = IIf(Case_Espèce = True, "X", "")
.ListColumns("Ch Vac Connect").DataBodyRange(NumLigne) = IIf(Case_Ch_Vac_Connect = True, "X", "")
.ListColumns("Virement").DataBodyRange(NumLigne) = IIf(Case_Virement = True, "X", "")
.ListColumns("Appli Tel").DataBodyRange(NumLigne) = IIf(Case_Appli_Tel = True, "X", "")
.ListColumns("CB").DataBodyRange(NumLigne) = IIf(Case_CB = True, "X", "")
'Notes
.ListColumns("Note").DataBodyRange(NumLigne) = Txt_Notes.Value
'Parasol
.ListColumns("Nb Parasol").DataBodyRange(NumLigne) = Me.Txt_Nb_Parasol.Value
.ListColumns("Durée Parasol").DataBodyRange(NumLigne) = Me.Txt_Durée_Parasol.Value
.ListColumns("Tarif Parasol").DataBodyRange(NumLigne) = Format(Me.Txt_Tarif_Parasol.Value, "0 €")
'Siège
.ListColumns("Nb Siège").DataBodyRange(NumLigne) = Me.Txt_Nb_Siège.Value
.ListColumns("Durée Siège").DataBodyRange(NumLigne) = Me.Txt_Durée_Siège.Value
.ListColumns("Tarif Siège").DataBodyRange(NumLigne) = Format(Me.Txt_Tarif_Siège.Value, "0 €")
'1er Séjour 'Col AN à AS
.ListColumns("Total Club S1").DataBodyRange(NumLigne) = Format(Txt_Total_Club.Value, "0 €")
.ListColumns("Total Nat S1").DataBodyRange(NumLigne) = Format(Txt_Tot_Nat_S1.Value, "0 €")
.ListColumns("Paiement S1").DataBodyRange(NumLigne) = Format(Txt_Paiement_S1.Value, "0 €")
.ListColumns("Date Paiement S1").DataBodyRange(NumLigne) = Txt_Date_Paiement_S1.Value
.ListColumns("Total S1").DataBodyRange(NumLigne) = Format(Txt_TOTAL_S1.Value, "0 €")
.ListColumns("Doit S1").DataBodyRange(NumLigne) = Format(Txt_DOIT_S1.Value, "0 €")
'les 4 enfants font la meme chose
For i = 1 To 4
If Me.Controls("Txt_Nom" & i) <> "" Then 's'il y a un nom d'enfant
.ListColumns("Nom Enfant").DataBodyRange(NumLigne + i - 1) = UCase(Me.Controls("Txt_Nom" & i).Value) 'Col B
.ListColumns("Prénom Enfant").DataBodyRange(NumLigne + i - 1) = Application.Proper(Me.Controls("Txt_Prénom" & i).Value) 'Col C
.ListColumns("N° Client").DataBodyRange(NumLigne + i - 1) = .ListColumns("N° Client").DataBodyRange(NumLigne).Value 'On met dans le cellule la valeur de Txt_N°_Client qui vaut la ligne précédent + 1
.ListColumns("Date de Naissance Enfant").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("Txt_Age" & i).Value) 'Mettre Txt_Age au format date 'Col F
If Me.Controls("Txt_DatDeb" & i) <> "" Then
.ListColumns("Début Séjour").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("Txt_DatDeb" & i)) 'col K
End If
If Me.Controls("Txt_DatFin" & i) <> "" Then
.ListColumns("Fin Séjour").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("Txt_DatFin" & i)) 'Col L
End If
.ListColumns("Formule Club").DataBodyRange(NumLigne + i - 1) = Me.Controls("Cbx_Formule_Club" & i).Value 'Col M
.ListColumns("Natation").DataBodyRange(NumLigne + i - 1) = Format(Me.Controls("Txt_Natation" & i).Value, "0 €") 'Col O
.ListColumns("Tarif Nat").DataBodyRange(NumLigne + i - 1) = Format(Me.Controls("Txt_Tarif" & i).Value, "0 €") 'Col P
If Me.Controls("Txt_Ruban_Jaune" & i) <> "" Then
.ListColumns("Date Ruban Jaune").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("Txt_Ruban_Jaune" & i)) 'Col AD
End If
.ListColumns("Diplômes").DataBodyRange(NumLigne + i - 1) = Me.Controls("Txt_Diplomes" & i).Value 'Col AH
.ListColumns("Crêpe").DataBodyRange(NumLigne + i - 1) = Me.Controls("ToggleButtonCrepe" & i).Value 'manque le togglebuttoncrepe 'Col AI
.ListColumns("Age Enfant").DataBodyRange(NumLigne + i - 1) = Calcul_Age(Me.Controls("Txt_Age" & i).Value, Format(Now, "dd/mm/yyyy")) 'Col E
' Copie Séjour 1 'Col AJ à AM
If Séjour1 Then 'si la frame "Séjour1" a été chargée
If Me.Controls("TextBoxDebEnf" & i) <> "" Then
.ListColumns("Début Séjour S1").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("TextBoxDebEnf" & i).Value)
End If
If Me.Controls("TextBoxFinEnf" & i) <> "" Then
.ListColumns("Fin Séjour S1").DataBodyRange(NumLigne + i - 1) = CDate(Me.Controls("TextBoxFinEnf" & i).Value)
End If
.ListColumns("Formule Club S1").DataBodyRange(NumLigne + i - 1) = Me.Controls("Cbx_Formule_ClubS1" & i).Value
.ListColumns("Natation S1").DataBodyRange(NumLigne + i - 1) = Format(Me.Controls("Txt_NatationEnf" & i).Value, "0 €")
End If
Else
Exit For 'pour éviter de traiter un cas "hasardeux": pas d'enfant en 1, mais un enfant en 2 par exemple ==> ajouter un control pour forcer de remplir les 4 enfants DANS l'ordre sans laisser d'enfant "vide"
End If
Next i
End With
End Sub