Problème d'Userform et de code

Résolu/Fermé
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 - Modifié le 31 mai 2018 à 22:27
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 - 8 juin 2018 à 07:36
Bonjour à tous amis de comment ça marche,

Je viens vers vous car j’ai un problème de code sur un Userform.
Il y a quelques temps j’ai trouvé sur internet une vidéo pour créer un formulaire de recherche multicritères.
Je me suis dit avec les explications de la vidéo, il faut que je crée ça sur un de mes dossiers Excel.
C’est la première fois que je me lance dans la création d’un Userform et de ses codes !!!
La fenêtre de recherche est composée d’une liste déroulant Combobox.
D’une Textbox.
D’un bouton AFFICHER.
De deux listebox.
Et d’un bouton QUITTER (Voir photo N° 01)
J’ai placé un bouton nommé (RECHERCHE) en haut à droite sur ma feuille Excel GESTION DES ACHATS, il fonctionne.
La liste déroulante fonctionne également (entêtes de colonnes)
Le bouton QUITTER fonctionne aussi. (Voir photo N° 02)
Pour le reste cela fait plus de deux semaines que je cherche à installer les codes en cherchant sur internet voir si je trouve des tutoriels avec photos et explications, rien à faire !!! je ne trouve pas ce que je veux.
Je voulais essayer de me débrouiller seul, mais comme je suis une vrai bille en code VBA je me vois dans l’obligation de faire appel à vos bonnes volontés pour m’apporter votre aide.
Le but est donc que quand je sélectionne une rubrique dans la liste déroulante, que je renseigne la textbox avec une ligne de matériel et que je clique sur le bouton AFFICHER, la ou les lignes de mon dossier Excel s’affiche dans la fenêtre listebox (ou ne s’affiche pas si il y a rien)
Et que le nombre de ligne trouvée s’affiche dans la petite listebox en bas de la fenêtre (Voir photo N° 03)
Et ceci sans endommager les autres macros installées sur mon document (qui elles fonctionnent très bien)
Si vous pouviez me venir en aide par quelques moyens que ce soit, j’apprécierai grandement votre geste, car pour le moment quand je veux faire une vérification pour voir si un article, une référence ou autre a été entré sur le tableau, il faut que je passe en revue toutes les lignes de mon document.
Et ça commence à faire pas mal !!!
En vous remerciant de l’aide que vous pourrez m’apporter, Veuillez accepter, mes sincères salutations.
P.S. Je joins les documents nécessaires à mon courrier Photos et le lien de la vidéo ou j'ai trouvé le modèle.

Dossier Excel: https://www.cjoint.com/c/HEFuBovXCMC

Photo N° 01: https://www.cjoint.com/c/HEFnCDmP4fC

Photo N° 02: https://www.cjoint.com/c/HEFnDkHb36C

Photo N° 03: https://www.cjoint.com/c/HEFnD2YOskC

Lien de la vidéo ou j'ai pris le modèle: https://www.youtube.com/watch?v=pUkV5lMFWL8
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
1 juin 2018 à 00:30
Bonjour,

Ton classeur avec la listbox fonctionnelle : https://www.cjoint.com/c/HEFwBJc83jl

J'ai mis le code du bouton afficher, remplacé ta listbox nombre par un textbox et défini les colonnes de la listbox
0
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 2
1 juin 2018 à 15:17
Bonjour gbinforme,

Je te remercie pour le travail effectué, surtout en si peu de temps.
Pour la recherche ça fonctionne bien de référence à Date demande.
Pour les sommes de PU Achat HT à TOTAL TTC c'est moins précis.
J'ai fait des essais dans les colonnes avec des sommes différentes, il y en a beaucoup qui ne s'affichent pas dans la recherche alors qu'elle sont sur le tableau.
Pour la colonne Description, c'est très très précis.
C'est à la majuscule, au mot, à l'espace, à la virgule près.
Autrement ça ne trouve rien!!!
Le gros problème est sur mon tableau, quand je renseigne une ligne je commence par taper la référence.
Quand je passe à la cellule suivante, ça ajoute automatiquement une ligne sous la dernière ligne écrite avec toutes les formules dans les colonnes TVA, PU Achat TTC, et TOTAL TTC.
Là ça ajoute bien une ligne mais je n'ai plus les formules.
Est-ce que ça viens des codes de l'Userform?

