Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
j'ai fais un petit userform pour faire une recherche de donnée sur une feuille excel.
Toutefois, j'ai un souci, je n'arrive pas faire apparaitre la date, il affiche en format numérique.
Avez vous une astuce?
c'est dans le code VBA de ton UserForm ; si tu n'y arrives pas, il faudrait que tu envoies ton fichier (sans données confidentielles) ; pour faire cela, tu pourras utiliser le bouton "Joindre un fichier" qui est situé sous un post en cours d'édition (côté gauche).
si tu as regardé attentivement le fichier de mon post #8, tu as dû voir que j'ai modifié non seulement le code VBA de UserForm2 "RECHERCHER UNE COMMANDE" mais aussi celui de UserForm3 "RECHERCHER UNE COMMANDE EXPEDIEE" ; de plus, j'ai renommé les contrôles pour que ce soit plus clair. 🙂
si tu repasses sur ce fil, merci de me donner ton avis. 😉
si tu as regardé attentivement le fichier de mon post #8, tu as dû voir que j'ai modifié non seulement le code VBA de UserForm2 "RECHERCHER UNE COMMANDE" mais aussi celui de UserForm3 "RECHERCHER UNE COMMANDE EXPEDIEE" ; de plus, j'ai renommé les contrôles pour que ce soit plus clair. 🙂
si tu repasses sur ce fil, merci de me donner ton avis. 😉
Merci effectivement cela est plus clair,
j'essaye également de rajouter la recherche via le nom du client mais j'arrive pas combiné les 2 choix,
il y a t il une astuce ?
Merci d'avance
oui : l'astuce est de commencer par fournir un fichier représentatif, avec plusieurs données (non confidentielles), qui permettra de tester la future macro qu'on va écrire ; de plus, tu dois indiquer la procédure à suivre :
* quel est le formulaire concerné ? UserForm2 = "RECHERCHER UNE COMMANDE" ? ou peut-être UserForm3 = "RECHERCHER UNE COMMANDE EXPEDIEE" ? ou peut-être ta demande est pour chacun de ces deux formulaires ? donc pour UserForm2ETUserForm3 ? mébon, selon ton post #1, il semble que c'est seulement depuis ton UserForm3 = "RECHERCHER UNE COMMANDE EXPEDIEE".
* de dire à partir de quelle feuille tu lances UserForm3 ; il semble que ce soit à partir de ta 1ère feuille "NOUVELLE CDES", en cliquant sur le gros bouton orange "COMMANDES EXPEDIEES" ; ça a tout l'air d'être ça, mais je préfère que tu confirmes, histoire de partir sur de bonnes bases ; au cas où tu aurais envie de lancer ton UserForm3 depuis une autre feuille, précise laquelle ; peut-être aussi que tu aimerais que ce soit depuis chacune des feuilles du classeur (donc depuis les 6 feuilles) ? si oui, à confirmer.
* donner quelques exemples des données saisies, et des résultats correspondants attendus.
* j'aime bien ta 3ème feuille "CDES EXPEDIEES" : y'a que les en-têtes de colonnes en A1:O1, quelques bordures pour quelques colonnes, et aucune donnée saisie ! en l'état actuel, puisque la colonne C "NOM / PRENOM DU CLIENT" est vide, le résultat de la recherche sera toujours aussi simple qu'évident : le client n'a pas été trouvé ! 😁 et ça quelles que soient les combinaisons avec tes 2 autres choix ; au fait, quels sont-ils au juste, ces choix ? le Statut de la commande et le Nom du produit ? ou peut-être la Semaine de fabrication et la date d'expédition ? autre ?
* au cas où la recherche devrait se faire aussi sur la 2ème feuille "Commandes" : c'est le même désert ou presque que sur ta 3ème feuille : y'a des en-têtes en A1:O1 ; des bordures pour toutes les colonnes ; aucune donnée saisie ; des formules en colonne E qui retournent 0 ; des formules en colonne L qui retournent 52 ; mébon, ça gêne pas si ta demande n'utilise pas cette feuille.
* je vais supposer que ta demande n'a pas besoin d'utiliser les 3 dernières feuilles : NI "Calcul Estimat° livraison" ; NI "Métrage" ; NI "Stock et expédition" ; dans le cas contraire, merci de l'indiquer ! 😁
Merci pour ta réponse, ci joint le fichier avec des données.
En gros, je cherche a faire une recherche via le premier onglet "saisie des commandes", je souhaite que via mes userform 2 et 3 , qu'on puisse chercher par le nom et numéro de client.
effectivement les 3 derniers onglet ne sert qu'au données
mes 3 boutons :
Formulaire de saisie = saisir les commandes dans l'onglet commandes
recherche une commande = recherche commande dans la feuille commande (par nom et numéro de client)
commandes expédiées = recherche commande dans la feuille cdes expédiées (par nom et numéro de client)
maj commandes expédiées = bascule les commandes expédiées de la feuilles commandes vers la feuille cdes expédiées.
désolé pour l'énorme retard de ma réponse, mais même si
j'ai beaucoup tardé, je n'ai pas oublié ton exo ! 🙂
* à l'ouverture du fichier, tu es sur la 1ère feuille "SAISIES DES COMMANDES".
* fais Ctrl f ➯ ça affiche UserForm1, le formulaire de "Saisie des commandes".
* tu peux quitter de suite ce formulaire en cliquant sur le bouton "Quitter",
mais c'est plus simple d'appuyer sur la touche Echap.
* si tu cliques sur le bouton "Voir commandes", ça va sur la feuille "Commandes".
* clic sur le bouton "Effacer" ➯ ça va effacer tous les champs du formulaire.
* je te laisse tout tester, y compris le bouton "Ajouter commande"
à partir de la 1ère feuille "SAISIES DES COMMANDES", fais Ctrl r ➯
ça va sur la feuille "Commandes" et ça affiche UserForm2, le formulaire
"Rechercher une commandes".
* là aussi, tu peux quitter de suite ce formulaire en cliquant sur le bouton
"Quitter", mais c'est plus simple d'appuyer sur la touche Echap.
* essaye une recherche par N° de CLIENT : dans le 1er champ,
saisis par exemple "35356" ➯ dessous, ça affiche les données
correspondantes de ce client.
* pour faire une nouvelle recherche : sur un des 3 premiers champs,
saisis "@" ➯ ça efface toutes les données du UserForm : tu peux
donc saisir d'autres critères de recherche.
* essaye cette fois une recherche par Nom du Client : par exemple, saisis "test 32"
➯ les données correspondantes sont affichées, et note bien que ça a même affiché aussi le N° de CLIENT, même s'il est situé au-dessus du Nom du Client.
* note bien que la feuille en arrière-plan du formulaire est toujours "Commandes" ;
clique sur le gros bouton bleu ; note qu'en arrière-plan, c'est maintenant la feuille
"CDES EXPEDIEES" ; appuie sur Echap ➯ ça quitte UserForm3 et ça retourne à UserForm2 ; note qu'en arrière-plan la feuille est de nouveau "Commandes".
* clique de nouveau sur le gros bouton bleu ➯ ça affiche de nouveauUserForm3 ;
essaye une recherche, de la même façon que tu l'avais fait sur UserForm2 ; là aussi,
tu peux saisir "@" pour effacer les données du UserForm ; et là aussi, c'est que sur
les 3 premiers champs du UserForm.
* quitte UserForm3 puis UserForm2 pour retourner sur la feuille de calcul.
* tu es donc sur la feuille "Commandes"
* fais Ctrl e ➯ ça affiche directementUserForm3 ➯ la feuille en arrière-plan
est de nouveau la feuille "CDES EXPEDIEES".
* bien sûr, tu peux faire les mêmes manips de recherche.
tu peux faire Ctrl f ; Ctrl r ; ou Ctrl e depuis n'importe quelle feuille ! même depuis l'une des 3 dernières feuilles, par exemple depuis "Stock et expédition" ; gros avantage : tu n'es même plus obligé de retourner sur ta 1ère feuille menu "SAISIES DES COMMANDES" pour cliquer sur un des gros boutons. 🙂
fin de la démo ! 😜 mais comme j'ai encore modifié plein d'choses dans le code VBA, tu vas avoir du pain sur la planche pour tout lire ! ça fait quand même le code VBA de 3 modules de UserForm !
bon, ben alors à l'année prochaine, hein ? 😛 😄 🤣
code VBA de UserForm1(42 lignes) :
VB:
Option Explicit
PrivateSub AddCmd_Click()Dim lig&: Application.ScreenUpdating =0With Worksheets("Commandes")
lig =.Cells(Rows.Count,1).End(3).Row +1With.Cells(lig,1).Value = TextBox1 'N° Client.Offset(,1)=CDate(TextBox2)'Date de la cde.Offset(,2)= TextBox3 'Nom.Offset(,3)= TextBox4 'Prénom.Offset(,5)= ComboBox1 'Modèle.Offset(,7)= TextBox5 'Revendeur.Offset(,8)= TextBox6 'Commentaire.Offset(,9)= ComboBox2 'TypeEndWithEndWith
MsgBox "commande bien enregistrée",64,"confirmation"EndSubPrivateSub ShowCmd_Click()
Worksheets("Commandes").Select: [A1].Select: Unload MeEndSubPrivateSub CleanUF_Click()Dim i AsByte: Application.ScreenUpdating =0For i =1To6: Controls("TextBox"& i)="":Next i
ComboBox1 ="": ComboBox2 =""EndSubPrivateSub TextBox1_Change()
AddCmd.Enabled = TextBox1 <>""EndSubPrivateSub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If KeyAscii =27Then Unload MeEndSubPrivateSub QuitUF_Click()
Unload MeEndSub
code VBA de UserForm2(69 lignes) :
VB:
Option Explicit
PrivateSub UserForm_Initialize()
Worksheets("Commandes").Select: [A1].SelectEndSubPrivateSub CleanUF()Dim i AsByte: LC =0: Application.EnableEvents =0For i =1To8: Controls("TextBox"& i)="":Next i
Application.EnableEvents =-1EndSubSub SetLig(chn$, k AsByte)Dim cel As Range
Set cel = Columns(k).Find(chn,,-4163,1,1)IfNot cel IsNothingThen LC = cel.Row
EndSubSub ErrClt(chn$)
MsgBox chn &" Client inexistant, à resaisir",64,"Client non trouvé"EndSubPrivateSub FillRsg()With Cells(LC,3)
TextBox3 =.Offset(,4)'Statut de la commande
TextBox4 =.Offset(,3)'Produit (ou Modèle)
TextBox5 =.Offset(,7)'Type
TextBox6 =.Offset(,9)'Semaine de fabricationIf IsDate(.Offset(,11))Then_
TextBox7 =CDate(.Offset(,11))'Date expéditionIf IsDate(.Offset(,10))Then_
TextBox8 =CDate(.Offset(,10))'Date fabricationEndWithEndSubPrivateSub TextBox1_AfterUpdate()Dim chn$: chn = TextBox1:If chn =""ThenExitSubIf chn ="@"Then CleanUF:ExitSub
LC =0: SetLig chn,1:If LC =0Then ErrClt "N°":ExitSub
TextBox2 = Cells(LC,3): FillRsg
EndSubPrivateSub TextBox2_AfterUpdate()Dim chn$: chn = TextBox2:If chn =""ThenExitSubIf chn ="@"Then CleanUF:ExitSub
LC =0: SetLig chn,3:If LC =0Then ErrClt "Nom":ExitSub
TextBox1 = Cells(LC,1): FillRsg
EndSubPrivateSub TextBox3_AfterUpdate()If TextBox3 ="@"Then CleanUF:ExitSubEndSubPrivateSub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If KeyAscii =27Then Unload MeEndSubPrivateSub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If KeyAscii =27Then Unload MeEndSubPrivateSub ShowUF3_Click()
UserForm3.Show: TextBox1.SetFocus: Worksheets("Commandes").SelectEndSubPrivateSub QuitUF_Click()
Unload MeEndSub
à propos des lettres que j'ai choisies pour les 3raccourcis clavier :
* Ctrl f : c'est pour afficher le formulaire "SAISIE DES COMMANDES"
* Ctrl r : c'est pour afficher le formulaire "RECHERCHER UNE COMMANDE"
* Ctrl e : c'est pour afficher le formulaire "RECHERCHER UNE COMMANDE EXPEDIEE"
ainsi, tu peux voir que je n'ai pas choisi les lettres n'importe comment ! et ça aidera à te rappelerquel formulaire est affiché par quel raccourci clavier.
si je n'ai pas utilisé la lettre s pour "SAISIE DES COMMANDES" c'est volontairement, car le raccourci Ctrl s est vraiment trop pratique pour sauvegarder le classeur en cours ; même si y'a aussiMaj F12 ; les deux sont équivalents à un clic sur l'icône disquette (si cette icône est présente dans la barre d'outils "Accès rapide").
bien sûr, tu peux choisir d'autres lettres de raccourci si tu préfères : c'est toi l'utilisateur final, donc c'est toi qui choisit en dernier recours. 🙂
je ne sais pas encore si tu vas répondre ou non, mais je n'interviendrai plus sur ce sujet ; si tu as besoin d'une autre aide, j'espère qu'un autre intervenant pourra t'aider ; bonne chance ! 🍀
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD