Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

création d'une macro

  • Initiateur de la discussion Initiateur de la discussion valentin75
  • Date de début Date de début

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 !

V

valentin75

Guest
Bonjour,

J'ai un fichier Excel à 4,5 colonnes. Le nombre de ligne peut augmenter suivant le nombre de référence créées.
Le but du tableau est de le créer sous forme de macro pour que tout soit automatisé pour rechercher un produit.
Cela marche avec un filtre mais reste peu pratique et l'utilisation de macro me plait. Malheureusement après quelques essais, je n'ai pas aboutit à un résultat satisfaisant.
Quelqu'un peut il m'aider?

Le tableau est en pièce jointe

Cordialement Valentin
 

Pièces jointes

Re : création d'une macro

Mettez à "0 - fmShowDropButtonWhenNever" les propriétés ShowDropButtonWhen des ComboBox dont vous ne voulez pas voir les flèches de la liste pour inciter à taper le début.
 
Re : création d'une macro

Le problème c'est qu'on ne peut pas combiner chiffre et lettre dans mot clés. Je souhaiterais pouvoir taper n'importe quoi : une référence, un mot puis un chiffre, mettre des espaces..
Est ce possible?
 
Re : création d'une macro

Dans ce cas il soit il faut constituer un sujet très spécial comportant plusieurs mots, soit prendre une TextBox pour le critère.
Avec l'opérateur Like vous devriez pouvoir constituer assez facilement une liste des numéros de lignes contenant la chaine cherchée sous forme d'une table de Long à une seule dimension.
L'objet ComboBoxLiées est muni d'une méthode FiltrerLignes à laquelle vous transmettez justement une telle table, et d'une méthode AfficherTout qui en annule l'effet.

Remarque: il est aussi possible de mettre plusieurs ComboBox pour y saisir plusieurs mots qui doivent y être simultanément.
Il serait aussi possible de mettre un "_" entre certains mots et la valeur qui le suit.
 
Dernière édition:
Re : création d'une macro

Sub RechercherNom()
Dim Sh As Worksheet
Dim c As Range
Dim Nom As String, firstAddress As String

Nom = InputBox("Nom à chercher dans toutes les feuilles", "Rechercher")
If Nom <> "" Then
For Each Sh In ThisWorkbook.Worksheets
Set c = Sh.Cells.Find(Nom, LookIn:=xlValues, LookAt:=xlPart) 'xlpart = partie du nom et xlwhole = casse exacte
If Not c Is Nothing Then
Sh.Activate
c.Select
firstAddress = c.Address
Do
strreponse = MsgBox(Sh.Name & "!" & c.Address & vbCrLf & _
"Oui pour continuer la recherche" & vbLf & _
"Non pour sortir", vbYesNo)
If strreponse = vbNo Then Exit Sub
Set c = Sh.Cells.FindNext(c)
c.Select
Loop While Not c Is Nothing And c.Address <> firstAddress
Set c = Nothing
End If
Next Sh
End If
End Sub


ce code marche plutôt bien apparement. On peut y taper ce que l'on veut !
 
Re : création d'une macro

Donc, et pour ne pas changer de sujet, la version avec une zone de texte pour limiter aux articles contenant certains groupes de caractères.
 

Pièces jointes

Re : création d'une macro

Bonsoir
J'aurai bien avoir la fin de l'histoire ....ou plutôt celle de l'USF , que fait-on après les choix ?
Ou est le résultat ?
Car j'aimerai bien conserver cet exemple et aussi comprendre cela :
Code:
Private Sub CL_SujBdDPersoSVP(ByVal CBM As ComboBoxMmbr)
CBM.SujetBdD = SujetMotsClés(CL.PlgTablo.Columns(2))
End Sub
Merci Dranreb !!
 
Re : création d'une macro

Bonsoir herve62.

