Vba : empiler des conditions

  • Initiateur de la discussion Initiateur de la discussion boudha74
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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
 
Re : Vba : empiler des conditions

Bonjour,

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

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
237
  • Question Question
Power Query Power Query
Réponses
26
Affichages
573
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour