XL 2019 Extraction de donnée

Nosta

XLDnaute Nouveau
Bonjour à tous,

Je me permets de vous solliciter concernant mon projet de fin d'étude sur un recueil de planning.

1599066011799.png
1) Est-ce que c'est possible de récupérer de mon textbox1 (Recherche mots clés) en splitant son contenu?

2) Est-il possible de filtrer mes checkbox en associant les résultats des mots clés qui seront extrait dans une nouvelle feuille?

Merci d'avance pour votre aide!
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonsoir.
Si ça vous intéresse, j'ai une fonction qui peut vous fabriquer la liste des mots clés classée par ordre alpha pour une ComboBox, avec pour chaque choix possible la liste des numéros des lignes de la plage contenant le mot choisi.
 

Nosta

XLDnaute Nouveau
Bonsoir Dranreb,

Merci pour votre réponse! Si ça serait possible de me l'envoyer afin que j'essaye de voir le résultat svp :)
 

Dranreb

XLDnaute Barbatruc
Oui. Maintenant cette fonction est aussi disponible dans une fourniture plus vaste :

Mais je joins quand même une ébauche …
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
Le code avec une procédure qui exploite le choix en sélectionnant toutes les lignes contenant le mot choisi :
VB:
Option Explicit
Private SujMC
Private Sub UserForm_Initialize()
   SujMC = SujetMotsClés(Feuil2.[Z3].Resize(Feuil2.[Z1000000].End(xlUp).Row - 2), "; ")
   Me.ComboBox2.List = SujMC(0)
   End Sub
Private Sub ComboBox2_Change()
   Dim TL() As Long, Rng As Range, N As Long
   If ComboBox2.MatchFound Then
      TL = SujMC(1)(ComboBox2.ListIndex)
      Set Rng = Feuil2.Rows(2 + TL(1))
      For N = 2 To UBound(TL)
         Set Rng = Union(Rng, Feuil2.Rows(2 + TL(N)))
         Next N
      Application.Goto Rng
      End If
   End Sub
 

Nosta

XLDnaute Nouveau
Le code avec une procédure qui exploite le choix en sélectionnant toutes les lignes contenant le mot choisi :
VB:
Option Explicit
Private SujMC
Private Sub UserForm_Initialize()
   SujMC = SujetMotsClés(Feuil2.[Z3].Resize(Feuil2.[Z1000000].End(xlUp).Row - 2), "; ")
   Me.ComboBox2.List = SujMC(0)
   End Sub
Private Sub ComboBox2_Change()
   Dim TL() As Long, Rng As Range, N As Long
   If ComboBox2.MatchFound Then
      TL = SujMC(1)(ComboBox2.ListIndex)
      Set Rng = Feuil2.Rows(2 + TL(1))
      For N = 2 To UBound(TL)
         Set Rng = Union(Rng, Feuil2.Rows(2 + TL(N)))
         Next N
      Application.Goto Rng
      End If
   End Sub
Merci Dranred pour l'aide la fonction marche parfaitement! Quand je sélectionne mon mot clés, je vois bien qu'il est sélectionné dans ma base de donnée. J'aurai voulu savoir quelle était la fonction à prendre pour un faire un "copy" pour le mettre dans ma feuille 3 (extraction) ?

Merci :)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je mettrais les valeurs de la base dans un tableau, définirai un autre tableau pour le résultat à envoyer, et ferais une boucle sur les éléments à prendre.
Je déclarerais probablement le Range de la base en variable globale Private.
Et je mettrais ces plages sous forme de tableaux: les ListObject sont quand même bien pratiques.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Ça pourrait donner quelque chose comme ça :
VB:
Private Sub CBnExtraction_Click()
   Dim TL() As Long, TDon(), LD As Long, TRés(), LR As Long, C As Long
   If ComboBox2.MatchFound Then
      TL = SujMC(1)(ComboBox2.ListIndex)
      TDon = LOtBase.DataBodyRange.Value
      ReDim TRés(1 To UBound(TL), 1 To 26)
      For LR = 1 To UBound(TL)
         LD = TL(LR)
         For C = 1 To 26
            TRés(LR, C) = TDon(LD, C)
            Next C, LR
      Feuil3.[A3:Z1000].ClearContents
      Feuil3.[A3].Resize(UBound(TRés, 1), 26).Value = TRés
      End If
   End Sub
 

Dranreb

XLDnaute Barbatruc
Vous auriez intérêt à faire un seul UserForm pour tout ça, avec des ComboBox pour toutes les colonnes du groupe IDENTIFICATION PROJET, et à gérer tout ça avec un Private WithEvents CL As ComboBoxLiées et un CA As ControlsAssociés
Pour la ComboBox CBxMotClé ne pas lui préciser de colonne au CL.Add Me.CBxMotClé
mais prévoir une Private Sub CL_SujBdDPersoSVP(ByVal CBM As CLsCAs.ComboBoxMmbr)
avec CBM.SujetBdD = SujetMotsClés(CL.Colonnes("Mots-clés").DataBodyRange)
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
En attendant de reprendre le problème à fond, avec le Complément CBxLCtlA.xlam et son projet VBA CLsCAs coché en référence, ou si vous préfériez ses 13 modules de service directement installés dans le VBAProject utilisateur …
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas