Microsoft 365 Aide modification filtre recheche VBA userform

cedelec

XLDnaute Nouveau
Bonjour

j'ai créé un fichier listing prix, mais je bloque à présent

Je voudrais rajouter 2 chose :
_ Premièrement, je pense la plus simple, mais je sais vraiment pas comment faire, je voudrais que quand on appuie sur tab on passe d'une textbox à l'autre dans l'ordre, en ce moment, cela est complètement désordonné

_ deuxiemement j'aimerai pouvoir aussi faire mes recherche dans les 4 premières textbox, j'ai essayé plusieurs chose, mais ça bug et ça ne filtre vraiment pas

En espérant avoir été assez clair, je vous remercie d'avance pour vos futures réponses.
 

Pièces jointes

  • PRIX v1.xlsm
    741.9 KB · Affichages: 5

TooFatBoy

XLDnaute Barbatruc
Bonjour,

_ Premièrement, je pense la plus simple, mais je sais vraiment pas comment faire, je voudrais que quand on appuie sur tab on passe d'une textbox à l'autre dans l'ordre, en ce moment, cela est complètement désordonné
Il faut donner à tes objets un numéro TabIndex qui corresponde à l'ordre que tu veux leur donner.

Le <Tab> te fait passer, par exemple, du TabIndex 2 au TabIndex 3, ou du 9 au 10.
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour @cedelec et TFB

Pour les Tabindex c'est très facile
Tu cliques droit sur le fond de ton USF (la partie mauve)

1691673507269.png


Et tu choisis "Ordre de tabulation et tu mets l'ordre que tu veux .....

1691673641737.png


Quelques remarques :
Un tableau structuré avec 16 000 colonnes est ce utile ? Non bien sur
En supprimant 15 980 colonnes inutiles le fichier passe de 740 Ko à ..... 33 Ko et il s'ouvre instantanément au lieu de 30 secondes minimum !!!

De plus un tableau structuré pour y mélanger des carottes et des navets c'est pas top pour pas dire n'importe quoi !
Et ce n'est pas prêt de fonctionner ..... ou très difficilement !!!

Bonne lecture
 

cedelec

XLDnaute Nouveau
Bonjour @cedelec et TFB

Pour les Tabindex c'est très facile
Tu cliques droit sur le fond de ton USF (la partie mauve)

Regarde la pièce jointe 1176280

Et tu choisis "Ordre de tabulation et tu mets l'ordre que tu veux .....

Regarde la pièce jointe 1176282

Quelques remarques :
Un tableau structuré avec 16 000 colonnes est ce utile ? Non bien sur
En supprimant 15 980 colonnes inutiles le fichier passe de 740 Ko à ..... 33 Ko et il s'ouvre instantanément au lieu de 30 secondes minimum !!!

De plus un tableau structuré pour y mélanger des carottes et des navets c'est pas top pour pas dire n'importe quoi !
Et ce n'est pas prêt de fonctionner ..... ou très difficilement !!!

Bonne lecture
Merci

j'ai du faire une grosse erreur sais pas pourquoi j'ai 16000 colonne
 

Dranreb

XLDnaute Barbatruc
J'ai commencé à l'écrire, si ça vous intéresse …
Ça ressemble à ça :
VB:
Option Explicit
Private WithEvents CLs As ComboBoxLiées, CAs As ControlsAssociés, TLgn() As Long, LCou As Long, TVL()
Private Sub UserForm_Initialize() ' initialisation du formulaire
   Set CLs = New ComboBoxLiées: CLs.Plage Feuil2
   Set CAs = New ControlsAssociés: Set CAs.Colonnes = CLs.Colonnes
   CLs.Add Me.CBxNom, "NOM"
   CLs.Add Me.CBxRef, "REFERENCE"
   CLs.Add Me.CBxMarque, "MARQUE"
   CLs.Add Me.CBxCatég, "CATEGORIE"
   CAs.Add Me.TBxPrixA, "PRIX ACHAT"
   CAs.Add Me.TBxCoef, "COEF"
   CAs.Add Me.TBxPrixV, "PRIX DE VENTE"
   CAs.Add Me.TBxMarge, "MARGE"
   CAs.Add Me.TBxDtPxA, "DATE PRIX ACHAT"
   CAs.Add Me.TBxFourn, "FOURNISSEUR"
   CAs.Add Me.TBxNotes, "NOTES"
   CLs.CouleurSympa
   CLs.Actualiser
   End Sub
Function reset_all_controls() ' ???
   CLs.Nettoyer
   End Function
Private Sub CLs_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   ListBox1.Clear
   ReDim TVL(1 To 1, 1 To CLs.Colonnes.Count)
   CAs.ValeursDepuis TVL
   LCou = 0
   End Sub
Private Sub CLs_Résultat(Lignes() As Long)
   Dim TDon(), LDon As Long, TLBx(), LLbx As Long, C As Integer
   TLgn = Lignes
   If UBound(TLgn) = 1 Then
      LCou = Lignes(1)
      TVL = CLs.Lignes(LCou).Range.Value
      CAs.ValeursDepuis TVL
   Else
      TDon = CLs.PlgTablo
      ReDim TLBx(1 To UBound(TLgn), 1 To CLs.Colonnes.Count)
      For LLbx = 1 To UBound(TLBx, 1): LDon = TLgn(LLbx)
         For C = 1 To UBound(TLBx, 2): TLBx(LLbx, C) = TDon(LDon, C)
         Next C, LLbx
      ListBox1.List = TLBx
      End If
   End Sub
Et comme d'habitude ça a marché du premier coup …
Mais je le joindrai, naturellement, avec les modules de services nécessaires, toujours si ça vous intéresse …
 

cedelec

XLDnaute Nouveau
J'ai commencé à l'écrire, si ça vous intéresse …
Ça ressemble à ça :
VB:
Option Explicit
Private WithEvents CLs As ComboBoxLiées, CAs As ControlsAssociés, TLgn() As Long, LCou As Long, TVL()
Private Sub UserForm_Initialize() ' initialisation du formulaire
   Set CLs = New ComboBoxLiées: CLs.Plage Feuil2
   Set CAs = New ControlsAssociés: Set CAs.Colonnes = CLs.Colonnes
   CLs.Add Me.CBxNom, "NOM"
   CLs.Add Me.CBxRef, "REFERENCE"
   CLs.Add Me.CBxMarque, "MARQUE"
   CLs.Add Me.CBxCatég, "CATEGORIE"
   CAs.Add Me.TBxPrixA, "PRIX ACHAT"
   CAs.Add Me.TBxCoef, "COEF"
   CAs.Add Me.TBxPrixV, "PRIX DE VENTE"
   CAs.Add Me.TBxMarge, "MARGE"
   CAs.Add Me.TBxDtPxA, "DATE PRIX ACHAT"
   CAs.Add Me.TBxFourn, "FOURNISSEUR"
   CAs.Add Me.TBxNotes, "NOTES"
   CLs.CouleurSympa
   CLs.Actualiser
   End Sub
Function reset_all_controls() ' ???
   CLs.Nettoyer
   End Function
Private Sub CLs_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   ListBox1.Clear
   ReDim TVL(1 To 1, 1 To CLs.Colonnes.Count)
   CAs.ValeursDepuis TVL
   LCou = 0
   End Sub
Private Sub CLs_Résultat(Lignes() As Long)
   Dim TDon(), LDon As Long, TLBx(), LLbx As Long, C As Integer
   TLgn = Lignes
   If UBound(TLgn) = 1 Then
      LCou = Lignes(1)
      TVL = CLs.Lignes(LCou).Range.Value
      CAs.ValeursDepuis TVL
   Else
      TDon = CLs.PlgTablo
      ReDim TLBx(1 To UBound(TLgn), 1 To CLs.Colonnes.Count)
      For LLbx = 1 To UBound(TLBx, 1): LDon = TLgn(LLbx)
         For C = 1 To UBound(TLBx, 2): TLBx(LLbx, C) = TDon(LDon, C)
         Next C, LLbx
      ListBox1.List = TLBx
      End If
   End Sub
Et comme d'habitude ça a marché du premier coup …
Mais je le joindrai, naturellement, avec les modules de services nécessaires, toujours si ça vous intéresse …
merci

oui cela m'intéresse beaucoup
 

Dranreb

XLDnaute Barbatruc
Non, non, il vous manque plein de modules de service pour que ça puisse marcher. Je vais le joindre.
Le voilà, depuis mon message #9 j'ai juste encore ajouté le clic dans la ListBox …
 

Pièces jointes

  • CLsCAsCedelec.xlsm
    133.4 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonjour.
Il ne manque plus que les ajout, suppression et modification.
Remarque: d'habitude j'utilise un CBnEntrée ayant sa propriété Default à True pour la validation et un CBnEchap ayant sa propriété Cancel à True pour annuler, effacer ou sortir. Voulez vous que je le fasse aussi sur votre fichier ?
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95