Merci d'avance pour la réponse.

bonne journée et sincères salutations
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
1 juin 2018 à 15:56
Bonjour joel27/07,

, il y en a beaucoup qui ne s'affichent pas dans la recherche alors qu'elle sont sur le tableau.
Une listebox est limitée à 10 colonnes, si tu veux toute la ligne faudra agglomérer.

Autrement ça ne trouve rien!!!
il est possible d'améliorer mais ce n'est pas simple de chercher de l'a peu près...

Est-ce que ça viens des codes de l'Userform?
Sûrement pas je vais regarder si j'arrive à rentrer dans ta feuille.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
2 juin 2018 à 10:20
Bonjour joel27/07,

Je t'ai modifié l'affichage de ton formulaire pour que toutes les colonnes soient affichées et les montants sont regroupés dans la dernière colonne listebox disponible.
J'ai modifié la recherche qui prend en compte des parties de libellés et les dates simplifiées standard :
2/6 => 02/06/2018

Pour tes formules, je t'ai supprimé toutes les colonnes et lignes inutiles de ta feuille qui faisaient que tu allais au-delà de la colonne Z et comme tu ne gères pas les doubles lettres de colonne alors que tu aurais dû avoir AJ tu n'avais que J, tu n'obtenais pas toutes les colonnes du tableau. En plus, de ce fait, les formules colonnes du tableau avaient été désactivées.

https://www.cjoint.com/c/HFcicAAeTMl

Bon week-end et à bientôt
0
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 2
2 juin 2018 à 10:29
Bonjour gbinforme,

Je te remercie pour ta réponse;
Pour le nombre de colonnes, je ne savais pas que s'était limité à 10.
Tu vois un peu mes connaissances en Userform et VBA!!!
Mais ce n'est pas grave car je peux me servir du principale, de la colonne Référence à la colonne PU d'achat HT.

Pour la troisième question, j'ai gardé une copie de mon document sans l'Userform et ses codes.
Et là tout fonctionne parfaitement, quand je renseigne la cellule Référence (A) et que je passe à la cellule Date (B) cela m'ajoute automatiquement une ligne en dessous avec les formules dans les colonnes (K) TVA, (L) PU Achat TTC et (N) TOTAL TTC.
Donc grande question!

Question peut être bête je ne sais pas?
Peut-on faire le même type de fenêtre de recherche avec la mise en forme conditionnelle?

En attendant de tes nouvelles, je te souhaite un excellent week-end.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
2 juin 2018 à 11:51
Bonjour,

Nos réponses se sont croisées ;-)

je ne savais pas que s'était limité à 10.
Tu verras dans le classeur que même avec 10, l'on peut se débrouiller.

Pour la troisième question,
Sans doute qu'entre les 2 tu as créé tes colonnes à droite... regardes

même type de fenêtre de recherche avec la mise en forme conditionnelle?
Là je ne vois pas ce que tu veux dire car la MFC n'est qu'un formatage spécifique ?

Tu vois un peu mes connaissances
Ce n'est pas si "peu" que cela vu ta réalisation : avant de courir il faut apprendre à marcher.
Tu t'es bien débrouillé même si l'on pourrait simplifier parfois par exemple en n'ayant qu'une seule worksheet_change dans thisworkbook mais ce n'est qu'une option qui évite du code et si tu as regardé ma signature tu devrais comprendre. ;-)

à bientôt
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
3 juin 2018 à 16:33
Joël re,

La fenêtre de recherche fonctionne bien et l'ajout de ligne automatique avec toutes les formules dans les colonnes aussi.

Je n'en doute pas mais sur le classeur que tu as posté, (tu peux vérifier) tu avais cela en colonne AA:AP

Je ne sais pas pourquoi tu as mis ces données mais lorsque je supprime les colonnes O:AQ tes formules reviennent correctement car sinon dans ta procédure "dercol" prend la valeur "J" au lieu de "N" : le miracle se situe bien ici car je n'ai pas touché à quoi que se soit d'autre.

Je t'explique les colonnes de ta listbox :
For col = 1 To Me.ListBox1.ColumnCount - 1

L'on parcours les colonnes du tableau sauf la dernière qui regroupe les totaux.
Les unités d'affichage feuille ne sont pas les mêmes que dans la listbox
En feuille tu utilises du Calibri 11 comme police
Dans ta listbox tu as mis du Tahoma 8 comme police
Donc il faut faire des correspondances qui ne peuvent être qu'approximatives car après excel harmonise tout cela avec ta définition d'écran et la taille des fenêtres.
mts = mts & IIf(.Cells(3, col).ColumnWidth > 40, 120, Int(.Cells(3, col).ColumnWidth * 3.3)) & ";"

Le 40 ne sert qu'à limiter la colonne de la listbox, sinon tu peux le faire ainsi pour "avoir les colonnes de A Référence à H Date demande en entier" et tu n'auras pas de troncature des données.
mts = mts &  Int(.Cells(3, col).ColumnWidth * 4.1) & ";"

Pour chaque colonne de ta feuille l'on multiplie par 3.3 mais tu peux mettre 4.1 car sinon le magasin est tronqué, pour obtenir la taille de la colonne listbox. Tu peux aussi modifier la taille des colonnes de la feuille car comme tu n'as pas les mêmes polices les caractères varient fortement.
Next col
Me.ListBox1.ColumnWidths = mts & "200;"  

L'on met à jour les tailles de colonne dans la listbox en rajoutant la valeur 200 (à ajuster à ta guise) pour les montants.

Voilà quelques explications en français pour te traduire l'hébreu que je ne connais pourtant pas ! ;-)

Bonne lecture et à toi de jouer pour obtenir ce que tu souhaites.
0
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 2
3 juin 2018 à 17:50
gbinforme re

Pour les colonnes AA-AP J'avais commencé à suivre la procédure de la vidéo (Créer un formulaire de recherche multicritères), mais je n'ai pas pu l'installer correctement.
Alors après coup j'ai supprimé les colonnes et la macro qui était avec.

Pour la modification des colonnes il est vrai que le code devient un peu plus clair avec des explications en Français!!!
Je vais essayer de me débrouiller en suivant tes conseils et tes explications.

Je n'ai certainement pas les compétences pour faire ce genre de travail, mais il serait intéressant de faire un tutoriel sur ce sujet (de la conception de l'Userform aux codes en passant par le bouton Recherche) car la création de ce formulaire est bien plus simple comme tu as fait que sur la vidéo.
Je pense que ça pourrait intéresser beaucoup de personnes.

Je te tiens au courant très prochainement du résultat.

Merci encore pour ta patience et l'excellent travail fourni.

Bonne fin de week-end
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
3 juin 2018 à 20:48
Bonsoir Joël,

car la création de ce formulaire est bien plus simple comme tu as fait que sur la vidéo.
Si tu as noté ma signature de st-Ex tu comprends que l'on peut souvent simplifier : moins tu écris de code pour le même résultat, plus tu as de chance que cela fonctionne sans bug mais il faut bien réfléchir et organiser avant d'écrire.

il serait intéressant de faire un tutoriel sur ce sujet
Tu as certainement raison mais c'est très compliqué.
Tu as adopté une technique de formulaire qui est intéressante mais il y a pas mal d'autres façons de le faire, par exemple si tu as 5 colonnes dates chercher une date sur n'importe laquelle et de même pour les libellés ou au lieu d'utiliser un formulaire faire un filtre élaboré par macro (c'est peut-être ce dont tu me parlais avec ta barre de recherche).
Ceci fait que si on fait un tutoriel et j'en ai fait quelques uns qui sont assez utilisés, tu as toujours quelqu'un qui voudrait autre chose et donc cela oblige à être assez exhaustif pour que ce soit constructif.
Je retiens ton idée.

Je te souhaites une mise au point rapide de ton formulaire et si tu as une question, n'hésites pas à la poser.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
4 juin 2018 à 09:04
Bonjour Joël,

Tu m'as beaucoup intrigué avec ta simple barre de recherche avec un code VBA ou avec une MFC.,
alors j'ai un peu approfondi et j'ai vu ta recherche sur la référence avec MFC et je t'ai mis une petite procédure qui lorsque tu saisis dans la textbox n'affiche que les lignes qui comportent le choix saisi :
- "kg" n'affiche que les lignes avec kg, "ë" que les lignes avec e tréma, etc
- pour les dates "22/" affiche tous les 22, 22/1 tous les 22 janvier, 19/12/18 les 19 décembre 2018, etc
Pour tout voir il faut effacer la textbox bien sûr.
La procédure est dans le module recherche et le lancement dans le code de la feuille.
Elle peut être utilisée sur n'importe quelle feuille puisqu'elle a le nom de la feuille en paramètre.

