Exercice N° 3 - Partie 3 (Ajouter depuis un USF)

Re,

C’est pareil pour cette citation

TBox_DNais = TBox_DNais &amp ;"/"

ce amp ou l’avez-vous trouver et Quesque c’la veut dire tous ca il faut le savoir

Alors lorsque vous dite @mdo100 que votre matière grise est troué alors la mienne c’est un tamis pour

agrégats

cdlt

@kiss6

@kiss6,

amp n’existe pas, c’est du a un mauvais copier / coller quand j’ai répondu.

Il faut lire:

Private Sub TBox_DNais_Change() 'S?lection N? le
    'Mettre un Slash de s?paration style 01/01/2018
    Slash = Len(TBox_DNais)
     If Slash = 2 Or Slash = 5 Then
     TBox_DNais = TBox_DNais & "/"
     End If
End Sub

@+

Salut @Mimimathy, @kiss6, :wink:

@Mimimathy,
Ça y est enfin, ma liste sans doublon dans “Cbox_Civilite” de la feuille “Clients” fonctionne.
En fait cela venait de la priorité dans “Private Sub Btn_USF_Click()” j’appelais en premier “USFClients.Show 0” et aprés “Sheets(“Clients”).Activate”

Il fallait faire l’inverse:

'Appel formulaire Nouveau Client
Private Sub Btn_USF_Click()
Sheets("Clients").Activate
USFClients.Show 0
End Sub

Une bonne nuit de repos a éclairée un nouveau jour de réflexion, voilà ce post, était juste pour partager cette bonne nouvelle. :yum:

Maintenant, je vais voir pour “TBox_DNais”, mais ça va pas être de la tarte.

@+

1 « J'aime »

Salut le “futur PRO” du VBA

Cela me réconforte de voir des inscrits comme toi, Kiss, Nono, de suivre les exercices, plutôt pas pour du débutant, mais comme dans les solutions, il y a quand même pas mal de commentaires pour suivre avec plusieurs façons de procéder, j’aurais pensé que les autres inscrits qui demandait des formations VBA serait de la partie,
Apparemment, il n’ont plus de PC, ou sont en hibernations :wink:

C’est vrai que la difference entre EXCEL pur et VBA n’est pas systématique, mais si tu as de bonne connaissance en EXCEL, le VBA au bout d’un moment coule tout seul.
Je ne suis pas un Pro, moi non plus, mais quand on veut aboutir à la solution, GOOGLE est bien fourni, le but après est de bien comprendre le pourquoi du comment avec tel ou tel fonction, et surtout penser à la progression du programme. Sur Excel, tu ajoutes des colonnes ou lignes pour aboutir au résultat, en VBA, il faut pouvoir justement mettre des conditions sur chaque condition pour obtenir le bon résultat, qui entraine des autres conditions, d’où le fait de créer un cahier des charges avec les ouvertures et fermetures :wink:

1 « J'aime »

Re,

Bonjour @Mimimathy , @mdo100

Excuser moi mais je ne comprend pas ce que @mdo100 a posté

Il faut mettre dans le code VBA de la « Cbox_Civilite »

Mais il y a déjà un code VBA ou faut-il le mettre en dessous :thinking:

Cdlt

@kiss6

Salut @kiss6, :wink:

Dans la feuille “Accueil” commande des 2 boutons

'Appel liste des Clients
Private Sub Btn_Clients_Click()
Sheets("Clients").Activate
End Sub

'Appel formulaire Nouveau Client
Private Sub Btn_USF_Click()
Sheets("Clients").Activate
USFClients.Show 0
End Sub

Dans la feuille “Clients” commande du bouton

'Appel la page d'accueil
Private Sub Btn_Accueil_Click()
'Page d'accueil appel?e
Sheets("Accueil").Activate
End Sub

Le code de USFClients

Option Explicit
'D?claration des variables pour tout le module
Dim Lig%, Dl%, i%
Dim Espace$
Dim Slash As Byte
Dim Civ As Range
Private Sub Btn_Quitter_Click()
  'Ferme l'USF
  Unload Me
End Sub
Private Sub Cbox_Civilite_Change() 'S?lection civilit?
    '?criture en nom propre
    Cbox_Civilite = Application.Proper(Cbox_Civilite.Value)
End Sub
Private Sub TBox_Nom_Change() 'S?lection NOM
    '?criture en majuscule
    TBox_Nom.Value = UCase(TBox_Nom.Value)
End Sub
Private Sub TBox_Prenom_Change() 'S?lection Pr?nom
    '?criture en nom propre
    TBox_Prenom.Value = Application.Proper(TBox_Prenom.Value)
