Rechercher de ligne selon deux critères

Résolu/Fermé
kevin - 9 oct. 2012 à 17:34
 kevin - 10 oct. 2012 à 12:13
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 9/10/2012 à 19:05
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
0
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
0
Je viens d'envoyer le fichier sur le lien indiquer
merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 oct. 2012 à 09:03
Je viens d'envoyer le fichier sur le lien

Rien reçu: Il faut que tu copies l'URL du lien dans ton message
0
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
10 oct. 2012 à 00:46
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

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