Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimiser un USF pour créer déférents critères d'un filtre élaboré

23 réponses
Avatar
Apitos
Bonjour =E0 tous,

J'aimerais optimiser un USF pour cr=E9er d=E9f=E9rents crit=E8res afin d'ap=
pliquer un filtre =E9labor=E9 sur une base de donn=E9es en feuille "BD".

J'ai fais plusieurs essais, mais je n'obtiens toujours rien.

En PJ un exemple.

http://cjoint.com/?BHgnLmy3YHo

Je suis pr=E9s pour plus d'explications

Merci d'avance.

10 réponses

1 2 3
Avatar
MichD
|as-tu une idée pour récrire le titrage du tableau des résultats obtenus :

C'est possible de faire comme ceci : http://cjoint.com/?BHhrfMjID3e



MichD
---------------------------------------------------------------
Avatar
MichD
Et pour l'esthétique.... http://cjoint.com/?BHhrBDBKD5i



MichD
---------------------------------------------------------------
Avatar
Apitos
Merci Denis, mais je voulais dire en textuel, parce que c'est un document administratif que je vais imprimer et envoyer par la suite.

;)
Avatar
MichD
Je t'en propose une toute dernière version : http://cjoint.com/?BHhtw7SNOWY


MichD
---------------------------------------------------------------
Avatar
MichD
| mais je voulais dire en textuel, parce que c'est un document administratif

Sur un document imprimé qui se rendre compte de la supercherie?
Personnellement, je trouve cela plus lisible!

;-)

MichD
---------------------------------------------------------------
Avatar
Apitos
Re,

J'ai écris ces quelques lignes de codes pour avoir l’en-tête des ré sultats obtenus :

'--------------
'--- Récupérer les noms et valeurs des critères actifs
J = 1
For i = 1 To 6
If ZoneCritère(2, i) <> "" Then
If TextBox2.Value <> "" And TextBox3.Value <> "" Then
'-- Critère avec : Date début, Date fin
Ch = Choose(i, "Machine ", "Nature ", "Date de début ", "Date de fin ", "Cause ", "Durée " & X & " ")
Val = Choose(i, Me.ListBox1, Me.ComboBox1, Me.TextBox2, M e.TextBox3, Me.ComboBox2, DrMn)
Else
'-- Critère avec : Date seulement
Ch = Choose(i, "Machine ", "Nature ", "Date " & T & " ", "Cause ", "Durée " & X & " ")
Val = Choose(i, Me.TextBox1, Me.ComboBox1, Me.TextBox6, M e.ComboBox2, DrMn)
End If
Msg = Msg & Ch & " : " & Val & ", "
J = J + 1
End If
Next i
'-- Enlever la dernière virgule
Msg = Mid(1, Len(Msg) - 1, Msg)
'--------------


Je crois qu'on peut mieux récrire ce code !

Que penses-tu ?

Merci.
Avatar
Apitos
Plutot :

Msg = Mid(Msg, 1, Len(Msg) - 2)
Avatar
MichD
Dernière mise à jour : http://cjoint.com/?BHirmGybFky

Ceci a été ajouté à la procédure principale vers la fin de celle-ci pour
résumer les critères utilisés

'----------------------------------------
For Each C In ZoneCritère.Rows(2).Cells
If C <> "" Then
Msg = Msg & C.Offset(-1) & " : " & C.Value & ", "
End If
Next
If Msg <> "" Then
Msg = Left(Msg, Len(Msg) - 2)
Feuil3.Range("B2").Value = Msg
End If
'----------------------------------------


MichD
---------------------------------------------------------------
Avatar
Apitos
Bonsoir Denis;

Dernière mise à jour



Un grand merci pour m'avoir accompagné pour résoudre la grande partie d e ce problème.

Je vais continuer à faire des essais, pour pouvoir l'intégrer dans l'ap plication finale de mon projet.

Merci encore et à bientôt dans d'autre fils de discussions.

:)
Avatar
Apitos
Re,

Une dernière chose si je peux me permettre.

J'ai ajouté une case pour entrer les heures ainsi que le code pour les tr ansformer en minutes.

Ca marchait bien avant.

Mais maintenant, je ne sais pour quelle raison, le filtre avec le critère "Durée (en min)" donne toujours un résultat nul.

Voila le code qui crée le critère "Durée"

'-----------
'-- Le critère : Durée
Dim hMn As Integer, dMn As Long
If Me.ComboBox3.ListIndex <> -1 Then
X = Choose(Me.ComboBox3.ListIndex + 1, ">", ">=", "<", "<=", "=")
hMn = Me.TextBox5.Value * 60 ' Heures en minutes
dMn = hMn + Me.TextBox7.Value 'Durée en minutes
Feuil2.[N3] = X & dMn 'formule Durée en minutes
End If
'-------------

Le fichier exemple en PJ :

http://cjoint.com/?BHjc2OU9uDB

Merci.
1 2 3