End Sub
Private Sub TBox_DNais_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection N? le
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_DNais_Change() 'S?lection N? le
    'Mettre un Slash de s?paration style 01/01/2018
    Slash = Len(TBox_DNais)
     If Slash = 2 Or Slash = 5 Then TBox_DNais = TBox_DNais & "/"
End Sub

Private Sub TBox_Adresse_Change() 'S?lection adresse
    '?criture en nom propre
    TBox_Adresse.Value = Application.Proper(TBox_Adresse.Value)
End Sub
Private Sub TBox_CP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection code postale
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_Ville_Change() 'S?lection Ville
    '?criture en majuscule
    TBox_Ville.Value = UCase(TBox_Ville.Value)
End Sub
Private Sub TBox_TelFixe_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone fixe
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelFixe_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelFixe.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelFixe.Text = Espace
End Sub
Private Sub TBox_TelPort_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone portable
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelPort_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelPort.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelPort.Text = Espace
End Sub
Private Sub TBox_Mail_Change() 'S?lection mail
    '?criture en minuscule
    TBox_Mail.Value = LCase(TBox_Mail.Value)
End Sub


Private Sub UserForm_Initialize()
  
  'Liste sans doublons colonne A
  
   For Each Civ In Worksheets("Clients") _
   .Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
     Me.Cbox_Civilite = Civ
      If Me.Cbox_Civilite.ListIndex = -1 Then Me.Cbox_Civilite.AddItem Civ
    Next Civ
  
  Me.Cbox_Civilite.ListIndex = -1 'Pour mettre le Combo au d?but c?d vide
     
  'Max 5 chiffres dans code postale
  With TBox_CP
   .MaxLength = 5
   .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone fixe + 4 espaces
  With TBox_TelFixe
  .MaxLength = 14
  .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone portable + 4 espaces
  With TBox_TelPort
  .MaxLength = 14
  .Value = ""
  End With
  'Max 8 chiffres dans N? le + 2 Slashs
  With TBox_DNais
  .MaxLength = 10
  .Value = ""
  End With
End Sub

Private Sub Btn_Validation_Click() 'Appui sur le bouton Ajouter
 With Feuil1 'Dans la feuille Clients
  '?crire les donn?es dans la derni?re ligne non vide ? partir de la colonne A
  Dl = Range("A" & Rows.Count).End(xlUp).Row + 1
  
   .Cells(Dl, 1).Value = Me.Cbox_Civilite.Value
   .Cells(Dl, 2).Value = Me.TBox_Nom.Value
   .Cells(Dl, 3).Value = Me.TBox_Prenom.Value
   .Cells(Dl, 4).Value = Me.TBox_DNais.Value
   .Cells(Dl, 5).Value = Me.TBox_Adresse.Value
   .Cells(Dl, 6).Value = Me.TBox_CP.Value
   .Cells(Dl, 7).Value = Me.TBox_Ville.Value
   .Cells(Dl, 8).Value = Me.TBox_TelFixe.Value
   .Cells(Dl, 9).Value = Me.TBox_TelPort.Value
   .Cells(Dl, 10).Value = Me.TBox_Mail.Value
   
 'Ferme l'USF
  Unload Me
 End With
End Sub

Voila ou j’en suis actuellement, je n’ais pas fait grand chose depuis ce matin.

@+

Bonjour Kiss
Une macro, tu là place ou tu veux dans un module, dessus dessous, n’a rien à voir, c’est l’instruction première qui compte

la cette macro sert à ouvrir un USF, activer la feuille Clients et ouvrir l’userform :wink:

Re,

Quand vous placez une macro dans un post, faites comme ceci

vb" la macro "

Càd touche AltGR et la touche 7è` du clavier pour avoir 3 espèces de virgule à l’envers, suivi de “vb

la macro

et à la fin touche AltGR et la touche 7è` du clavier pour avoir 3 espèces de virgule à l’envers

La macro sera propre est sans caractères farfelus :yum:

Re @Mimimathy,

J’avais déjà tenté le coup, sans y parvenir.
J’ai modifié la macro USFClients est-ce mieux comme ça ?
Si c’est la cas, je tâcherai d’y penser à l’avenir.

@+

Bonjour à toutes et tous,
Salut @Mimimathy, :wink:

Alors voilà, j’ai avancer un peu:

J’ai fais fonctionner les “optionbutton” pour remplir “Votre Choix” et les différents ComboBox / Textbox du Formulaire.

Chaque action sur les “optionbutton” change aussi le nom du “CommandButton” ==> “Btn_Validation” :yum:

