Vba : empiler des conditions

boudha74

XLDnaute Nouveau
Bonjour à tous,

je suis débutant, j'essaie d'empiler des conditions.

L'idée est : en fonction d'une valeur de cellule, je souhaiterai afficher ou masquer un nombre de lignes dans deux selection diférentes.
- 1ere condition (valeur de P1), selection lignes de 4:11
- 2eme condition (valeur de Q1), selection lignes de 12:19

Il traite bien la 1 ere condition, mais pas correctement la deuxiéme.

Merci de votre aide


Code:
Public Sub nbposte()

' remise à 0 du contenu des cellules

'Dim ligne As Long

'For ligne = 4 To 60
'Range("B" & ligne) = ""
'Range("I" & ligne) = ""
'Range(("C" & ligne), ("E" & ligne)) = ""
'Range(("J" & ligne), ("L" & ligne)) = ""
'Next ligne

'1 ere Condition Valeur P1

If Range("P1") = "1" Then

    Rows("4:11").EntireRow.Hidden = False
    Rows("4:10").EntireRow.Hidden = True

ElseIf Range("P1") = "2" Then

    Rows("4:11").EntireRow.Hidden = False
    Rows("5:10").EntireRow.Hidden = True

ElseIf Range("P1") = "3" Then
 
   Rows("4:11").EntireRow.Hidden = False
   Rows("6:10").EntireRow.Hidden = True

ElseIf Range("P1") = "4" Then

    Rows("4:11").EntireRow.Hidden = False
    Rows("7:10").EntireRow.Hidden = True

ElseIf Range("P1") = "5" Then

  Rows("4:11").EntireRow.Hidden = False
  Rows("8:10").EntireRow.Hidden = True

ElseIf Range("P1") = "6" Then

  Rows("4:11").EntireRow.Hidden = False
  Rows("9:10").EntireRow.Hidden = True

ElseIf Range("P1") = "7" Then

 Rows("4:11").EntireRow.Hidden = False
 Rows("10").EntireRow.Hidden = True

Else

Rows("4:11").EntireRow.Hidden = False

End If


'2 eme Condition Valeur Q1

 If Range("Q1") = "1" Then
 
 Rows("12:19").EntireRow.Hidden = False
 Rows("12:18").EntireRow.Hidden = True

  ElseIf Range("Q1") = "2" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("13:18").EntireRow.Hidden = True
 
  ElseIf Range("Q1") = "3" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("14:18").EntireRow.Hidden = True
 
  ElseIf Range("Q1") = "4" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("15:18").EntireRow.Hidden = True
 
  ElseIf Range("Q1") = "5" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("16:18").EntireRow.Hidden = True
 
  ElseIf Range("Q1") = "6" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("17:18").EntireRow.Hidden = True
 
  ElseIf Range("Q1") = "7" Then
 Rows("12:19").EntireRow.Hidden = False
 Rows("18").EntireRow.Hidden = True

Else

 Rows("12:19").EntireRow.Hidden = False

End If


 End Sub
 

unrender

XLDnaute Junior
Re : Vba : empiler des conditions

Je ne sais pas pourquoi ça ne va pas... juste pour te dire que tu aurais pu utiliser le Select Case :

Code:
Select Case Range("P1")
Case "1"
     Rows("4:11").EntireRow.Hidden = False
     Rows("4:10").EntireRow.Hidden = True
Case "2"
.....
.....

etc....

Sinon, quand tu dis qu'il ne traite pas correctement la 2ème condition, ça te fait quelque chose de particulier ou ça ne fait rien du tout ?
 
Dernière édition:

boudha74

XLDnaute Nouveau
Re : Vba : empiler des conditions

Bonjour unrender,

c'est assez curieux, cela interagit avec la selection de la condition, mais ca ne la respecte pas du tout.

Exemple :
- si je mets 3 pour la premiere condition => ok
- si je mets 2 pour la premiere condition => il m'affiche 3 lignes....

Je vais essayer ta solution
 

Softmama

XLDnaute Accro
Re : Vba : empiler des conditions

Bonjour,

si j'ai compris ton pb, essaie ceci, à la place de ta macro :p

VB:
Public Sub nbposte()
    Range("4:19").EntireRow.Hidden = False
    Range("4:" & 11 - Range("P1")).EntireRow.Hidden = True
    Range("12:" & 19 - Range("Q1")).EntireRow.Hidden = True
End Sub
 

Softmama

XLDnaute Accro
Re : Vba : empiler des conditions

Re,

Heu plutôt ceci, à la réflexion :
VB:
Public Sub nbposte()
    Range("4:19").EntireRow.Hidden = False
    Range(IIf([P1] > 0, 3 + [P1], "4") & ":" & 10).EntireRow.Hidden = True
    Range(IIf([Q1] > 0, 11 + [Q1], "12") & ":" & 18).EntireRow.Hidden = True
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal