UserForm : aide masque de saisie et checkbox

Salut tout le monde

Je suis en train de travailler sur la création d'une "mini" base de données avec formulaire de saisie pour gérer au mieux mes utilisateurs.

J'arrive à faire fonctionner le tout, mais je voudrai l'améliorer avec des masques de saisies (date et code postal) et quelques autre bricoles qui viendront par la suite (Modif et suppression d'un user ...).

Tout d'abord, je souhaiterai réussir à afficher un masque (format jj/mm/aaaa) ainsi qu'un contrôle pour éviter les dates farfelues. De même avec le code postal.

Ensuite, mon UserForm utilise des CheckBox qui me retourne "VRAI" ou "FAUX" dans mon tableau de BDD.

Comment faire pour qu'elles me renvoient "Oui" ou "Non" ?

Merci d'avance

168bdd-user-alex08.xlsm (28.25 Ko)

Bonjour

Pour la date (Exemple TextBox)

Private Sub txt_arrivee_Change()
'exemple pour format date xx/xx/xxxx
Dim Valeur As Byte
txt_arrivee.MaxLength = 10 'nb caracteres maxi dans textbox "txt_arrivee" à adapter aux autres Textbox ayant des dates
 Valeur = Len(txt_arrivee)
If Valeur = 2 Or Valeur = 5 Then txt_arrivee = txt_arrivee & "/"
End Sub

En ce qui concerne les CheckBox, exemple à adapter aux CheckBox

Private Sub CheckBox_cles_Click()
If Me.CheckBox_cles = True Then
Me.CheckBox_cles.Caption = "OUI"
Else
Me.CheckBox_cles.Caption = "NON"
End If
End Sub

et pour la ligne correspondant au bouton ENREGISTER

  ActiveCell.Offset(0, 12).Value = form_salarie.CheckBox_cles.Caption

ok, merci à toi,

je vais tester ça de suite

EDIT : suppression des intitulés que j'avais créés pour les checkbox. Du coup j'ai mis le nom qu'il y avait dans le label, dans le caption des CheckBox.

alors pour les checkbox ça fonctionne ... mais pas comme je le voudrais.

En fait ta méthode copie le nom affiché (caption) dans le tableau BDD

Donc si ne coche rien, au lieu de me copier "Non" pour chaque case, il va me copier : Téléphone, ordi, clés, voiture

Si je coche, le nom change et un Oui apparait. Donc si je copie, ça fonctionne mais je n'ai plus les intitulés dans le formulaire lors de la saisie.

Par contre pour afficher un non, il faut cocher PUIS décocher ...

Ce que je voudrai, c'est que le "libellé" reste lors de la saisie et qu'une fois coché, lorsque je valide, ça saisisse "Oui" (ou non si ça n'a pas été coché lors de la saisie) dans mon tableau.

Concernant le masque, j'avais déjà trouver cette ligne de code

Mais ce que je n'arrive pas à faire, c'est afficher par défaut "__/__/____" ou "jj/mm/aaaa" dans la TextBox.

merci, je continue de chercher de mon côté ^^

Et pour le fun, parce que tu vas surement me le demander

1) Saisie autotmatique des NOMS en majuscule

'Forcer l'écriture en majuscule pour les noms
Private Sub txt_nom_Change()
txt_nom = UCase(txt_nom)
End Sub

2) Saisie automatique des Prénom en Majuscule/Minuscule

Private Sub txt_prenom_Change()
'Force l'écriture des minuscule pour les prénoms
txt_prenom = WorksheetFunction.Proper(txt_prenom.Value)
End Sub

merci ^^

PS : j'ai édité mon précédant message

Après une bonne nuit de sommeil, je sèche toujours autant

On verra si l'inspiration me viendra ce matin

Pour rappel (fichier v2) :

  • je souhaite faire apparaitre dans les textbox Date un masque JJ/MM/AAAA
  • dans les checkbox, renvoyer "Oui" ou "Non", plutôt que "VRAI" ou "FAUX"

Encore merci à et1000lio pour son aide

Et merci aux autres en attendant 8)

si quelqu'un pouvait passer par là pour m'aider à trouver une solution

Bonsoir,

voici un essai.

bien entendu il faudra revoir tout ton userform.

Cdt

Henri

302alex08-v3-test.xlsm (30.13 Ko)

Merci beaucoup Henri !

Merci pour ton Merci.

Voici une version 4 avec saisie des dates à l'aide d'un calendrier (en cliquant sur le bouton à droite du TextBox).

Puis un contrôle sur la saisie de 5 caractères dans le code postal.

cdt

Henri

https://forum.excel-pratique.com/posting.php?mode=reply&f=2&t=101245&sid=2b17759cbadb15508fdefb55a72de5ce#

266alex08-v4-test.xlsm (45.87 Ko)

Merci à toi pour cette modif

Mais, je préfère saisir la date que de devoir la choisir, je trouve ça plus rapide

Par contre je garde l'idée pour autre chose !!!

Je reviens à la charge car j'ai pas mal avancé sur mon fichier et je voudrai encore l'améliorer.

Actuellement, je peux saisir via un UserForm des info sur des salariés (nom, prénom ...). Je peux aussi via un autre formulaire modifier un salarié en choisissant son numéro d'enregistrement (par InputBox).

Et c'est là que je voudrais améliorer mon fichier. Tant que j'ai 10 quidams dans ma base tout va bien, mais quand il y en aura plus, les retrouver par leur N° deviendra pénible.

C'est pourquoi, je souhaiterai mettre en place une recherche via mon formulaire (frm_recherche).

Dans un premier temps on choisit la méthode de recherche via OptionButton : soit le nom soit le prénom.

Dans un second temps on saisit dans le champ prévu à cet effet le nom : Ex Dupont (ou le prénom toto).

Puis le formulaire devra trier le tableau de la BDD pour n'afficher que les Dupont (si recherche par nom) ou les Toto (si recherche par prénom).

Enfin, par un double clique sur le N° d'enregistrement (N°), je souhaiterai que le filtrage du tableau s'efface et que mon formulaire frm_modif se lance en tenant compte du numéro cliqué juste avant ce qui permettra de récupérer toutes les infos correspondantes pour la modif de la ligne.

Merci d'avance

Salut à tous,

En fouillant un peu sur le forum, j'ai trouvé une idée qui pourrait me convenir ...

https://forum.excel-pratique.com/excel/creer-un-userform-de-recherche-t73959-10.html

J'ai donc créé mon formulaire de recherche et j'ai essayé d'adapter le code trouvé pour que ça fonctionne pour le mien.

Pour le moment, j'arrive à lancer une recherche (via le bouton du premier onglet) et il me trouve des correspondances.

Cependant, je souhaiterai qu'il m'affiche dans la ListBox les bonnes infos (Nom, Prénom et date de naissance).

PS: les 2 optionboutons ne fonctionnent pas pour le moment, on verra ça par la suite

Merci à vous, en attendant je vais continuer de chercher de mon côté

Bonsoir

Voici une autre méthode avec un formulaire unique.

  • fonction RECHERCHE soit par Nom ou Prénom (choix à faire dans" Critères de recherche". Tous les enregistrements s'affichent.
  • Affiner la recherche avec des mots clés selon le critère de recherche (ex: du pour Dupont, al pour Alex)
  • En cliquant sur une ligne de la ListBox, Modification ou Suppression possible.

En ouvrant le formulaire, le bouton AJOUT en bas est visible. Remplir toutes les informations pour ajouter un nouveau salarié.

A découvrir

Cdt

Henri

40alex08-v5-test.xlsm (57.68 Ko)

ah oui ! Je n'avais pas vu la chose comme ça

Un grand merci pour ton aide Henri

Maintenant je vais tâcher de mettre en pratique tout ce que tu m'as montré ^^

Edit :

je viens de m'apercevoir que tout ne fonctionnait pas au top.

  • Lorsque je recherche par le nom, il ne me trouve rien
  • Lorsque je recherche par le prénom, il me trouve par rapport au nom.
  • pbm sur CP (déjà résolu) ... à chaque chiffre saisi "erreur, le CP doit comporter au moins 5 chiffres"
  • Lorsque je sélectionne la ligne pour modif, toutes les infos ne sont pas correctes --> (type travail, horaires).

Je vais faire au mieux pour solutionner moi-même les soucis. Par contre si je n'y arrive pas, je te solliciterai à nouveau

Bonsoir alex08

J'ai modifié la structure de ta BDD (aucune ligne vide au-dessus du tableau) pour que la macro fonctionne.

J'ai ajouté le N° comme critère de recherche.

A tester.

Cdt

Henri

33alex08-v6-2.xlsm (110.64 Ko)

On y est presque !

J'ai remarqué que lorsque je fais une recherche sur le nom et que je tape TOTO, il m'affiche correctement les noms dans la ListBox (avec les bonnes infos).

Par contre, j'ai l'impression que le filtre n'est pas pris en compte lors de la récupération des infos en vue d'une modif.

Par exemple si je fais une recherche sur le nom TATA :

  • Dans la ListBox : toutes les infos sont OK
  • Je clique dessus pour modif est là les infos dans les TextBox du dessous ne correspondent plus.

En fait, j'ai remarqué, que pour lui, en phase de modif, la première ligne de la ListBox = 1er enregistrement, la 2ème = N°2 ... or ce n'est pas forcément le cas.

TATA est mon 2ème enregistrement. Il apparait en position 1 dans la ListBox, le formulaire renvoie alors les info de l'enregistrement N°1 qui est TOTO alex.

En espérant avoir correctement expliqué mon problème

Cordialement,

Alex

salut à tous, salut Henri

EDIT : je pensais avoir trouvé en décommentant une ligne, mais derrière je n'avais pas fait de recherche !

Donc retour à "la case départ"

Bonsoir alex08 et le forum,

Après plusieurs essais, je pense avoir trouvé une solution au problème.

Certains trouveront ma méthode "tirée par les cheveux", mais je n'ai pas trouvé mieux et elle fonctionne.

Le soucis est lorsqu'on supprime un enregistrement. J'ai donc mis en place la procédure pour réinitialiser l'ordre dans cette colonne.

Après suppression (ex ligne 4) on se retrouve avec une numérotation 1 2 3 5 6 7. La procédure rétablit en 1 2 3 4 5 6 .

Il risque d'y avoir encore des surprises.

A tester

Cdt

Henri

33alex08-v6-3.xlsm (105.43 Ko)

Salut Henri,

merci pour ton aide !

En effet la recherche fonctionne bien et les modif pareil !

Par contre la suppression, supprime la première ligne d'enregistrement à chaque fois et ce quelque que soit le n° de ligne recherché.

En gros je recherche la ligne N°4, il me demande si je veux supprimer cette ligne et me supprime la n°1.

Par contre si je ne fais pas de recherche et que je supprime la ligne N°4, il me supprime bien la 4.

Moi par contre je patauge total et je ne comprends plus grand chose

Je vais tout de même essayer de faire avancer le truc, mais sans grand espoir :p

Encore merci à toi

alex

Bonjour alex et le forum,

Concernant la suppression d'un enregistrement après filtrage, j'ai appliqué la même méthode que pour les modifs.

A savoir: recherche de la ligne concernée par :

ligne = Sheets("bdd").Range("B" & ListBox1).Row + 1 'on recherche la ligne de l'enregistrement

et ensuite la supprimer avec ce code:

Sheets("Bdd").Rows(ligne).Delete

Pourquoi tu dis:

Moi par contre je patauge total et je ne comprends plus grand chose

Je vais tout de même essayer de faire avancer le truc, mais sans grand espoir :p

En fait ce nouveau formulaire fait toutes les opérations (création, modification, consultation et suppression).

Voici la version corrigée.

Cdt

Henri

95alex08-v6-4.xlsm (113.66 Ko)
Rechercher des sujets similaires à "userform aide masque saisie checkbox"