Microsoft 365 Userform filtre listbox

lesoldat9

XLDnaute Occasionnel
Bonjour à tous,

Une fois de plus je me tourne vers vous la team Excel,
j'aurai besoin aujourd'hui de filtrer ma listbox avec 3 ou 1 barre de recherche textbox selon mon besoin.

Je vous joins un fichier test.
 

Pièces jointes

  • Gestion stock (1).xlsm
    22.1 KB · Affichages: 12
Solution
Le classeur a le Vbe protégé .
Mais je vois quand même le problème.
Certaines colonnes de la table ont un espace dans leur nom
Dans ce cas modifier le code pour en tenir compte en encadrant ces noms par des crochets :
VB:
    If TextBox3 <> "" Then Where_String = Where_String & IIf(Where_String = "", "", " and ") & " [Ref Palette]='" & TextBox3 & "' "
( éviter de laisser des espaces en fin de champs aussi )

fanch55

XLDnaute Barbatruc
Le classeur a le Vbe protégé .
Mais je vois quand même le problème.
Certaines colonnes de la table ont un espace dans leur nom
Dans ce cas modifier le code pour en tenir compte en encadrant ces noms par des crochets :
VB:
    If TextBox3 <> "" Then Where_String = Where_String & IIf(Where_String = "", "", " and ") & " [Ref Palette]='" & TextBox3 & "' "
( éviter de laisser des espaces en fin de champs aussi )
 

lesoldat9

XLDnaute Occasionnel
Le classeur a le Vbe protégé .
Mais je vois quand même le problème.
Certaines colonnes de la table ont un espace dans leur nom
Dans ce cas modifier le code pour en tenir compte en encadrant ces noms par des crochets :
VB:
    If TextBox3 <> "" Then Where_String = Where_String & IIf(Where_String = "", "", " and ") & " [Ref Palette]='" & TextBox3 & "' "
( éviter de laisser des espaces en fin de champs aussi )
Merci c'est bien ca
 

fanch55

XLDnaute Barbatruc
Les "dates" à partir du code conducteur 6013 sont du type "String" et non "Date",
probablement suite à un copier/coller d'un fichier texte ....
ou saisi via un userform qui n'a pas converti le textbox en date ...

Exécutez le code ci-dessous :
VB:
Sub Restore_Dates()
Dim C As Range
    For Each C In [Tab_GestionStock[Date]]
        If Not VarType(C.Value) = vbDate Then C.Value = CDate(C.Value)
    Next
End Sub
 

lesoldat9

XLDnaute Occasionnel
Les "dates" à partir du code conducteur 6013 sont du type "String" et non "Date",
probablement suite à un copier/coller d'un fichier texte ....
ou saisi via un userform qui n'a pas converti le textbox en date ...

Exécutez le code ci-dessous :
VB:
Sub Restore_Dates()
Dim C As Range
    For Each C In [Tab_GestionStock[Date]]
        If Not VarType(C.Value) = vbDate Then C.Value = CDate(C.Value)
    Next
End Sub
C'est bizarre car même en convertissant manuellement ca ne fonctionnais pas merci pour le code ca fonctionne
 

lesoldat9

XLDnaute Occasionnel
Bonjour @fanch55,

Après plusieurs mois je constate que mon fichier ne fonctionne pas quand il est sur un serveur.
En fouillant un petit peu j'ai vu un mémo ou tu indiques ''ne pas utiliser adUseClient ou adUseServer sinon renseigner les références vb''.

Peux-tu m'en dire plus...

Merci à toi
 

fanch55

XLDnaute Barbatruc
En fouillant un petit peu j'ai vu un mémo ou tu indiques ''ne pas utiliser adUseClient ou adUseServer sinon renseigner les références vb''.

Salut,
Le code proposé fait appel au module Ado en mode dynamique :
Set Base = CreateObject("ADODB.Connection")
De ce fait, les constantes spécifiques au module n'existent pas, il faut indiquer leur valeur numérique .
1680107029377.png

Sinon, il faut référencer Ado dans les références du Vbe:
Cela inclut de ce fait toutes les constantes propres à Ado
1680107479688.png
 
Dernière édition:

Statistiques des forums

Discussions
314 450
Messages
2 109 724
Membres
110 552
dernier inscrit
jasson