Quand “Btn_Validation” est = a “Ajouter” alors on peu ajouter des lignes.

Option Explicit
'D?claration des variables pour tout le module
Dim FClients As Worksheet
Dim Dl%
Dim Espace$
Dim Slash As Byte
Dim Civ As Range
Private Sub Btn_Quitter_Click()
  'Ferme l'USF
  Unload Me
End Sub
Private Sub Cbox_Civilite_Change() 'S?lection civilit?
    '?criture en nom propre
    Cbox_Civilite = Application.Proper(Cbox_Civilite.Value)
End Sub
Private Sub CBox_NomComplet_Click()
 'Remplir les TextBox avec Votre Choix
 If (OptB_Modifier = True And Btn_Validation.Caption = "Modifier") _
 Or (OptB_Supprimer = True And Btn_Validation.Caption = "Supprimer") Then
    Dl = Range("A" & Rows.Count).End(xlUp).Row
    Set FClients = Sheets("Clients")
     Dl = Me.CBox_NomComplet.ListIndex + 3
        Me.Cbox_Civilite = FClients.Cells(Dl, 1)
        Me.TBox_Nom = FClients.Cells(Dl, 2)
        Me.TBox_Prenom = FClients.Cells(Dl, 3)
        Me.TBox_DNais = FClients.Cells(Dl, 4)
        Me.TBox_Adresse = FClients.Cells(Dl, 5)
        Me.TBox_CP = FClients.Cells(Dl, 6)
        Me.TBox_Ville = FClients.Cells(Dl, 7)
        Me.TBox_TelFixe = FClients.Cells(Dl, 8)
        Me.TBox_TelPort = FClients.Cells(Dl, 9)
        Me.TBox_Mail = FClients.Cells(Dl, 10)
        Me.CBox_NomComplet = ""
 End If
End Sub

Private Sub OptB_Ajouter_Click()
 'Clique Ajouter, alors change le nom du bouton
 If Btn_Validation.Caption = "Modifier" Or Btn_Validation.Caption = "Supprimer" Then
 Btn_Validation.Caption = "Ajouter"
        'Clique ajouter, alors vide les ComboBox et les TextBox
        Me.CBox_NomComplet = ""
        Me.Cbox_Civilite = ""
        Me.TBox_Nom = ""
        Me.TBox_Prenom = ""
        Me.TBox_DNais = ""
        Me.TBox_Adresse = ""
        Me.TBox_CP = ""
        Me.TBox_Ville = ""
        Me.TBox_TelFixe = ""
        Me.TBox_TelPort = ""
        Me.TBox_Mail = ""
 End If
End Sub
Private Sub OptB_Modifier_Click()
 'Clique sur Modifier alors RAZ Votre Choix
 Me.CBox_NomComplet.Value = ""
    'Clique Modifier, alors change le nom du bouton
    If Btn_Validation.Caption = "Ajouter" Or Btn_Validation.Caption = "Supprimer" Then
        Btn_Validation.Caption = "Modifier"
         'Clique Modifier, alors vide les ComboBox et les TextBox
         Me.CBox_NomComplet = ""
         Me.Cbox_Civilite = ""
         Me.TBox_Nom = ""
         Me.TBox_Prenom = ""
         Me.TBox_DNais = ""
         Me.TBox_Adresse = ""
         Me.TBox_CP = ""
         Me.TBox_Ville = ""
         Me.TBox_TelFixe = ""
         Me.TBox_TelPort = ""
         Me.TBox_Mail = ""
    End If
End Sub
Private Sub OptB_Supprimer_Click()
    'Clique Modifier, alors change le nom du bouton
    If Btn_Validation.Caption = "Ajouter" Or Btn_Validation.Caption = "Modifier" Then
        Btn_Validation.Caption = "Supprimer"
         'Clique Supprimer, alors vide les ComboBox et les TextBox
         Me.CBox_NomComplet = ""
         Me.Cbox_Civilite = ""
         Me.TBox_Nom = ""
         Me.TBox_Prenom = ""
         Me.TBox_DNais = ""
         Me.TBox_Adresse = ""
         Me.TBox_CP = ""
         Me.TBox_Ville = ""
         Me.TBox_TelFixe = ""
         Me.TBox_TelPort = ""
         Me.TBox_Mail = ""
    End If
End Sub
Private Sub TBox_Nom_Change() 'S?lection NOM
    '?criture en majuscule
    TBox_Nom.Value = UCase(TBox_Nom.Value)
End Sub
Private Sub TBox_Prenom_Change() 'S?lection Pr?nom
    '?criture en nom propre
    TBox_Prenom.Value = Application.Proper(TBox_Prenom.Value)
