Exercice N° 3- Partie 1 (Création Userfom )

Bonjour à tous…

2 « J'aime »

Bonjour Mimimathy, :wink: toutes et tous,

Comme je suis dans l’impasse pour l’Exo N°2, je vais faire avancer le bouchon pour le N°3 en espérant être rejoint par d’autres comparses afin d’unir nos forces.

Alors déjà interdit de se moquer :cry:

J’avais suivi un cours via une vidéo sur la toile en 2015 je crois pour utiliser les Userforms, bien sûr je suis incapable de retrouver cette vidéo puisque je n’en ais pas noté l’URL, mais j’avais conservé ce que j’avais fait à l’époque et je viens de l’adapter pour cet Exercice N°3.

Il y a 10 TextBox et ont se déplace avec la touche tabulation

  1. TextBox Civilité première lettre en majuscule.
  2. TextBox Nom tout en majuscule.
  3. TextBox Prénom première lettre en majuscule.
  4. TextBox Né le on entre la date avec seulement les chiffres sans les slash qui se mettent automatiquement au bon endroit au fur et à mesure.
  5. TextBox Adresse chaque première lettre est en majuscule.
  6. TextBox CP bridé à 5 chiffres et empêchement d’y mettre des lettres sinon message " Uniquement des chiffres, svp ! "
  7. TextBox Ville tout en majuscule.
  8. TextBox Tél Fixe bridé à 14 caractères et empêchement d’y mettre des lettres sinon message " Uniquement des chiffres, svp ! ", tout les 2 chiffres un point se met au fur et à mesure jusqu’à la 8ème pairs de chiffres.
  9. TextBox Tél Mobile bridé à 14 caractères et empêchement d’y mettre des lettres sinon message " Uniquement des chiffres, svp ! ", tout les 2 chiffres un point se met au fur et à mesure jusqu’à la 8ème pairs de chiffres.
  10. TextBox Email libre de tout caractère

Le bouton « Valider » va copier les données inscrites dans l’Userform dans la feuille « Clients »
Le bouton « Quitter » porte bien son nom :blush:

Dans la feuille « Accueil ».
Le bouton « Nouveau Client » sert a appeler l’Userform
Le bouton « Clients » lui sert a se déplacer dans la feuille « Clients ».

Dans la feuille « Clients ».
Le bouton « Accueil » sert a se déplacer dans la feuille « Accueil ».

Les codes VBA

A chaque ouverture du fichier je veux être sur la feuille « Accueil »
Dans Thisworkbook

Private Sub Workbook_Open()
'A l'ouverture affiche la page d'acceuil
Sheets("Accueil").Select
End Sub

Action des boutons feuille « Accueil »
Dans la feuille "Accueil"

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

'Appel formulaire Nouveau Client
Private Sub CommandButton6_Click()
UserForm1.Show
End Sub

Action du bouton feuille « Clients »
Dans la feuille "Clients"

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

Code de l’UserForm1, Frame1

'Bouton Quitter Formulaire Nouveau Client
Private Sub CommandButton10_Click()
    Unload UserForm1
End Sub
'Bouton Valider Formulaire Nouveau Client
Private Sub CommandButton11_Click()
    Dim ctrl As Control 'Boucle sur tous les contrôles
    Dim colonne%, derligne%
    derligne = Sheets("Clients").Range("A65000").End(xlUp).Row + 1
    For Each ctrl In UserForm1.Controls
    colonne = Val(ctrl.Tag)
    If colonne > 0 Then Sheets("Clients").Cells(derligne, colonne) = ctrl
     Next
     Unload UserForm1
     Sheets("Clients").Select
End Sub
'Sélection TextBox Civilité
Private Sub TextBox0_Change()
'Écriture première lettre en Majuscule
TextBox0.Value = Application.Proper(TextBox0.Value)
End Sub
'Sélection TextBox Nom
Private Sub TextBox1_Change()
'Écriture en majuscule
TextBox1.Value = UCase(TextBox1.Value)
End Sub
'Sélection TextBox Prénom
Private Sub TextBox2_Change()
'Écriture première lettre en Majuscule
TextBox2.Value = Application.Proper(TextBox2.Value)
End Sub
'Sélection TextBox Né le
Private Sub TextBox3_Change()
Dim Val As Byte
'Limiter le nb caracteres maxi dans textbox
TextBox3.MaxLength = 10
'Mettre un slash automatiquement 00/00/0000
 Val = Len(TextBox3)
 If Val = 2 Or Val = 5 Then TextBox3 = TextBox3 & "/"
