Rechercher de ligne selon deux critères [Résolu/Fermé]

Signaler
-
 kevin -
Bonjour,

Je débute dans VBA, et après quelques heures de recherche je n'arrive pas à trouver la solution à mon problème.

J'ai une base de donnée qui ce remplie selon les information rentrées dans les différents UserForm crée.
L'un d'entre eux permet grâce à une "ComboBox1" de sélectioner une marque (ex : Ferrari, Peugeot, AUDI, ...) et grâce à une seconde "ComboBox2" qui elle me permet de sélectionner le type (ex: 1, 2, 3 ...).

J'ai en partie réussi grâce aux lignes de codes suivantes, à rechercher ce que je souhaite :

Dim Plage, Plage1 As Range
Dim Cel, Cel1 As Range
Dim ligne As Integer

If ComboBox1.Value = "" Then
MsgBox "Veuillez préciser le Modèle"
End If

If ComboBox2.Value = "" Then
MsgBox "Veuillez préciser le Type"
End If

<ital>If ComboBox1
.Value <> "" And ComboBox2.Value <> "" Then

ligne = Sheets("donnée").Range("A" & 1).Value

Set Plage = Sheets("donnée").Range("D5:D" & ligne)

For Each Cel In Plage

If Cel.Value = UserForm3.ComboBox1.Value Then
Rows(Cel.Row).Hidden = False
Else
Rows(Cel.Row).Hidden = True
End If

Next

Set Plage1 = Sheets("donnée").Range("G5:G" & ligne)

For Each Cel1 In Plage1

If Cel1.Value = UserForm3.ComboBox2.Value Then
Rows(Cel1.Row).Hidden = False
Else
Rows(Cel1.Row).Hidden = True
End If

Next

Windows(1).WindowState = xlMaximized
Worksheets("donnée").Activate
ActiveSheet.PageSetup.Orientation = xlLandscape
UserForm3.Hide
Userform1.Hide

End If</ital>

Le problème est que si par exemple je demande a afficher le modèle ferrari et le type 2 de ce modèle, de par les lignes de code, le logiciel m'affiche tous les types 2 de tous les modèles !! et non uniquement le type 2 de ferrari.

Pouvez-vous m'aider, en espérant avoir étais assez clair, n'hesitez a demander plus de précision au cas ou.

Je remercie d'avance les personnes qui prendont le temps de lire ce message et surtout d'y répondre.

bonne fin de journée.

<config>Windows 7 / Internet Explorer 7.0</config>

2 réponses

Messages postés
16279
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
30 octobre 2020
3 056
Bonjour

Si j'ai bien compris, tu veux masquer les lignes où, par exemple, on a des Ferrari de type2
c'est ça?

nombre de lignes inférieur ou non à 1000 ? (utilisation ou non de filtres élaborés)
dans l'attente

au besoin:
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de répon


Michel
non au contraire si l'utilisateur demande modèle: Ferrari type: 2 je souhaiterai que toutes les autres lignes soit masquer et celle demandé visible.
Car pour le moment, quand je demande ce type de recherche, il me donne tout les modèles de type 2 et non uniquement le modèle Ferrari.

le fichier possède moins de 1000 lignes.

Je déposerai le fichier demain matin quand je serait aux bureau :)

Merci bien
Je viens d'envoyer le fichier sur le lien indiquer
merci
Messages postés
16279
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
30 octobre 2020
3 056
Je viens d'envoyer le fichier sur le lien

Rien reçu: Il faut que tu copies l'URL du lien dans ton message
en cherchant et grâce à la remarque d'eric, j'ai réussi à obtenir ce que je souhaitai.
J'ai rajouter une condition avant la seconde boucle.

Merci d'avoir pris de ton temps pour me répondre
Messages postés
23601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 octobre 2020
6 430
Bonsoir à tous,

Dans la 2nde boucle tu démasque les lignes cachée lors de la 1ère boucle.

sans tester (faute de fichier) je ferai une seule boucle :
' ....
Set Plage = Sheets("donnée").Range("D5:D" & ligne)
For Each Cel In Plage
    Rows(Cel.Row).Hidden = Not ((Cel = UserForm3.ComboBox1) And (Cel.Offset(3, 0) = UserForm3.ComboBox2))
Next Cel
' ...

eric

ou puis je t'envoyer le fichier pour que tu puisse y jeter un oeil ?