End Sub
Private Sub TBox_DNais_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection N? le
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_DNais_Change() 'S?lection N? le
    'Mettre un Slash de s?paration style 01/01/2018
    Slash = Len(TBox_DNais)
     If Slash = 2 Or Slash = 5 Then TBox_DNais = TBox_DNais & "/"
End Sub
Private Sub TBox_Adresse_Change() 'S?lection adresse
    '?criture en nom propre
    TBox_Adresse.Value = Application.Proper(TBox_Adresse.Value)
End Sub
Private Sub TBox_CP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection code postale
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_Ville_Change() 'S?lection Ville
    '?criture en majuscule
    TBox_Ville.Value = UCase(TBox_Ville.Value)
End Sub
Private Sub TBox_TelFixe_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone fixe
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelFixe_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelFixe.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelFixe.Text = Espace
End Sub
Private Sub TBox_TelPort_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone portable
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelPort_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelPort.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelPort.Text = Espace
End Sub
Private Sub TBox_Mail_Change() 'S?lection mail
    '?criture en minuscule
    TBox_Mail.Value = LCase(TBox_Mail.Value)
End Sub
Private Sub UserForm_Initialize()
 'Btn_Validation = False
   Me.CBox_NomComplet = ""
  'Liste Nom Pr?nom
   Me.CBox_NomComplet.ColumnCount = 3
   Me.CBox_NomComplet.RowSource = "B3:C" & [C65000].End(xlUp).Row

  'Liste sans doublons colonne A
    For Each Civ In Worksheets("Clients") _
   .Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
     Me.Cbox_Civilite = Civ
      If Me.Cbox_Civilite.ListIndex = -1 Then Me.Cbox_Civilite.AddItem Civ
    Next Civ
  
  Me.Cbox_Civilite.ListIndex = -1 'Pour mettre le Combo au d?but c?d vide
     
  'Max 5 chiffres dans code postale
  With TBox_CP
   .MaxLength = 5
   .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone fixe + 4 espaces
  With TBox_TelFixe
  .MaxLength = 14
  .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone portable + 4 espaces
  With TBox_TelPort
  .MaxLength = 14
  .Value = ""
  End With
  'Max 8 chiffres dans N? le + 2 Slashs
  With TBox_DNais
  .MaxLength = 10
  .Value = ""
  End With
End Sub
Private Sub Btn_Validation_Click() 'Appui sur le bouton Ajouter
 With Feuil1 'Dans la feuille Clients
 If Btn_Validation.Caption = "Ajouter" Then 'Si le bouton s'appel Ajouter alors
  '?crire les donn?es dans la derni?re ligne non vide ? partir de la colonne A
  Dl = Range("A" & Rows.Count).End(xlUp).Row + 1
  
   .Cells(Dl, 1).Value = Me.Cbox_Civilite.Value
   .Cells(Dl, 2).Value = Me.TBox_Nom.Value
   .Cells(Dl, 3).Value = Me.TBox_Prenom.Value
   .Cells(Dl, 4).Value = Me.TBox_DNais.Value
   .Cells(Dl, 5).Value = Me.TBox_Adresse.Value
   .Cells(Dl, 6).Value = Me.TBox_CP.Value
   .Cells(Dl, 7).Value = Me.TBox_Ville.Value
   .Cells(Dl, 8).Value = Me.TBox_TelFixe.Value
   .Cells(Dl, 9).Value = Me.TBox_TelPort.Value
   .Cells(Dl, 10).Value = Me.TBox_Mail.Value
 End If
 'Ferme l'USF
  Unload Me
 End With
End Sub

Maintenant, j’aimerai que si le “Btn_Validation” est = a “Modifier” alors modifier la ligne concernée.

Pareil pour “Btn_Validation” est = a “Supprimer” alors supprimer la ligne concernée.

Un p’tit coup de main ne serai pas de trop, si tu le veux bien afin d’avancer un peu plus.

Autre chose, je n’ai pas su avancer pour la “date valide”.

Je mets le fichier ICI==> Exercice N° 3 Partie Ajouter V2 Essai.xlsm (1,2 Mo) afin de visualiser le travail fait.

@+

Salut MDO

Je regarderai cela en fin AM, là, un peu nase (3:30 du matin)

1 « J'aime »

Re @Mimimathy,

Pas mieux, 4h15 :waning_crescent_moon: quelle galère de ne pas dormir correctement.

@+

Salut MDO

Bon c’est déjà un bon avancement :wink:

