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

Filtre liste avec plusieurs conditions

39 réponses
Avatar
DAVID
Bonsoir

Je m'en sort pas avec mon projet avec le peu de connaissance en V.B.

J'aimerais filtrer une liste d'une feuille grâce à 2 TextBox et 5 Combos et
visualiser dans un ListBox sans obligation de remplir tous les éléments

Ci joint la partie de mon programme qui me pose problème
http://cjoint.com/?bAxETQeOP5


Merci de votre aide car cela fait plusieurs jours que je cherche.
Si possible avec explications des lignes de code

Cordialement

David

10 réponses

1 2 3 4
Avatar
Daniel.C
Bonjour.
A partir du moment où tu ajoutes une ou des feuilles, il faut que tu
fasses attention sur quelle feuille tu agis :
Dans la dernière version, tu n'avais qu'une feuille, aussi, dans la
macro :

Private Sub UserForm_Initialize()

CmbNouvelle_Click
Feuil2.Select
If Feuil2.AutoFilterMode = True Then

Selection.AutoFilter


de l'userform usfresulthistorique

tu dois mettre :

Private Sub UserForm_Initialize()

CmbNouvelle_Click
Feuil2.Select
If Feuil2.AutoFilterMode = True Then

Selection.AutoFilter

Pour que cette dernière commande s'applique à Feuil2.

Voici ton classeur modifié :

http://cjoint.com/?bCpcAgs6lr

Daniel


Bonjour

Suite à tes conseils, voyons comment faire fonctionner le début !!
Après plusieurs petits essais et changement de code qui demande sûrement à
être allégé, pour supprimer des petits "beug", voici la dernière version du
projet.

http://www.cijoint.fr/cjlink.php?file=cj201001/cij7omQcuD.xls

A première vue (aléatoire), l'erreur qui persiste apparaît en faisant :

Clic sur "Ouverture"
Clic sur "Historique"
Clic sur "Nouvelle recherche"
Clic sur "Retour"
Clic sur Historique" >>>>erreur "La méthode AutoFilter de la classe Range à
échoué"

Encore merci de ton aide
Cordialement

David


Avatar
DAVID
Re

Après plusieurs essais, la dernière version fonctionne. Merci beaucoup.

Pas sûre d'avoir bien compris le paramètre (param)

Private Sub ChargementListe(param)

ChargementListe "debut"

ChargementListe "fin"


Je vais commencer à faire des essais concernant les
modifications/suppressions et reviens si tu veux toujours bien !!

Cordialement

David
Avatar
Daniel.C
ChargementListe "debut" est utilisé à l'initialisation de l'userform et
ne tient pas compte du filtre (pas d'erreur, même si le filtre ne
contient aucun enregistrement). ChargementListe "fin" remplit le
Listbox avec les résultats du filtre. Pour éviter une erreur on
contrôle que le filtre contient au moins 1 enregistrement.
Daniel

Re

Après plusieurs essais, la dernière version fonctionne. Merci beaucoup.

Pas sûre d'avoir bien compris le paramètre (param)

Private Sub ChargementListe(param)

ChargementListe "debut"

ChargementListe "fin"


Je vais commencer à faire des essais concernant les
modifications/suppressions et reviens si tu veux toujours bien !!

Cordialement

David


Avatar
DAVID
Re

Merci pour ces explications.

En ce qui concerne la suppression

Si je supprime l'enregistrement de la ligne 15 alors suppression des 10
lignes au dessus mais enregistrement reste. Pourquoi 10 lignes ? Peut être
car 10 colonnes !!

En ce qui concerne la modification

Si je veux modifier la valeur de l'enregistrement de la ligne 15 alors
l'enregistrement de la ligne 15 reste idem mais par contre la modification
s'affiche ligne 14

Voila mes premiers, multiples test !!!

Pour tous ces problèmes, mes connaissances sont largement trop faibles

Merci de ton aide éventuelle

David
Avatar
Daniel.C
Précise ce que tu fais comme manips, ce que tu entre dans les
différents champs du filtre etc. qu'on soit bien en phase.
Daniel

Re

Merci pour ces explications.

En ce qui concerne la suppression

Si je supprime l'enregistrement de la ligne 15 alors suppression des 10
lignes au dessus mais enregistrement reste. Pourquoi 10 lignes ? Peut être
car 10 colonnes !!

En ce qui concerne la modification

Si je veux modifier la valeur de l'enregistrement de la ligne 15 alors
l'enregistrement de la ligne 15 reste idem mais par contre la modification
s'affiche ligne 14

Voila mes premiers, multiples test !!!

Pour tous ces problèmes, mes connaissances sont largement trop faibles

Merci de ton aide éventuelle

