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

Résolu/Fermé
Cailloux50 Messages postés 79 Date d'inscription jeudi 13 septembre 2018 Statut Membre Dernière intervention 10 août 2020 - 5 nov. 2018 à 11:13
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 5 nov. 2018 à 13:24
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
A voir également:

1 réponse

jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
5 nov. 2018 à 11:20
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
Cailloux50 Messages postés 79 Date d'inscription jeudi 13 septembre 2018 Statut Membre Dernière intervention 10 août 2020
5 nov. 2018 à 11:33
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
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
5 nov. 2018 à 11:38
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
Cailloux50 Messages postés 79 Date d'inscription jeudi 13 septembre 2018 Statut Membre Dernière intervention 10 août 2020
5 nov. 2018 à 11:59
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
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675 > Cailloux50 Messages postés 79 Date d'inscription jeudi 13 septembre 2018 Statut Membre Dernière intervention 10 août 2020
5 nov. 2018 à 12:02
tu peux reformuler ?
Ta valeur... laquelle ?
"Ne prenne que .." ou "Ne prenne. pas ..." ?
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675 > jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024
5 nov. 2018 à 12:02
De toutes façons... nouvelle question = ouverture d'une nouvelle discussion.
Merci.
0