Alors n’oublies pas les sécurités pour la validation, à savoir si la civilité, ou le nom, ou le prénom, n’est pas renseigné(e), message d’erreur (Vu dans les exercices antérieurs)
Ensuite, il faut que l’option Ajouter soit coché à l’ouverture (Vu dans les exercices antérieurs)

pour Date de naissance

Private Sub TBox_DNais_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Not IsDate(Me.TBox_DNais) Then
    MsgBox "La date saisie n'est pas valide !", vbCritical, "Erreur de Saisie"
     Cancel = True
  Else
    If CDate(Me.TBox_DNais.Value) > Date Then
      MsgBox "Date de naissance supérieur à Aujourd'hui !", vbCritical, "Erreur de Saisie"
      Cancel = True
    End If
  End If
End Sub

Je te laisse décoder.

Ensuite ne cherche pas à faire Modifier ou Supprimer, car quand on Ajoute, un Nom et un Prénom, après validation du Prénom, il faut vérifier que la saisie n’existe pas !!
Au problème :stuck_out_tongue_winking_eye:

Re,

Bonsoir @Mimimathy , @mdo100

Pourriez-vous mettre le classeur en PJ comme la semaine je n’ais pas le temp le soir si je peut faire un saut

vite fais sur le forum je le fais

Et la je vois que @mdo100 a très bien avancé :+1::clap:

En plus j’aurais plus de facilité a comprendre ce que font les macros

D’avance MERCI c’est dommage que je ne peut suivre et encore BRAVO @mdo100 :muscle: :+1: :clap:

Comme disais @Mimimathy l’élevé vas dépasser le maitre

Cdlt

@kiss6

Bonsoir @kiss6, :wink:

Prfff, des excuses, des excuses :stuck_out_tongue_winking_eye: fais comme nous, lève toi vers 3h00 du matin :upside_down_face:

Je blague, j’espère que tu as le sens de l’humour :joy:

Bon je te mets le dernier classeur a cette heure avec les dernières modifs:

Clique sur les boutons « Modifier », « Supprimer », « Ajouter » et regarde le bouton « Ajouter » ainsi que « Votre Choix », j’suis pas peu fier :yum:

Je ne mets pas la macro, je pense que tu sais y accéder.

Le classeur ICI==> Exercice N° 3 Partie Ajouter Pour Kiss6.xlsm (1,2 Mo)

Bon, maintenant c’est repos :zzz:, la journée a été longue :fearful:.

Cordialement.

Re, @mdo100

Merci pour le classeur je regarderais c’la a tête reposé

Et ne vous en faite pas pour le sens de l’humour j’ais passé l’âge de me chamailler pour des babioles :wink:

Cdlt

@kiss6

Re,

Bonjour @Mimimathy , @mdo100

Voila j’ais rajouter ce code dans la « Private Sub OptB_Modifier_Click() » mais c’la ne marche pas

peut-être est il mal placer ou ce n’est pas comme ca pourriez vous me dire si je suis sur la bonne voix

Voici le code

Sheets(« Clients »).Select
no_ligne = CBox_NomComplet.ListIndex + 3
If CBox_NomComplet.Value = «  » Then
MsgBox ("veuillez remplir le champ de la recherche ! ")
Else
Cells(no_ligne, 1) = Cbox_Civilite.Value
Cells(no_ligne, 2) = TBox_Nom.Value
Cells(no_ligne, 3) = TBox_Prenom.Value
Cells(no_ligne, 4) = TBox_DNais.Value
Cells(no_ligne, 5) = TBox_Adresse.Value
Cells(no_ligne, 6) = TBox_CP.Value
Cells(no_ligne, 7) = TBox_Ville.Value
Cells(no_ligne, 8) = TBox_TelFixe.Value
Cells(no_ligne, 9) = TBox_TelPort.Value
Cells(no_ligne, 10) = TBox_Mail.Value
End If

Cdlt

@kiss6

Re,
Même ca ne marche pas et pourtant chez notre ami GOOGLE c’la fonctionne ou alors c’est plus compliqué

que je ne crois ou c’est mal placé

If Me.CBox_NomComplet.Value = «  » Then
Sheets(« Clients »).Select
no_ligne = Me.CBox_NomComplet.ListIndex + 3

MsgBox ("veuillez remplir le champ de la recherche ! ")
Else

     Cells(no_ligne, 2) = Me.TBox_Nom.Text
     Cells(no_ligne, 3) = Me.TBox_Prenom.Text
     Cells(no_ligne, 4) = Me.TBox_DNais.Text
     Cells(no_ligne, 5) = Me.TBox_Adresse.Text
     Cells(no_ligne, 6) = Me.TBox_CP.Text
     Cells(no_ligne, 7) = Me.TBox_Ville.Text
     Cells(no_ligne, 8) = Me.TBox_TelFixe.Text
     Cells(no_ligne, 9) = Me.TBox_TelPort.Text
     Cells(no_ligne, 10) = Me.TBox_Mail.Text