Dans le dernier Useform que j'avais fait, le résultat des choix est affiché dans ListBox1. Mais on peut en faire tout ce qu'on veut à partir du moment ou on a compris que l'évènement Résultat renvoie les numéros de lignes dans PlgTablo correpondant aux choix effectués, comme c'est expliqué dans le module de classe ComboBoxLiées :
VB:
'                                         —— ÉVÈNEMENTS PRINCIPAUX PRÉVUS, DANS L'ORDRE OÙ ILS SURVIENNENT ——
Event Change(ByVal Complet As Boolean, ByVal NbrLgn As Long) ' Survient quand une des ComboBox change.
'                  Complet indique que l'ensemble des ComboBox liés forment la combinaison existante,
'                          ou qu'au moins 1 porte une valeur inexistante. Ce second sens ne s'applique que si NbrLgn = 0 :
'                                            NbrLgn donne le nombre de lignes correspondantes (C'est surtout pour tester s'il y en a ou non).
Event Résultat(Lignes() As Long) ' Survient seulement si Change a rendu NbrLgn > 0, et rend la table des lignes correspondantes. Lignes(1 to NbrLgn)
Pour ce qui est des mots clé, je n'ai pas voulu compliquer l'utilisation normale par quelque chose qui n'aurait de toute façon peut être pas couvert tous les besoins imaginables. Alors j'ai ouvert une voie générale aux sujets personnalisés quels qu'ils soient.
Il faut d'abord observer que dans l'UserForm_Initialize, CL.Add Me.CBxMot n'est suivi d'aucune indication de colonne contrairement aux deux autres.
Dans ComboBoxLiées on trouve ceci :
VB:
'                                                 —— ÉVÈNEMENTS SPÉCIAUX POUR UTILISATION AVANCÉE ——
Event SujBdDPersoSVP(ByVal CBM As ComboBoxMmbr) ' Survient au Actualiser si la colonne n'a pas été précisée au Add, de sorte que le
'           SujetBdD global de ce membre ne peut être constitué. Veuillez le constituer par un algorithme de votre cru.
'           Ce Variant doit recevoir un contenu structuré comme ceux rendus par les fonctions du module MSujetCBx.
Or dans ce fameux module MSujetCBx on trouve :
VB:
Function SujetMotsClés(ByVal Src, Optional ByVal Séparat As String = " ")
Rem. —— Restitue un sujet de mots clés.
'   Src: Range ou tableau 2D d'une seule colonne à inventorier.
'   Séparat: Groupe de caractères à identifier comme séparateur. Facultatif: un espace assumé.
' Remarque: Certains caractères spéciaux sont remplacés par un espace avant décomposition en mots,
'     s'il ne font pas partie de Séparat.
Il ne reste qu'a additionner 2 et 2: Je ne sais pas concevoir un algorithme de nature à me fabriquer un Sujet, mais celui de cette fonction me conviendrait bien. Il vient du module MSujetCBx, je me plaindrais donc à coup sûr à l'auteur s'il ne convenait pas à un ComboBoxLiées ! Mais seulement voilà: il convient !
 
Dernière édition:
Re : création d'une macro

Bonjour.

Considérant qu'on peut ne pas penser à faire le rapprochement entre la fonction SujetMotClés et l'évènement SujBdDPersoSVP, je modifie son explication comme suit :
VB:
'                                                 —— ÉVÈNEMENTS SPÉCIAUX POUR UTILISATION AVANCÉE ——
Event SujBdDPersoSVP(ByVal CBM As ComboBoxMmbr) ' Survient au Actualiser si la colonne n'a pas été précisée au Add, de sorte que la propriété
'           SujetBdD de son objet ComboBoxMmbr CBM ne peut être renseignée. Veuillez la renseigner par un algorithme de votre cru (au pire).
'           Elle doit contenir un Array à deux éléments comme ceux rendus par les fonctions du module MSujetCBx, lequel comporte d'ailleurs
'           une fonction SujetMotsClés qui renvoie déjà un sujet personnalisé tout fait. CBM.SujetBdD = SujetMotsClés(CBL.PlgTablo.Columns(x))
 
Re : création d'une macro

Bonjour
C'est quand même de la haute voltige de compréhension ? et je ne sais pas comment peut-on faire pour connaitre tous ces types de prog. avancée !!et surtout quand et comment les utiliser et qui parfois raccourcissent une appli ; même ayant fait de la prog en langage machine , là je suis largué !
 
Re : création d'une macro

Mais que pourrais-je faire pour que ce soit plus clair ???
Comme vous pouvez le voir, je ne demande pas mieux que d'améliorer les explications en fonction des difficultés rencontrées par les utilisateurs. Encore faut-il que j'en aie connaissance.
 
Re : création d'une macro

Mais pourquoi ? En principe quand on se met au VBA on devrait connaître des bases, avoir une idée de ce en quoi consiste ce qu'on utilisera tout le temps qu'on le veuille ou non, à savoir les objets et leurs propriétés, méthodes et évènements. Pour les propriétés et méthodes on est déjà grandement aidé par les listes de suggestions à la frappe d'un point, et, pour les évènements, par les deux larges listes déroulantes qui surmontent la fenêtre de code. Il ne faudrait jamais implanter autrement des procédures de prise en charge d'évènements. Ça vaut aussi pour mes objets.
 
Re : création d'une macro

Bonjour.

En tout cas si vous ne me posez aucune question, la première qui vous viendrait à l'esprit, je ne puis éclairer votre lanterne 🙁
Savez vous au moins en quoi consiste fondamentalement un module de classe, au juste ?
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
217
Didierpasdoué
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…