End Sub

'Sélection TextBox Adresse
Private Sub TextBox4_Change()
'Écriture première lettre en Majuscule
TextBox4.Value = Application.Proper(TextBox4.Value)
End Sub
'Sélection TextBox Code Postal
Private Sub TextBox5_Change()
'Limiter le nb caracteres maxi à 5 dans textbox
TextBox5.MaxLength = 5
End Sub
'Sélection TextBox Code Postal
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Interdire les lettres dans le TextBox
If InStr("0123456789", Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
    'Si erreur alors message
    TextBox5.ControlTipText = "Uniquement des chiffres, svp !"
End If
End Sub
'Sélection TextBox Ville
Private Sub TextBox6_Change()
TextBox6.Value = UCase(TextBox6.Value)
End Sub
'Sélection TextBox Tél Fixe
Private Sub TextBox7_Change()
Dim Texte As String
Texte = TextBox7.Text
Select Case Len(Texte)
'Mettre un point de séparation tout les 2 chiffres
Case 2, 5, 8, 11
Texte = Texte & "."
End Select
TextBox7.Text = Texte
End Sub
'Sélection TextBox Tél Fixe
Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Interdire les lettres dans le TextBox
If InStr("0123456789", Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
    'Si erreur alors message
    TextBox7.ControlTipText = "Uniquement des chiffres, svp !"
End If
End Sub
'Sélection Userform
Private Sub UserForm_Initialize()
With TextBox7
    .MaxLength = 14 'Max 14 valeurs dans le TextBox
     .Value = ""
End With
    With TextBox8
    .MaxLength = 14 'Max 14 valeurs dans le TextBox
     .Value = ""
End With
     
End Sub
'Sélection TextBox Tél Mobile
Private Sub TextBox8_Change()
Dim Texte As String
Texte = TextBox8.Text
Select Case Len(Texte)
'Mettre un point de séparation tout les 2 chiffres
Case 2, 5, 8, 11
Texte = Texte & "."
End Select
TextBox8.Text = Texte
End Sub
'Sélection TextBox T?l Mobile
Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Interdire les lettres dans le TextBox
If InStr("0123456789", Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
    'Si erreur alors message
    TextBox8.ControlTipText = "Uniquement des chiffres, svp !"
End If
End Sub

Donc voilà ou j’en suis, j’aimerai bien avoir ton avis Mimimathy sur cette construction.

Pour ceux et celles qui suivent avec intérêt les Exercices de Mimimathy afin d’en apprendre plus sur le VBA, j’en suis simplement à l’Ajout de nouveaux clients dans la feuille de destination, il me manque les 2 autres actions, à savoir la Modif et / ou la Suppression d’un ou plusieurs clients via l’UserForm1, Frame2, Frame3

Y’a du taf encore :yum:

Oupss, pour un peu j’allais oublier de joindre le classeur pour une bonne visibilité de ce long discours et de ses lignes de codes.
Je me suis fait plaisir avec les boutons et la feuille « Accueil » :stuck_out_tongue_winking_eye:

Le fichier ICI==> Exercice N° 3.xlsm (1,1 Mo)

@+ les gens

Salut MDO

Rien à dire, c’est parfait

Re,

:blush:

Eh bien je suis en attente des troupes qui se font cruellement attendre :face_with_monocle:

Il n’y a pas de “ComboBox” certes, mais il y a des “TextBox” où je n’ais pas compris ce que tu as voulu dire ?

“SpinBox” c’est quoi encore ses bestioles :flushed:

Avec une équipe de bras cassés dont je suis le chef, ta patience est mise à dure épreuve :pleading_face:

Pas compris, désolé :woozy_face:

« ProfVBA » dans ton classeur test

Re,

Ah ben ça non alors, sinon je peux mettre “Maître” où encore puisque dans le vocabulaire 2018 “Premier de cordée” :joy:

Bonjour,
L’exercice N° 2 étant résolu

Re @Mimimathy, :wink:

C’est noté.

Re, @Mimimathy

Voila ce que j’ais concocter mais je n’arrive pas a mettre les tarif en €

le fichier en retour

=====>Exercice N°3 - Partie 1.xlsm (34,1 Ko)

Cdlt

@kiss6

Salut @kiss6, @Mimimathy,

Peut-être un début de solution:

Dans la Feuil1 bouton d’appel du formulaire.

Private Sub CommandButton1_Click()
'Appel Formulaire Tarifs
UserForm1.Show
End Sub

Code du bouton "SAUVEGARDER"

Private Sub CommandButton1_Click()
Dim Dl% 'D?claration variable
 'Message avant la sauvegarde proposé par Kiss6
 If MsgBox("voulez-vous faire la SAUVEGARDE ? ", vbYesNo, " confirmer") = vbYes Then
   'Copier les données les unes en dessous des autres
   Dl = Range("A65000").End(xlUp).Row + 1
   'Déclarer le TextBox1 avec la première lettre en majuscule
   TextBox1 = Application.Proper(TextBox1)
   'Déclarer le TextBox2 au format monétaire
   TextBox2.Value = Format(TextBox2.Value, "0.00 €")
   'Déclarer le TextBox3 au format monétaire
   TextBox3.Value = Format(TextBox3.Value, "0.00 €")
   'Données TextBox1 placées dans la première cellule vide colonne A
    Cells(Dl, 1) = TextBox1.Value
    'Données TextBox2 placées dans la première cellule vide colonne B
    Cells(Dl, 2) = TextBox2.Value
    'Données TextBox3 placées dans la première cellule vide colonne C
    Cells(Dl, 3) = TextBox3.Value
    
 End If
'Fermeture du Formulaire aprés la validation du MsgBox
Unload UserForm1

End Sub

Code du bouton "FERMER"

Private Sub CommandButton2_Click()
'Fermer Formulaire
Unload Me
End Sub

Le Fichier ICI==> Exercice N° 3 V0.xlsm (151,1 Ko)

Bonne soirée.

Bonjour Messieurs,
Et après on me dit que je pars sur des exercices trop hard ?

1 « J'aime »

Re, Bonjour @Mimimathy , @mdo100

D’abord félicitation a @mdo100 pour cet exercice qu’il a très bien gérer :clap: :+1: déjà rien que de savoir que

TextBox1 = Application.Proper(TextBox1)

est la déclaration de la première lettre en majuscule :mortar_board: c’la prouve le niveau de @mdo100 car

je n’ais aucune notion de tous c’la

Moi j’ais juste recopier bêtement un bout de code VBA que j’ais trouvé sur le net

enfin bref :clap: a toi @mdo100

@Mimimathy pourriez-vous me renvoyer mon fichier avec correction en rouge pour que je puisse assimiler et

comprendre le pourquoi du comment

Merci a vous deux c’est toujours un plaisir de vous suivre

Cdlt

@kiss6

Salut @kiss6,

:clap: à toi aussi, ta version m’a aider aussi et pour le reste, j’ai fais comme toi, des recherches sur le net afin de trouver les bonnes commandes pour les Textbox.

C’est vrai aussi, que j’avais déjà une p’tite expérience, puisque j’avais fait une première version en 2015, ça m’a aider.

Donc, il n’y a pas de miracle.

L’exercice N°3 Partie 2 se complique, alors au boulot.

Cdlt.

Re,

Peut être que @Mimimathy pourrais me donner plus d’explication pour la 2 ième partie ou même vous

@mdo100 car je n’ais pas bien saisie le sens de la question Stefanie de MONACO :wink:

Cdlt

@kiss6

Bonjour Kiss

Teste avec ceci

1 « J'aime »

Re,

Ok @Mimimathy merci pour la correction

Cdlt

@kiss6