End If

Cdlt

@kiss6

Bonsoir Kiss,

Pas trés facile à tester avec ton code qui donne des “” qui se mettent pas en place en VBA

D’où mon post plus haut

Re,

Quand vous placez une macro dans un post, faites comme ceci

“ `vb" la macro "` ”

Càd  **touche AltGR**  et la touche  **7è`**  du clavier pour avoir 3 espèces de virgule à l’envers, suivi de “ **vb** ”

la macro

et à la fin t **ouche AltGR**  et la touche  **7è`**  du clavier pour avoir 3 espèces de virgule à l’envers

La macro sera propre est sans caractères farfelus :yum:

image

Bonsoir @Mimimathy, @kiss6,

@Mimimathy, voici le code et le fichier de là ou j’en suis.
Mais j’ai un problème pour la “Modification” d’une ligne choisie, en effet, quand je demande une modif, ça me modifie bien la Civilité et le Nom, mais aprés Prénom etc… ne veulent pas se modifier et je n’arrive pas a comprendre pourquoi ?

Peux-tu m’aider a comprendre pourquoi STP.

Il me restera ensuite a supprimer une ligne, et a mettre une photo.

Le code:

 Option Explicit
'D?claration des variables pour tout le module
Dim FClients As Worksheet
Dim Dl%, Modif%
Dim Espace$
Dim Slash As Byte
Dim Civ As Range
Dim Ctrl As Control 'Variable pour effacer les ComboBox et TextBox
Private Sub Btn_Quitter_Click()
  'Ferme l'USF
  Unload Me
End Sub
Private Sub Cbox_Civilite_Change() 'S?lection civilit?
    '?criture en nom propre
    Cbox_Civilite = Application.Proper(Cbox_Civilite.Value)
End Sub
Private Sub CBox_NomComplet_Click()
 'Remplir les TextBox avec Votre Choix
 If (OptB_Modifier = True And Btn_Validation.Caption = "Modifier") _
 Or (OptB_Supprimer = True And Btn_Validation.Caption = "Supprimer") Then
    Modif = Range("A" & Rows.Count).End(xlUp).Row
    Set FClients = Sheets("Clients")
     Dl = Me.CBox_NomComplet.ListIndex + 3
        Me.Cbox_Civilite = FClients.Cells(Dl, 1)
        Me.TBox_Nom = FClients.Cells(Dl, 2)
        Me.TBox_Prenom = FClients.Cells(Dl, 3)
        Me.TBox_DNais = FClients.Cells(Dl, 4)
        Me.TBox_Adresse = FClients.Cells(Dl, 5)
        Me.TBox_CP = FClients.Cells(Dl, 6)
        Me.TBox_Ville = FClients.Cells(Dl, 7)
        Me.TBox_TelFixe = FClients.Cells(Dl, 8)
        Me.TBox_TelPort = FClients.Cells(Dl, 9)
        Me.TBox_Mail = FClients.Cells(Dl, 10)
        'Me.CBox_NomComplet = ""
 End If
End Sub
Private Sub OptB_Ajouter_Click()
  'Clique Ajouter, alors vide les ComboBox et les TextBox
  For Each Ctrl In Me.Controls
   If TypeName(Ctrl) = "ComboBox" Then Ctrl.Text = ""
   If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
  Next Ctrl
  
CBox_NomComplet.Visible = False 'Masque ComboBox NomComplet
L_ChoixNomComplet.Visible = False 'Masque Label Votre Choix
 'Clique Ajouter, alors change le nom du bouton
 If Btn_Validation.Caption = "Modifier" Or Btn_Validation.Caption = "Supprimer" Then
        Btn_Validation.Caption = "Ajouter" 'Valeur du bouton
        Btn_Validation.BackColor = vbBlack 'Couleur du bouton
        Btn_Validation.ForeColor = vbWhite 'Police du bouton
        BackColor = vbBlack              'Couleur Cadre du formulaire
 End If
End Sub
Private Sub OptB_Modifier_Click()
  'Clique Modifier, alors vide les ComboBox et les TextBox
  For Each Ctrl In Me.Controls
   If TypeName(Ctrl) = "ComboBox" Then Ctrl.Text = ""
   If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
  Next Ctrl
  
CBox_NomComplet.Visible = True 'Affiche ComboBox NomComplet
L_ChoixNomComplet.Visible = True 'Affiche Label Votre Choix
 'Clique sur Modifier alors RAZ Votre Choix
 Me.CBox_NomComplet.Value = ""
    'Clique Modifier, alors change le nom du bouton
    If Btn_Validation.Caption = "Ajouter" Or Btn_Validation.Caption = "Supprimer" Then
        Btn_Validation.Caption = "Modifier" 'Valeur du bouton
        Btn_Validation.BackColor = vbBlue   'Couleur du bouton
        Btn_Validation.ForeColor = vbWhite  'Police du bouton
        BackColor = vbBlue                  'Couleur Cadre du formulaire
    End If
End Sub
Private Sub OptB_Supprimer_Click()
  'Clique Supprimer, alors vide les ComboBox et les TextBox
  For Each Ctrl In Me.Controls
   If TypeName(Ctrl) = "ComboBox" Then Ctrl.Text = ""
   If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
  Next Ctrl
  
CBox_NomComplet.Visible = True 'Affiche ComboBox NomComplet
L_ChoixNomComplet.Visible = True 'Affiche Label Votre Choix
    'Clique Modifier, alors change le nom du bouton
    If Btn_Validation.Caption = "Ajouter" Or Btn_Validation.Caption = "Modifier" Then
        Btn_Validation.Caption = "Supprimer" 'Valeur du bouton
        Btn_Validation.BackColor = vbRed     'Couleur du bouton
        Btn_Validation.ForeColor = vbWhite   'Police du bouton
        BackColor = vbRed                    'Couleur Cadre du formulaire
    End If
End Sub
Private Sub TBox_Nom_Change() 'S?lection NOM
    '?criture en majuscule
    TBox_Nom.Value = UCase(TBox_Nom.Value)
End Sub
Private Sub TBox_Prenom_Change() 'S?lection Pr?nom
    '?criture en nom propre
    TBox_Prenom.Value = Application.Proper(TBox_Prenom.Value)
End Sub
Private Sub TBox_DNais_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection N? le
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_DNais_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  'Si la date n'existe pas ou si la date est sup a aujourd'hui
      'alors on sort de la proc?dure
  If Not IsDate(Me.TBox_DNais) Then
    MsgBox "La date saisie n'est pas valide !", vbCritical, "Erreur de Saisie"
     'Cancel = True
     Me.TBox_DNais = ""
  Else
    If CDate(Me.TBox_DNais.Value) > Date Then
      MsgBox "Date de naissance sup?rieur ? Aujourd'hui !", vbCritical, "Erreur de Saisie"
      'Cancel = True
      Me.TBox_DNais = ""
    End If
  End If
End Sub
Private Sub TBox_DNais_Change() 'S?lection N? le
    'Mettre un Slash de s?paration style 01/01/2018
    Slash = Len(TBox_DNais)
     If Slash = 2 Or Slash = 5 Then TBox_DNais = TBox_DNais & "/"
End Sub
Private Sub TBox_Adresse_Change() 'S?lection adresse
    '?criture en nom propre
    TBox_Adresse.Value = Application.Proper(TBox_Adresse.Value)
End Sub
Private Sub TBox_CP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection code postale
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_Ville_Change() 'S?lection Ville
    '?criture en majuscule
    TBox_Ville.Value = UCase(TBox_Ville.Value)
End Sub
Private Sub TBox_TelFixe_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone fixe
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelFixe_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelFixe.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelFixe.Text = Espace
End Sub
Private Sub TBox_TelPort_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'S?lection t?l?phone portable
    'Uniquement des chiffres
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TBox_TelPort_Change() 'Mettre un espace tout les 2 chiffres
    Espace = TBox_TelPort.Text
    Select Case Len(Espace)
    Case 2, 5, 8, 11
    Espace = Espace & " "
    End Select
    TBox_TelPort.Text = Espace
End Sub
Private Sub TBox_Mail_Change() 'S?lection mail
    '?criture en minuscule
    TBox_Mail.Value = LCase(TBox_Mail.Value)
