condition combiner

luisf

XLDnaute Occasionnel
bonjour
j'ai un souci pour réaliser des conditions combiner. Je m'explique:

if sheet(1).combobox2.value="4" then
if sheet(x).range("c"&i).value = "" then
cacher la ligne i
end if
end if

avec x de 4 à 19 et i de 4à100
et j'ai 4 cas de valeur pour la combobox2 (de 1à4)

alor j'avais penser a un truc du genre:
For i = 1 To 4
Select Case i
Case 1
for j = 4 to 19
If Sheets(1).ComboBox2.Value = "4" Then
For m = 4 To 100
If Sheets(j).Range("c" & m).Value = "" Then
Sheets(j).Rows(m).EntireRow.Hidden = True
End If
Next m
End If
next j
Case 2
If Sheets(1).ComboBox2.Value = "3" Then
.....
End If
Case 3
If Sheets(1).ComboBox2.Value = "2" Then
......
End If
Case 4
If Sheets(1).ComboBox2.Value = "1" Then
......
End If
End Select
Next l

mais sa ne fonctionne pas car je ne sais pas comment déclarer mes variables ou si sa se trouve ce n'est pas faisable!???

merci
 

skoobi

XLDnaute Barbatruc
Re : condition combiner

Bonsoir,

A tester:

Code:
n = 5
For i = 1 To 4
    n = n - 1
    For j = 4 To 19
        If Sheets(1).combobox2.Value = CStr(n) Then
            For m = 4 To 100
                If Sheets(j).Range("c" & m).Value = "" Then
                    Sheets(j).Rows(m).EntireRow.Hidden = True
                End If
            Next m
        End If
    Next j
Next i
 

luisf

XLDnaute Occasionnel
Re : condition combiner

Bonsoir,

A tester:

Code:
n = 5
For i = 1 To 4
    n = n - 1
    For j = 4 To 19
        If Sheets(1).combobox2.Value = CStr(n) Then
            For m = 4 To 100
                If Sheets(j).Range("c" & m).Value = "" Then
                    Sheets(j).Rows(m).EntireRow.Hidden = True
                End If
            Next m
        End If
    Next j
Next i

slt.
j'étais en train de regarder la solution que tu m'a proposé hier
sa correspond a quoi le " CStr(n) " ????
 

luisf

XLDnaute Occasionnel
Re : condition combiner

ok merci
j'ai essayer d'adapter ta solution:
For n = 1 to 4
select case n
case 1
If sheets(1).combobox2.value="1" then
for m = 5 to 19
for p = 4 to 100
if sheets(m).range("f"&p).value="X" then
sheets(m).rows(p).entirerow.hidden=false
end if
next p
next m
end if

case 2
If sheets(1).combobox2.value="2" then
for m = 5 to 19
for p = 4 to 100
if sheets(m).range("f"&p).value="X" then
sheets(m).rows(p).entirerow.hidden=true
end if
next p
next m
end if

case 3
If sheets(1).combobox2.value="3" then
for m = 5 to 19
for p = 4 to 100
if sheets(m).range("e"&p).value="X" or sheets(m).range("f"&p).value="X" then
sheets(m).rows(p).entirerow.hidden=true
end if
next p
next m
end if


case 4
If sheets(1).combobox2.value="4" then
for m = 5 to 19
for p = 4 to 100
if sheets(m).range("c"&p).value="" then
sheets(m).rows(p).entirerow.hidden=true
end if
next p
next m
end if
end select
next n

mais sa ne marche pas!
tu vois une erreur dans le code??
 

skoobi

XLDnaute Barbatruc
Re : condition combiner

Qu'est-ce qui ne marche pas?
Tu as une erreur dans le code où cela ne se passe pas comme tu veux?
Si le résultat escompté ne se produit pas, il faut revoir le code mais pour t'aider il faudrait que tu expliques clairement le but recherché.
 

luisf

XLDnaute Occasionnel
Re : condition combiner

je n'arrive pas a avoir le résultat voulu!

dans le fichier exemple tu a sur la première feuille la combo ou se trouve les niveau et dans les autre feuille il y a des controle
je veux faire un tri dans les controle en fonction du niveau de contrôle choisi:
si niveau = 4 alors garder que les controles 4 et masquer les autre ligne
si n=3 garder controles 3 et 4 et masquer les autre ligne
si n=2 garder controles 2 et 3 et 4 et masquer les autre ligne
si n=1 alor garder la liste complete

et je veux que se tri se fasse au lancement de l'userform car la liste apparait ensuite dans un menu deroulant sur l'userform.

avec le code que j'ai fait quand je lance l'userform le tri ne se fais pas.
 

