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!
 

Pièces jointes

  • BDD planning.xlsm
    52.5 KB · Affichages: 17

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.
 

Dranreb

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

Mais je joins quand même une ébauche …
 

Pièces jointes

  • Temp.xlsm
    78.4 KB · Affichages: 16
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 …
 

Pièces jointes

  • Temp.xlsm
    87 KB · Affichages: 17

Dranreb

XLDnaute Barbatruc
Bonjour.
Avant de joindre votre classeur avec un seul UserForm pour l'ajout, la modification et la suppression, mettez des noms mnémoniques à tous vos contrôles (sauf les Label avec lesquels le code n'aura pas à interagir) commençant par une majuscule et immédiatement précédés d'un trigramme pris de cette liste :
1607164478782.png

Ce sera beaucoup plus facile pour s'y retrouver.
Par exemple CBxProjet, CBxDésign, CBxDateÉtat, CBxBusOpé, CBxREOPlan et CBxRéf. 6 ComboBox seraient en effet indiquées pour la partie Identification. Ne pas s'occuper de leurs listes, le ComboBoxLiées les établit dynamiquement d'après ce qui existe dans la base et ce qui a déjà été spécifié dans certaines d'entre elles. S'il y a suffisament de critères indiqués pour déboucher sur une seule ligne, tout est affiché dans tous les contrôles, y compris les CkxFaisab, CkxAPS etc.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarque: la ressource ne propose pas de dispositif de filtrage d'après des valeurs de CheckBox. Seulement les ComboBox. On pourrait toutefois se débrouiller pour proposer dans une ListBox les éléments d'identifications de lignes portant la combinaison de CheckBox cochées. Mais ce serait plus compliqué qu'avec des ComboBox.
 

Dranreb

XLDnaute Barbatruc
Je tiens à ce que les éléments d'identification soient des ComboBox et qu'il n'ait qu'un seul UserForm de consultation et mise à jour, et à ce que vous installiez le CBxLCtlA.xlam à partir du xslm précurseur de la ressource. C'est facile: il demande la permission de s'installer dans votre dossier de compléments dès que vous l'ouvrez. Il suffit de la lui accorder.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 334
Membres
102 864
dernier inscrit
abderrashmaen