End Sub
Private Sub UserForm_Initialize()
OptB_Ajouter = True 'OptB_Ajouter = True ? l'ouverture de l'UserForm
    Btn_Validation.BackColor = vbBlack 'Couleur du bouton
    Btn_Validation.ForeColor = vbWhite 'Police du bouton
    BackColor = vbBlack               'Couleur Cadre du formulaire
    
   Me.CBox_NomComplet = ""
  'Liste Nom Pr?nom
   Me.CBox_NomComplet.ColumnCount = 3
   Me.CBox_NomComplet.RowSource = "B3:C" & [C65000].End(xlUp).Row

  'Liste sans doublons colonne A
    For Each Civ In Worksheets("Clients") _
   .Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
     Me.Cbox_Civilite = Civ
      If Me.Cbox_Civilite.ListIndex = -1 Then Me.Cbox_Civilite.AddItem Civ
    Next Civ
  
  Me.Cbox_Civilite.ListIndex = -1 'Pour mettre le Combo au d?but c?d vide
     
  'Max 5 chiffres dans code postale
  With TBox_CP
   .MaxLength = 5
   .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone fixe + 4 espaces
  With TBox_TelFixe
  .MaxLength = 14
  .Value = ""
  End With
  'Max 10 chiffres dans t?l?phone portable + 4 espaces
  With TBox_TelPort
  .MaxLength = 14
  .Value = ""
  End With
  'Max 8 chiffres dans N? le + 2 Slashs
  With TBox_DNais
  .MaxLength = 10
  .Value = ""
  End With
End Sub
Private Sub Btn_Validation_Click() 'Appui sur le bouton Ajouter
 'Message d'alerte Civilit?
 If Me.Cbox_Civilite = "" Then
    MsgBox "Vousn'avez pas renseign? la Civilit? !", vbInformation + vbOKOnly, "Erreur de saisie"
    Me.Cbox_Civilite.SetFocus
    Exit Sub
  Else
 'Message d'alerte Nom
 If Me.TBox_Nom = "" Then
    MsgBox "Vousn'avez pas renseign? le Nom !", vbInformation + vbOKOnly, "Erreur de saisie"
    Me.TBox_Nom.SetFocus
    Exit Sub
  Else
 'Message d'alerte Pr?nom
 If Me.TBox_Prenom = "" Then
    MsgBox "Vousn'avez pas renseign? le Pr?nom !", vbInformation + vbOKOnly, "Erreur de saisie"
    Me.TBox_Prenom.SetFocus
    Exit Sub
 End If
 End If
 End If
  
 With Feuil1 'Dans la feuille Clients
 
 If Btn_Validation.Caption = "Ajouter" Then 'Si le bouton s'appel Ajouter alors
 
 'Message avant validation d'un nouveau Client
 If MsgBox("Confirmez-vous l'ajout de ce nouveau Client ?", vbYesNo, "Demande de confirmation d'ajout Client") = vbNo Then
 Me.Cbox_Civilite.SetFocus
 Exit Sub
 Else
  '?crire les donn?es dans la derni?re ligne non vide ? partir de la colonne A
  Dl = Range("A" & Rows.Count).End(xlUp).Row + 1
  
   .Cells(Dl, 1).Value = Me.Cbox_Civilite.Value
   .Cells(Dl, 2).Value = Me.TBox_Nom.Value
   .Cells(Dl, 3).Value = Me.TBox_Prenom.Value
   .Cells(Dl, 4).Value = Me.TBox_DNais.Value
   .Cells(Dl, 5).Value = Me.TBox_Adresse.Value
   .Cells(Dl, 6).Value = Me.TBox_CP.Value
   .Cells(Dl, 7).Value = Me.TBox_Ville.Value
   .Cells(Dl, 8).Value = Me.TBox_TelFixe.Value
   .Cells(Dl, 9).Value = Me.TBox_TelPort.Value
   .Cells(Dl, 10).Value = Me.TBox_Mail.Value
   
 End If
 End If
 
 If Btn_Validation.Caption = "Modifier" Then 'Si le bouton s'appel Modifier alors
      Modif = Me.CBox_NomComplet.ListIndex + 3
      .Cells(Modif, 1) = Me.Cbox_Civilite.Value
      .Cells(Modif, 2) = Me.TBox_Nom.Value
      .Cells(Modif, 3) = Me.TBox_Prenom.Value
      .Cells(Modif, 4) = Me.TBox_DNais.Value
      .Cells(Modif, 5) = Me.TBox_Adresse.Value
      .Cells(Modif, 6) = Me.TBox_CP.Value
      .Cells(Modif, 7) = Me.TBox_Ville.Value
      .Cells(Modif, 8) = Me.TBox_TelFixe.Value
      .Cells(Modif, 9) = Me.TBox_TelPort.Value
      .Cells(Modif, 10) = Me.TBox_Mail.Value
End If
 
  'Ferme l'USF
  'Unload Me
  'Ouvrir l'USF
  'USFClients.Show 0
 End With
End Sub

Le fichier: Exercice N° 3 Partie Ajouter Vy.xlsm (1,6 Mo)

D’avance merci de ton aide.