David


Avatar
DAVID
Bonjour

Pour une modification ou suppression

Clic sur "Ouverture" pour ouvrir l'UsurForm "Saisie d'une fiche carburant"
Clic sur "Historique" pour ouvrir l'UserForm "Historique"
Double-clic dans une valeur (ligne) du tableau se qui provoque l'affichage
de 3 boutons "Modifier" "Supprimer" "Annuler" et le remplissage des 10
TextBox.

Pour supprimer, clic sur "Supprimer" se qui provoque la suppression de
l'enregistrement et une nouvelle initialisation de la ListBox

Pour modifier, on change une ou des valeurs des TextBox puis on clic sur
"Modifier" se qui provoque la modification de l'enregistrement et une
nouvelle initialisation de la ListBox

A savoir que ces 2 parties fonctionnes quand on filtre pas.

Des que l'on filtre alors, apparement,

<<Si je supprime l'enregistrement de la ligne 15 alors suppression des 10
<<lignes au dessus mais l'enregistrement reste. Pourquoi 10 lignes ? Peut
être
<<car 10 colonnes !!

<<En ce qui concerne la modification

<<Si je veux modifier la valeur de l'enregistrement de la ligne 15 alors
<<l'enregistrement de la ligne 15 reste idem mais par contre la modification
<<s'affiche ligne 14

J'espère avoir été clair dans mes explications

Cordialement

David
Avatar
DAVID
En complément et après grande réflexion !!

En fait, il faudrait intervenir dans le classeur HISTOCARBU" sur le numéro
de ligne et seulement sur celle ci de la colonne A à J puisque quand on
filtre, le numéro de ligne ne change pas.

Et si je mettais un numéro d'enregistrement pour chaque ligne ? afin de
"repérer" la ligne correspondante

Enfin c'est qu'une idée de débutant ....
Avatar
Daniel.C
Bonjour.
Est-ce qu'il est possible d'avoir deux lignes pour le même véhicule à
la même date ?
Daniel

Bonjour

Pour une modification ou suppression

Clic sur "Ouverture" pour ouvrir l'UsurForm "Saisie d'une fiche carburant"
Clic sur "Historique" pour ouvrir l'UserForm "Historique"
Double-clic dans une valeur (ligne) du tableau se qui provoque l'affichage de
3 boutons "Modifier" "Supprimer" "Annuler" et le remplissage des 10 TextBox.

Pour supprimer, clic sur "Supprimer" se qui provoque la suppression de
l'enregistrement et une nouvelle initialisation de la ListBox

Pour modifier, on change une ou des valeurs des TextBox puis on clic sur
"Modifier" se qui provoque la modification de l'enregistrement et une
nouvelle initialisation de la ListBox

A savoir que ces 2 parties fonctionnes quand on filtre pas.

Des que l'on filtre alors, apparement,

<<Si je supprime l'enregistrement de la ligne 15 alors suppression des 10
<<lignes au dessus mais l'enregistrement reste. Pourquoi 10 lignes ? Peut
être
<<car 10 colonnes !!

<<En ce qui concerne la modification

<<Si je veux modifier la valeur de l'enregistrement de la ligne 15 alors
<<l'enregistrement de la ligne 15 reste idem mais par contre la modification
<<s'affiche ligne 14

J'espère avoir été clair dans mes explications

Cordialement

David


Avatar
Daniel.C
Non, C'est très bien ! tu peux le mettre dans le listbox dans une
colonne ayant une largeur 0 ce qui fait qu'on ne la voit pas.
Daniel

En complément et après grande réflexion !!

En fait, il faudrait intervenir dans le classeur HISTOCARBU" sur le numéro de
ligne et seulement sur celle ci de la colonne A à J puisque quand on filtre,
le numéro de ligne ne change pas.

Et si je mettais un numéro d'enregistrement pour chaque ligne ? afin de
"repérer" la ligne correspondante

Enfin c'est qu'une idée de débutant ....


Avatar
Daniel.C
Mais tout compte fait, attend pour le faire, on doit pouvoir s'en
sortir sans.
Daniel

Non, C'est très bien ! tu peux le mettre dans le listbox dans une colonne
ayant une largeur 0 ce qui fait qu'on ne la voit pas.
Daniel

En complément et après grande réflexion !!

En fait, il faudrait intervenir dans le classeur HISTOCARBU" sur le numéro
de ligne et seulement sur celle ci de la colonne A à J puisque quand on
filtre, le numéro de ligne ne change pas.

Et si je mettais un numéro d'enregistrement pour chaque ligne ? afin de
"repérer" la ligne correspondante

Enfin c'est qu'une idée de débutant ....




1 2 3 4