Rechercher de ligne selon deux critères
Résolu
kevin
-
kevin -
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>
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
-
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 -
-
-
-
-
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