faire évoluer code userform choix

MarcTer

XLDnaute Nouveau
Bonjour,
j'ai ce code que j'ai récupéré sur ce site qui fonctionne très bien et que surtout j'ai réussi à adapter à mon besoin dans un fichier de type base de données.
Code:
Option Explicit

'Thierry's Macro Démo sur www.excel-Donwloads.com, August 2003
Dim WS As Worksheet   'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de ce UserForm

Dim Nom As String     'Variable pour récupérer l'ancienne valeur pour le Bouton Modif
Dim Prenom As String  'idem
Dim adresse As String 'idem
Dim CP As String      'idem
Dim Ville As String  'idem
Dim Situ_fam As String 'idem
Dim tel As String      'idem
Dim mobile As String  'idem
Dim envoi_mdph As String 'idem
Dim employeur As String      'idem
Dim type_emploi As String  'idem
Dim sit_pro As String 'idem
Dim fin_cdaph As String      'idem
Dim sexe As String      'idem
Dim date_naissance As String      'idem
Dim tx_inval As String      'idem
Dim orien As String      'idem


Const T As String = " Base de données -SAVS Adapei26-"





Private Sub CB_origine_demande_Change()

End Sub

Private Sub CommandButton_enr_quit_Click()
Unload Me
End Sub







Private Sub imprimer_Click()
 mask.PrintForm
End Sub





'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'INITIALISATION DU USERFORM============================================================================
Private Sub UserForm_Initialize()
Me.Caption = T
Ini
End Sub
Private Sub Ini()
Dim CTRL As Control 'Variable pour la collection des controls
Dim L As Integer    'Variable pour connaitre le numéro de derniere ligne
Dim i As Integer    'Variable pour connaitre incrémenter les Data

'On Vide tous les Controls
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.ComboBox Then
CTRL = ""
End If
Next CTRL


Me.CB_nom.Clear 'On vide les précédentes données


Set WS = ThisWorkbook.Sheets("bd") 'On identifie l'objet pour la feuille de travail

L = WS.Range("A3000").End(xlUp).Row    'On identifie la dernière ligne en partant du bas
    

'Pour éviter les fash d'écran pour le select ci dessous
Application.ScreenUpdating = False
    WS.Select 'On sélectionne la feuille sinon bug si elle ne l'est pas
    WS.Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess 'Le Sort

For i = 2 To L             'Boucle départ 2 (Ligne 2 de la feuille, jusqu'à dernière
With Me.CB_nom          'Avec la CB_nom
.AddItem WS.Range("A" & i) 'On ajoute dans la ComboBox toutes les valeurs, cellules après cellules
End With
Next i                     'Next pour poursuivre la boucle pour le i suivant

Application.ScreenUpdating = True
End Sub


' A l'activation on démarre le focus sur la Première Combobox
Private Sub UserForm_Activate()
Me.CB_nom.SetFocus
End Sub

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'MISE A JOUR DES VALEURS DEPUIS LA CB_nom===========================================================
Private Sub CB_nom_Click()
If Me.CB_nom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection

TB_prenom = WS.Range("B" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_naissance = WS.Range("C" & Me.CB_nom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
CB_situ_fam = WS.Range("AG" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_sexe = WS.Range("E" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_adresse = WS.Range("P" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_CP = WS.Range("Q" & Me.CB_nom.ListIndex + 2).Text
TB_ville = WS.Range("R" & Me.CB_nom.ListIndex + 2) ''On alimente les données correspondant à la ligne
TB_tel = WS.Range("S" & Me.CB_nom.ListIndex + 2).Text 'On alimente les données correspondant à la ligne
TB_mobile = WS.Range("T" & Me.CB_nom.ListIndex + 2).Text 'On alimente les données correspondant à la ligne
CB_sit_pro = WS.Range("AJ" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_employeur = WS.Range("Y" & Me.CB_nom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
CB_type_emploi = WS.Range("AK" & Me.CB_nom.ListIndex + 2) 'il ne faut pas se planter ici !! lol
CB_protec = WS.Range("U" & Me.CB_nom.ListIndex + 2) 'il ne faut pas se planter ici !! lol
CB_organisme = WS.Range("V" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_nom_tuteur = WS.Range("W" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_env_mdph = WS.Range("I" & Me.CB_nom.ListIndex + 2).Text ''On alimente les données correspondant à la ligne
TB_fin_cdaph = WS.Range("J" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_fin_as = WS.Range("K" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_N_cdaph = WS.Range("AC" & Me.CB_nom.ListIndex + 2) 'il ne faut pas se planter ici !! lol
TB_N_secu = WS.Range("Z" & Me.CB_nom.ListIndex + 2).Text 'On alimente les données correspondant à la ligne
TB_caf = WS.Range("AD" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_adresse_secu = WS.Range("AB" & Me.CB_nom.ListIndex + 2) ''On alimente les données correspondant à la ligne
TB_mut = WS.Range("AE" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_adresse_mut = WS.Range("AF" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_type_suivi = WS.Range("X" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_secteur = WS.Range("F" & Me.CB_nom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
CB_accomp = WS.Range("G" & Me.CB_nom.ListIndex + 2) 'il ne faut pas se planter ici !! lol
TB_date_entree = WS.Range("L" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_date_sortie = WS.Range("M" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_typesortie = WS.Range("O" & Me.CB_nom.ListIndex + 2) ''On alimente les données correspondant à la ligne
CB_def = WS.Range("AL" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_origine_demande = WS.Range("AH" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_age = WS.Range("D" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_orga_demande = WS.Range("AM" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_nom_demande = WS.Range("AN" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_pers_ressource = WS.Range("AQ" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_coordo_pers_ressource = WS.Range("AR" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_logt = WS.Range("AO" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_ressources = WS.Range("AV" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_ressources = WS.Range("AW" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_tx = WS.Range("AY" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
CB_orien = WS.Range("AX" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne
TB_commentaire = WS.Range("H" & Me.CB_nom.ListIndex + 2) 'On alimente les données correspondant à la ligne


'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
With Me
Nom = .CB_nom
Prenom = .TB_prenom
adresse = .TB_adresse
CP = .TB_CP

End With
End Sub


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'AJOUT DE VALEUR DU USERFORM===========================================================================
Private Sub CmdAjouter_Click()
Dim CTRL As Control 'Variable pour la collection des controls
Dim L As Integer 'Variable pour connaitre le numéro de derniere ligne vide
Dim X As Integer, i As Integer 'Variables pour faire la boucle de checking de Duplication
Dim Response As Byte
Dim Match As Byte




L = WS.Range("A65536").End(xlUp).Row + 1 ' On identifie la dernière ligne vide en partant du bas

'ici un Control de Duplication
For X = 2 To L
If CB_nom = WS.Range("A" & X) Then
Match = Match + 1: i = X
End If
Next X

'Si il y a Duplication on demande en montrant les détails de la Duplication
If Match > 0 Then
    Response = MsgBox("Duplication trouvée dans la BD pour : " & CB_nom & vbCrLf & _
                  "Nom : " & vbTab & vbTab & WS.Cells(i, 1) & vbCrLf & _
                  "Date de naissance: " & vbTab & vbTab & WS.Cells(i, 3) & vbCrLf & _
                  "Prenom : " & vbTab & vbTab & WS.Cells(i, 2) & vbCrLf & _
                  "Adresse : " & vbTab & vbTab & WS.Cells(i, 16) & vbCrLf & _
                  "C/Postal : " & vbTab & WS.Cells(i, 17) & vbCrLf & _
                  "Voulez-Vous Intégrer cet enregistrement ?", vbQuestion + vbOKCancel, T & " DUPLICATION " & CB_nom)
                  
            If Response = 1 Then
            GoTo Suite 'On suit le déroulement si réponse OK
            Else: GoTo Fin                  'Sinon On sort
            End If
End If

Suite:
'ici avec la Feuille on va faire :
With WS
    .Range("A" & L) = CB_nom             ' On écrit dans chaque colonne les valeurs des différents controls
    .Range("B" & L) = TB_prenom              ' Idem
    If IsDate(TB_naissance.Text) Then   '<<<<<============
        .Range("C" & L).NumberFormat = "dd/mm/yyyy"
        .Range("C" & L) = CDate(TB_naissance.Text)
    .Range("C" & L).NumberFormat = "dd/mm/yyyy"
    End If
    .Range("AG" & L) = CB_situ_fam             ' Idem
    .Range("E" & L) = CB_sexe                  ' Idem
    .Range("P" & L) = TB_adresse             ' Idem
    .Range("H" & L) = TB_commentaire             ' Idem
    .Range("Q" & L) = (TB_CP.Text)
    .Range("Q" & L).NumberFormat = "00 000"
    .Range("R" & L) = TB_ville             ' Idem
    .Range("S" & L) = (TB_tel.Text)
    .Range("S" & L).NumberFormat = "00 00 00 00 00"
    .Range("T" & L) = (TB_mobile.Text)
    .Range("T" & L).NumberFormat = "00 00 00 00 00"
    .Range("AJ" & L) = CB_sit_pro             ' Idem
    .Range("Y" & L) = TB_employeur            ' Idem
    .Range("AK" & L) = CB_type_emploi            ' Idem
    .Range("U" & L) = CB_protec                  ' Idem
    .Range("V" & L) = CB_organisme             ' Idem
    .Range("W" & L) = TB_nom_tuteur            ' Idem
    If IsDate(TB_env_mdph.Text) Then   '<<<<<============
        .Range("I" & L).NumberFormat = "dd/mm/yyyy"
        .Range("I" & L) = CDate(TB_env_mdph.Text)
    .Range("I" & L).NumberFormat = "dd/mm/yyyy"
     End If
     If IsDate(TB_fin_cdaph.Text) Then   '<<<<<============
        .Range("J" & L).NumberFormat = "dd/mm/yyyy"
        .Range("J" & L) = CDate(TB_fin_cdaph.Text)
    .Range("J" & L).NumberFormat = "dd/mm/yyyy"
     End If
      If IsDate(TB_fin_as.Text) Then   '<<<<<============
        .Range("K" & L).NumberFormat = "dd/mm/yyyy"
        .Range("K" & L) = CDate(TB_fin_as.Text)
    .Range("K" & L).NumberFormat = "dd/mm/yyyy"
     End If
    .Range("AC" & L) = TB_N_cdaph               ' Idem
    .Range("Z" & L) = TB_N_secu           ' Idem
    .Range("Z" & L) = (TB_N_secu.Text)
    .Range("Z" & L).NumberFormat = "0 00 00 00 000 000 (00)"
    .Range("AB" & L) = TB_adresse_secu            ' Idem
    .Range("AE" & L) = TB_mut            ' Idem
    .Range("AF" & L) = TB_adresse_mut                 ' Idem
    .Range("X" & L) = CB_type_suivi                ' Idem
    .Range("F" & L) = CB_secteur            ' Idem
    .Range("G" & L) = CB_accomp            ' Idem
       If IsDate(TB_date_entree.Text) Then   '<<<<<============
        .Range("L" & L).NumberFormat = "dd/mm/yyyy"
        .Range("L" & L) = CDate(TB_date_entree.Text)
    .Range("L" & L).NumberFormat = "dd/mm/yyyy"
     End If
      With Range("M" & L)
 
               If IsDate(TB_date_sortie.Text) Or Val(TB_date_sortie.Text) > 0 Then
                    .Value = CDate(TB_date_sortie.Text)
                    .NumberFormat = "dd/mm/yyyy"
                Else
                    .Value = TB_date_sortie.Text
               End If
 
          End With
     
    .Range("O" & L) = CB_typesortie           ' Idem
    .Range("AL" & L) = CB_def          ' Idem
    .Range("AH" & L) = CB_origine_demande               ' Idem
    .Range("AD" & L) = TB_caf
    .Range("AM" & L) = TB_orga_demande 'idem
    .Range("AN" & L) = TB_nom_demande 'idem
    .Range("AQ" & L) = TB_pers_ressource 'idem
    .Range("AR" & L) = TB_coordo_pers_ressource 'idem
    .Range("AO" & L) = CB_logt               ' Idem
     .Range("AV" & L) = CB_ressources               ' Idem
       .Range("AW" & L) = TB_ressources               ' Idem
       .Range("AY" & L) = CB_tx               ' Idem
        .Range("AX" & L) = CB_orien              ' Idem
    
  
End With
Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)

Fin:
End Sub


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'MODIFICATION DE VALEUR DU USERFORM====================================================================
Private Sub CmdModif_Click()
Dim CTRL As Control 'Variable pour la collection des controls
Dim i As Integer
Dim Response As Byte



'Si le User tente de change le nom de la ComboBox en Mode Modification
If Me.CB_nom.ListIndex = -1 Then
MsgBox "Attention comme dans toute Base de Données, le Nom est la Clef de L'enregistrement" & vbCrLf & _
       "Ce qui implique que vous ne pouvez pas Modifier cette Clef. " & vbCrLf & _
       "Par conséquent pour un changement de Nom vous devez Supprimer l'enregistrement", vbCritical, T & " Warning System Integrity"
Exit Sub 'ON sort si pas de sélection
End If


        
    



'Ici un message demandant d'accepter les changement en les listant
Response = MsgBox("Les coordonnées de " & vbCrLf & vbCrLf & _
                   "Old Nom : " & vbTab & Nom & vbCrLf & _
                   "New Nom : " & vbTab & CB_nom & vbCrLf & vbCrLf & _
                   "Old Prénom : " & vbTab & Prenom & vbCrLf & _
                   "New Prénom : " & vbTab & TB_prenom & vbCrLf & vbCrLf & _
                   "Old Adresse : " & vbTab & adresse & vbCrLf & _
                   "New Adresse : " & vbTab & TB_adresse & vbCrLf & vbCrLf & _
                   "Old C/Postal : " & vbTab & CP & vbCrLf & _
                   "New C/Postal : " & vbTab & TB_CP & vbCrLf & vbCrLf & _
                   "ancienne date : " & vbTab & date_naissance & vbCrLf & _
                   "Nouv. date : " & vbTab & TB_naissance & vbCrLf & vbCrLf & _
                   "Acceptez vous ces changements ? ", vbQuestion + vbOKCancel, T & " Modification de : " & Nom)

'Si Réponse OK on continue
If Response = 1 Then

    'ici avec la Feuille on va faire :
    With WS
     .Range("A" & Me.CB_nom.ListIndex + 2) = CB_nom 'On écrit dans chaque colonne les valeurs des différents controls
     .Range("B" & Me.CB_nom.ListIndex + 2) = TB_prenom  'Idem
      If IsDate(TB_naissance.Text) Then   '<<<<<============
        .Range("C" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
        .Range("C" & Me.CB_nom.ListIndex + 2) = CDate(TB_naissance.Text)
    .Range("C" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
    End If
     .Range("AG" & Me.CB_nom.ListIndex + 2) = CB_situ_fam 'Idem
     .Range("E" & Me.CB_nom.ListIndex + 2) = CB_sexe                  ' Idem
    .Range("P" & Me.CB_nom.ListIndex + 2) = TB_adresse             ' Idem
      .Range("H" & Me.CB_nom.ListIndex + 2) = TB_commentaire             ' Idem
   .Range("Q" & Me.CB_nom.ListIndex + 2) = (TB_CP.Text)
    .Range("Q" & Me.CB_nom.ListIndex + 2).NumberFormat = "00 000"
    .Range("R" & Me.CB_nom.ListIndex + 2) = TB_ville             ' Idem
    .Range("S" & Me.CB_nom.ListIndex + 2) = (TB_tel.Text)
     .Range("S" & Me.CB_nom.ListIndex + 2).NumberFormat = "00 00 00 00 00"
    .Range("T" & Me.CB_nom.ListIndex + 2) = (TB_mobile.Text)
     .Range("T" & Me.CB_nom.ListIndex + 2).NumberFormat = "00 00 00 00 00"
    .Range("AJ" & Me.CB_nom.ListIndex + 2) = CB_sit_pro             ' Idem
    .Range("Y" & Me.CB_nom.ListIndex + 2) = TB_employeur            ' Idem
    .Range("AK" & Me.CB_nom.ListIndex + 2) = CB_type_emploi            ' Idem
    .Range("U" & Me.CB_nom.ListIndex + 2) = CB_protec                  ' Idem
    .Range("V" & Me.CB_nom.ListIndex + 2) = CB_organisme             ' Idem
    .Range("W" & Me.CB_nom.ListIndex + 2) = TB_nom_tuteur            ' Idem
    If IsDate(TB_env_mdph.Text) Then   '<<<<<============
        .Range("I" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
        .Range("I" & Me.CB_nom.ListIndex + 2) = CDate(TB_env_mdph.Text)
         .Range("I" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
   End If
    If IsDate(TB_fin_cdaph.Text) Then   '<<<<<============
        .Range("J" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
        .Range("J" & Me.CB_nom.ListIndex + 2) = CDate(TB_fin_cdaph.Text)
    .Range("J" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
    End If
    If IsDate(TB_fin_as.Text) Then   '<<<<<============
        .Range("K" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
        .Range("K" & Me.CB_nom.ListIndex + 2) = CDate(TB_fin_as.Text)
    .Range("K" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
    End If
    .Range("AC" & Me.CB_nom.ListIndex + 2) = TB_N_cdaph                 ' Idem
    .Range("Z" & Me.CB_nom.ListIndex + 2) = (TB_N_secu.Text)
     .Range("Z" & Me.CB_nom.ListIndex + 2).NumberFormat = "0 00 00 00 000 000 (00)"
    .Range("AB" & Me.CB_nom.ListIndex + 2) = TB_adresse_secu            ' Idem
    .Range("AE" & Me.CB_nom.ListIndex + 2) = TB_mut            ' Idem
    .Range("AF" & Me.CB_nom.ListIndex + 2) = TB_adresse_mut                 ' Idem
    .Range("X" & Me.CB_nom.ListIndex + 2) = CB_type_suivi                ' Idem
    .Range("F" & Me.CB_nom.ListIndex + 2) = CB_secteur            ' Idem
    .Range("G" & Me.CB_nom.ListIndex + 2) = CB_accomp            ' Idem
    If IsDate(TB_date_entree.Text) Then   '<<<<<============
        .Range("L" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
        .Range("L" & Me.CB_nom.ListIndex + 2) = CDate(TB_date_entree.Text)
    .Range("L" & Me.CB_nom.ListIndex + 2).NumberFormat = "dd/mm/yyyy"
    End If
     With Range("M" & Me.CB_nom.ListIndex + 2)
 If IsDate(TB_date_sortie.Text) Or Val(TB_date_sortie.Text) > 0 Then
                    .Value = CDate(TB_date_sortie.Text)
                    .NumberFormat = "dd/mm/yyyy"
                Else
                    .Value = TB_date_sortie
               End If
 
          End With
    .Range("O" & Me.CB_nom.ListIndex + 2) = CB_typesortie           ' Idem
    .Range("AL" & Me.CB_nom.ListIndex + 2) = CB_def          ' Idem
    .Range("AH" & Me.CB_nom.ListIndex + 2) = CB_origine_demande               ' Idem
    .Range("AD" & Me.CB_nom.ListIndex + 2) = TB_caf
     .Range("AM" & Me.CB_nom.ListIndex + 2) = TB_orga_demande 'idem
    .Range("AN" & Me.CB_nom.ListIndex + 2) = TB_nom_demande 'idem
     .Range("AQ" & Me.CB_nom.ListIndex + 2) = TB_pers_ressource 'idem
    .Range("AR" & Me.CB_nom.ListIndex + 2) = TB_coordo_pers_ressource 'idem
     .Range("AO" & Me.CB_nom.ListIndex + 2) = CB_logt              ' Idem
      .Range("AV" & Me.CB_nom.ListIndex + 2) = CB_ressources      ' Idem
       .Range("AW" & Me.CB_nom.ListIndex + 2) = TB_ressources
       .Range("AY" & Me.CB_nom.ListIndex + 2) = CB_tx      ' Idem
       .Range("AX" & Me.CB_nom.ListIndex + 2) = CB_orien      ' Idem
    End With
'On envoie un message de confirmation
MsgBox "Opération accomplie", vbInformation, T

Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)

'Si Réponse Annulation on envoie un message et on a rien fait
Else: MsgBox "Opération annulée", vbInformation, T
End If
End Sub

'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'SUPPRESSION DE VALEUR DU USERFORM====================================================================
Private Sub CmdSupprimer_Click()
Dim CTRL As Control 'Variable pour la collection des controls
Dim i As Integer
Dim Response As Byte



'Ici un message demandant d'accepter la suppression en les listant
Response = MsgBox("Les coordonnées de " & vbCrLf & vbCrLf & _
                   "Nom : " & vbTab & vbTab & CB_nom & vbCrLf & vbCrLf & _
                   "New Prénom : " & vbTab & TB_prenom & vbCrLf & vbCrLf & _
                   "New Adresse : " & vbTab & TB_adresse & vbCrLf & vbCrLf & _
                   "New C/Postal : " & vbTab & TB_CP & vbCrLf & vbCrLf & _
                   "Vont être définitivement Supprimées ? ", vbCritical + vbOKCancel, T & " SUPPRESSION de : " & Nom)

'Si Réponse OK on continue
If Response = 1 Then

    'ici avec la Feuille on va faire :
    With WS
     .Rows(Me.CB_nom.ListIndex + 2).EntireRow.Delete
    End With
'On evoie un message de confirmation
MsgBox "Opération accomplie", vbInformation, T
Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)

'Si Réponse Annulation on envoie un message et on a rien fait
Else: MsgBox "Opération annulée", vbInformation, T
End If
End Sub

je voudrais et n'arrive pas à le faire évoluer pour qu'il ne prenne dans le combobox "Nom" (col.A nommé CB_nom) que ceux qui sont notés "présent" dans la colonne "Date de sortie" (M). l'idéal serait une case à cocher "Présent" qui permettrait de trier.
Et cerise sur le gâteau serait-il possible que les Combobox "type de suivi", "secteurs" et "accompagnateurs" permettent aussi de choisir.
dis autrement, si je choisi le secteur de st vallier, je ne veux obtenir avec le combobox "Nom" que les noms concernés par ce secteur. idem avec type de suivi et accompagnateurs.
j'espère avoir été clair. le fichier est un peu difficile à anonymiser mais si ma description n'est pas suffisante je me lance.
bonne journée @ tous,
cordialement
Marc
 

MarcTer

XLDnaute Nouveau
Re : faire évoluer code userform choix

Bonjour Pierrot,
merci de intéresser à mon problème.
j’avais vu ce site de Jacques Boisgontier mais je ne suis pas suffisamment calé en macro et n'ai pas réussi à imbriquer les deux.
bonne journée
@+
Marc