Je t'ai modifier un peu la recherche formulaire afin par exemple en saisissant "kg mm" de n'avoir que les description qui ont à la fois kg et mm.

Dans les 2 recherches, les minuscules et les majuscules sont prises en compte indiferemment.

https://www.cjoint.com/c/HFegZmWD1Rl

Bonne semaine.
0
joel27/07 Messages postés 94 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 27 avril 2020 2
5 juin 2018 à 22:19
Bonsoir gbinforme,

Je m'excuse de cette réponse tardive mais le lundi et mardi toute la journée je travaille bénévolement à la restauration d'avions dans un musée de l'Aéronautique Navale.
Et je n'ai pas grand temps pour faire autre chose sur ces deux jours.
Si ça t'intéresse voici l'adresse du site: https://www.anaman.fr/

Donc procédons dans l'ordre.
Pour l'agrandissement des colonnes de ma ListBox, j'ai suivi tes explications et l'exemple du code que tu m'as fourni.
C'est nettement plus clair avec les explications en Français qu'un code Hébreu!!!
J'ai remis toutes les polices de mon Userform et de ma feuille Gestion des achats en Arial.
Ensuite suivant tes instruction j'ai fait les modifications sur le code.
Là maintenant grâce à toi c'est parfait, les espaces sont plus large et les lignes de le ListBos sont nettement plus lisibles.

Pour ta trouvaille, je t'avoue que je n'avais pas trop d'idée sur le comment et la forme de cette barre de recherche ou fenêtre de recherche de style Userform.
J'avais cette question en tête, mais sans trop savoir à quoi cela pouvait ressembler.
Mais là c'est tout simplement super génial.
J'ai fait un essai sur toutes les colonnes, Référence, Date,Description .... à chaque fois que tu entres un renseignement dans la barre de recherche, ça te cale sur une ou plusieurs lignes.
Et le plus beau c'est que la ligne choisie tu peux modifier les données des cellules.
Et ça c'est super chouette!!!

Je pense que je vais adapter cette barre de recherche sur la partie Gestion du stock.
Là ou j'ai les boutons de A à Z sur le sommaire.

Le code pour cette barre de recherche c'est bien celui-çi?

Private Sub TextBox1_Change() ' si modification de la saisie de la textbox
Call choix(ActiveSheet.Name, TextBox1) ' appel procédure de recherche
End Sub

Avec quoi fais-tu la barre de recherche, tu fais onglet Développeur- insérer- Zone de liste(contrôle Active x)?
Et la petite case ou il y a le nombre de ligne trouvée, comment la créer?
Dis-moi tout que je fasse un essai.

Dans l'attente de ta réponse, je te souhaite une bonne soirée.

Sincères salutations
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 706
6 juin 2018 à 00:18
Bonsoir Joël,

Le code pour cette barre de recherche c'est bien celui-çi?
le code il est dans le module "recherche" procédure "choix" que je t'ai commentée

Private Sub TextBox1_Change() ' si modification de la saisie de la textbox
Call choix(ActiveSheet.Name, TextBox1) ' appel procédure de recherche
End Sub

Ce code c'est le code d'appel de la procédure avec TextBox1 qui est le nom de ton contrôle Active x

Avec quoi fais-tu la barre de recherche, tu fais onglet Développeur- insérer- Zone de liste(contrôle Active x)?
Non pas Zone de liste mais zone de texte (avec ab dans l'icône)


Et la petite case ou il y a le nombre de ligne trouvée, comment la créer?
La petite case, c'est un commentaire sur la cellule A1
clic droit sur A1 "insérer un commentaire" tu dimensionnes et positionne où tu veux et tu mets le texte à la police et taille que tu veux.
Si tu veux tu fais copier de ma cellule A1 et collage spécial commentaire sur ta feuille.

Dis-moi tout que je fasse un essai. Pas sûr ;-)

Bonne nuit.
0