Pièces jointes

  • exemple.xls
    39 KB · Affichages: 77
  • exemple.xls
    39 KB · Affichages: 79
  • exemple.xls
    39 KB · Affichages: 87

skoobi

XLDnaute Barbatruc
Re : condition combiner

Re,

Voici une proposition. Je te laisse adapter par rapport au userform car j'ai pas compris comment tu veux l'utiliser.

Code:
For n = 2 To Sheets.Count
  With Sheets(n)
    der_lig = .[B65536].End(xlUp).Row
    Select Case Sheets(1).ComboBox2.Value
    Case "1"
        .Cells.EntireRow.Hidden = False
    Case "2"
        For lig = 4 To der_lig
            If Application.WorksheetFunction.CountIf(.Range("C" & lig & ":E" & lig), "X") = 0 Then .Rows(lig).Hidden = True
        Next
    Case "3"
        For lig = 4 To der_lig
            If Application.WorksheetFunction.CountIf(.Range("C" & lig & ":D" & lig), "X") = 0 Then .Rows(lig).Hidden = True
        Next
    Case "4"
        For lig = 4 To der_lig
            If .Range("C" & lig).Value <> "X" Then .Rows(lig).Hidden = True
        Next
    End Select
  End With
Next
 
Dernière édition:

luisf

XLDnaute Occasionnel
Re : condition combiner

re
j'ai laisser tomber cette méthode la car je n'arrivai pas a trouver comment adapter le code.

j'ai eu une autre idée qui est de définir des nom de liste a charger dans la combobox dans mon userform.

pour 2 cas sa fonctionne mais pour les 2 autre j'ai l'erreur :
Impossible de définir la propriété List.Index de table de propriété non valide.

voila le code que j'utilise:

For i = 1 To 16
Select Case i
Case 1
If ComboBox1.Value = "Contrôle Gros oeuvre" Then
With Sheets("Contrôle GO")
For q = 1 To 4
Select Case q
Case 1
If Sheets(1).ComboBox2.Value = "1" Then
Me.ComboBox2.List = Application.Transpose(Feuil5.Range("golog"))
End If
Case 2
If Sheets(1).ComboBox2.Value = "2" Then
Me.ComboBox2.List = Application.Transpose(Feuil5.Range("golog2"))
End If
Case 3
If Sheets(1).ComboBox2.Value = "3" Then
Me.ComboBox2.List = Application.Transpose(Feuil5.Range("golog3"))
End If
Case 4
If Sheets(1).ComboBox2.Value = "4" Then
Me.ComboBox2.List = Application.Transpose(Feuil5.Range("golog4"))
End If
End Select
Next q
End With
TextBox5.Value = Sheets(2).Range("b3").Value
End If

Case 2
If ComboBox1.Value = "Contrôle Cloison / Doublage" Then
With Sheets("Contrôle Cloison Doublage")
For q = 1 To 4
Select Case q
Case 1
If Sheets(1).ComboBox2.Value = "1" Then
Me.ComboBox2.List = Application.Transpose(Feuil6.Range("clois1"))
End If
Case 2
If Sheets(1).ComboBox2.Value = "2" Then
Me.ComboBox2.List = Application.Transpose(Feuil6.Range("clois2"))
End If
Case 3
If Sheets(1).ComboBox2.Value = "3" Then
Me.ComboBox2.List = Application.Transpose(Feuil6.Range("clois3"))
End If
Case 4
If Sheets(1).ComboBox2.Value = "4" Then
Me.ComboBox2.List = Application.Transpose(Feuil6.Range("clois4"))
End If
End Select
Next q
End With
TextBox5.Value = Sheets(2).Range("b4").Value
End If

et ainsi de suite jusqu'au case16!

tu connais se type d'erreur??
 

skoobi

XLDnaute Barbatruc
Re : condition combiner

Bonjour,

j'ai laisser tomber cette méthode la car je n'arrivai pas a trouver comment adapter le code.
Si le combobox se trouve simplement dans l'userform, tu as normalement juste à faire cette modification:

......
der_lig = .[B65536].End(xlUp).Row
Select Case Me.ComboBox1.Value
Case "1"
....

Et de créer le bouton "filtrer" par exemple dans lequel tu mets le code.
 

luisf

XLDnaute Occasionnel
Re : condition combiner

re
désolé le fichier est trop important.
c'est bon je viens de réussir a contourner ce problème en créant des noms de liste a charger dans la combobox et c'est même mieux pour le reste de mon projet.

merci quand même pour toutes tes réponse
 

Statistiques des forums

Discussions
312 001
Messages
2 084 481
Membres
102 581
dernier inscrit
Michou