Besoin d'un petit conseil pour crée une boucle

Résolu
Cailloux50 Messages postés 88 Statut Membre -  
titeufdu89 Messages postés 387 Statut Membre -
Bonjour,

Je voudrais crée une boucle pour que si le valeur en D1 vaut 5 alors :
j'ai "= true" jusqu'au 5.

.PivotItems("1").Visible = True
.PivotItems("2").Visible = False
.PivotItems("3").Visible = False
.PivotItems("4").Visible = False
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False

Voici le code complet mais c'est un peu long et je suis persuader que l'on peut reduire :

Sub Macro3()
'
' Macro3 Macro
'

'
Dim i As Long

For i = 1 To 12

Sheets("Feuil1").Select

If Range("D1") = 1 Then
ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = False
.PivotItems("3").Visible = False
.PivotItems("4").Visible = False
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False

End With
End If

If Range("D1") = 2 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = False
.PivotItems("4").Visible = False
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 3 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = False
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 4 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = False
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 5 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = False
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 6 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = False
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 7 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = False
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 8 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = True
.PivotItems("9").Visible = False
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 9 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = False
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = True
.PivotItems("9").Visible = True
.PivotItems("10").Visible = False
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 10 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = True
.PivotItems("9").Visible = True
.PivotItems("10").Visible = True
.PivotItems("11").Visible = False
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 11 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = True
.PivotItems("9").Visible = True
.PivotItems("10").Visible = True
.PivotItems("11").Visible = True
.PivotItems("12").Visible = False
End With
End If

If Range("D1") = 12 Then
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("1").Visible = True
.PivotItems("2").Visible = True
.PivotItems("3").Visible = True
.PivotItems("4").Visible = True
.PivotItems("5").Visible = True
.PivotItems("6").Visible = True
.PivotItems("7").Visible = True
.PivotItems("8").Visible = True
.PivotItems("9").Visible = True
.PivotItems("10").Visible = True
.PivotItems("11").Visible = True
.PivotItems("12").Visible = True
End With
End If

Next i

End Sub

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    ça doit pouvoir se résumer en
    
    valD1 = Range("D1").Value
    ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields("Mois"). _
    CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields("Mois")
     'on le met tous à false sauf le premier
     For i = 2 To .PivotItems.Count - 1
        .PivotItems(.PivotItems(i).Name).Visible = False
     Next i
    
     'on remet à true le nombre voulu
     For i = 2 To valD1
       If i <= .PivotItems.Count - 1 Then
        .PivotItems(i).Visible = True
      End If
     Next
    
    
    


    NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
    Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    Merci d'y penser dans tes prochains messages.

    0
    1. Cailloux50 Messages postés 88 Statut Membre
       
      Merci beaucoup ca fonctionne voici le code final

      Sub macro4()

      Dim i As Long
      Dim j As Long


      Sheets("Feuil1").Select

      For j = 1 To 2

      valD1 = Range("D1").Value
      ActiveSheet.PivotTables("Tableau croisé dynamique" & j).PivotFields("Mois"). _
      CurrentPage = "(All)"
      With ActiveSheet.PivotTables("Tableau croisé dynamique" & j).PivotFields("Mois")
      'on le met tous à false sauf le premier
      For i = 2 To .PivotItems.Count - 1
      .PivotItems(.PivotItems(i).Name).Visible = False
      Next i

      'on remet à true le nombre voulu
      For i = 2 To valD1
      If i <= .PivotItems.Count - 1 Then
      .PivotItems(i).Visible = True


      End If

      Next i



      End With
      Next j

      End Sub
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Par contre, vu que tu ne sembles pas l'avoir vu :
      Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
      Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      Merci d'y penser dans tes prochains messages.
      0
    3. Cailloux50 Messages postés 88 Statut Membre
       
      ok et sinon est- ce que tu serais faire pour que ma valeur j ne prenne comme valeur 1, 3, 5, 7?
      merci d'avance
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Cailloux50 Messages postés 88 Statut Membre
       
      tu peux reformuler ?
      Ta valeur... laquelle ?
      "Ne prenne que .." ou "Ne prenne. pas ..." ?
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      De toutes façons... nouvelle question = ouverture d'une nouvelle discussion.
      Merci.
      0