Affichage simultané des plusieurs onglets à l'aide d'une macro

alexvol

XLDnaute Nouveau
Bonsoir,

je cherche depuis pas mal de temps mais là je sèche.

En fonction d'une valeur, je souhaite ouvrir plusieurs onglets : par exemple chiffre 2, 2 onglets spécifiques, chiffre 5, 5 onglets spécifiques.

Voici le code que j'ai écrit :
Code:
Dim val_ref As Integer
val_ref = Range("k4")

Select Case val_ref
    Case 1
        Sheets("SPTT1").Visible = True
    Case 2
        Sheets("SPTT1", "SPTT2").Visible = True
    Case 3
        Sheets("SPTT1", "SPTT2", "SPTT3").Visible = True
    Case 4
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4").Visible = True
    Case 5
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5").Visible = True
    Case 6
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6").Visible = True
    Case 7
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7").Visible = True
    Case 8
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8").Visible = True
    Case 9
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9").Visible = True
    Case 10
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10").Visible = True
    Case 11
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11").Visible = True
    Case 12
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12").Visible = True
    Case 13
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13").Visible = True
    Case 14
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13", "SPTT14").Visible = True
    Case 15
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13", "SPTT14", "SPTT15").Visible = True
    Case 16
        Sheets("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13", "SPTT14", "SPTT15", "SPTT16").Visible = True
End Select

En pièce jointe, un imprim-écran du code d'erreur.

Merci pour l'aide que vous pourrez m'apporter.

Cordialement
 

Pièces jointes

  • erreur.png
    erreur.png
    9.1 KB · Affichages: 48
  • erreur.png
    erreur.png
    9.1 KB · Affichages: 43
  • erreur.png
    erreur.png
    9.1 KB · Affichages: 47

Grand Chaman Excel

XLDnaute Impliqué
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Bonsoir alexvol,

Le problème est que tu ne peux pas passer plusieurs noms de feuilles en même temps dans Sheets( ).

En supposant que tes onglets sont dans un ordre précis, tu pourrais utiliser ceci :
(Je n'ai pas mis le nom de toutes tes feuilles...)

VB:
Sub Tata()
    Dim val_ref As Integer, i As Integer
    Dim arFeuille()
    
    arFeuille = Array("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5")   'etc....
    
    val_ref = Range("k4")
    For i = 1 To val_ref
        Sheets(i).Visible = True
    Next i
End Sub

A essayer.
 

Pierrot93

XLDnaute Barbatruc
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Bonjour,

une autre approche au cas ou les feuilles soient positionnées dans un autre index :
Code:
Option Explicit
Sub test()
Dim t() As Variant, i As Integer
t = Array("SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", _
    "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13", "SPTT14", "SPTT15", "SPTT16")
For i = 0 To Range("K4").Value - 1
    Sheets(t(i)).Visible = xlSheetVisible
Next i
End Sub
bonne journée
@+
 

alexvol

XLDnaute Nouveau
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Bonjour,

merci pour vos deux propositions. Elles fonctionnent parfaitement...seules. Je m'explique. J'ai deux boutons qui doivent afficher des onglets différents. Quand j'utilise pour chaque bouton la même formule en l'adaptant pour afficher les onglets souhaitées, un seul bouton fonctionne, le premier créé. Voici les codes pour les deux propositions que vous m'avez fait pour les deux boutons.

Proposition 1 - bouton 1
Code:
Dim valRefM As Integer, i As Integer
    Dim champMasc()
    
    champMasc = Array("BrulageM", "SPTT1", "SPTT2", "SPTT3", "SPTT4", "SPTT5", "SPTT6", "SPTT7", "SPTT8", "SPTT9", "SPTT10", "SPTT11", "SPTT12", "SPTT13", "SPTT14", "SPTT15", "SPTT16")
   
    valRefM = Range("k4")
    For i = 1 To 1 + valRefM
        Sheets(i).Visible = True
    Next i

Proposition 1 - bouton 2
Code:
Dim valRefF As Integer, j As Integer
    Dim champFem()
    
    champFem = Array("BrulageF", "SPTT1F")
   
    valRefF = Range("k7")
    For j = 1 To 1 + valRefF
        Sheets(j).Visible = True
    Next j

Proposition 2 - bouton 1
Code:
Dim t() As Variant, i As Integer
t = Array("BrulageF", "SPTT1F", "SPTT2F", "SPTT3F", "SPTT4F", "SPTT5F", "SPTT6F", "SPTT7F", "SPTT8F")
For i = 0 To Range("K7").Value - 1
    Sheets(t(i)).Visible = xlSheetVisible
Next i

Proposition 2 - bouton 2
Code:
Dim t() As Variant, i As Integer
t = Array("BrulageF", "SPTT1F", "SPTT2F", "SPTT3F", "SPTT4F", "SPTT5F", "SPTT6F", "SPTT7F", "SPTT8F")
For i = 0 To Range("K7").Value - 1
    Sheets(t(i)).Visible = xlSheetVisible
Next i

Dans chaque cas, je pense que le problème vient de la fonction "array". Mais je ne sais pas le régler.

Merci pour l'aide
 

Pierrot93

XLDnaute Barbatruc
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Re,

pas tout compris de ta problèmatique.... peut être partir sur une boucle affichant toutes les feuilles, puis une 2ème en masquant une partie des feuilles.... car je suppose que quand tu dis "ca ne fonctionne pas" tu n'as pas le résultat attendu ? ou un message d'erreur ? peut être nous en dire un peu plus...
 

alexvol

XLDnaute Nouveau
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Pardon si je ne suis pas très clair. Je recommence. En pièce jointe, une image des deux boutons.

J'ai affecté une macro à chacun de ces boutons en testant les deux propositions qui m'ont été faites.

Dans les deux cas, lorsque j'utilise la même proposition pour les deux boutons, il y a toujours un dysfonctionnement : le premier créé fonctionne parfaitement, m'affichant les onglets souhaités. Par contre pour le second, j'ai le message d'erreur suivant :

"erreur d'exécution 9 : l'indice n'appartient pas à la sélection".

En cliquant sur debogage, voici la ligne qui est surlignée : "Sheets(t(i)).Visible = xlSheetVisible".
Dans ce cas, c'est la proposition 2.

J'espère avoir été plus clair. Merci pour l'aide
 

Pièces jointes

  • boutons.png
    boutons.png
    6.3 KB · Affichages: 47

Pierrot93

XLDnaute Barbatruc
Re : Affichage simultané des plusieurs onglets à l'aide d'une macro

Re,

voir ce que contient la cellule en question....

sans doute lieu également de préciser le nom de la feuille où se trouve cette même cellule :
Code:
For i = 0 To Sheets("NomFeuille").Range("K7").Value - 1
 

Statistiques des forums

Discussions
312 453
Messages
2 088 552
Membres
103 881
dernier inscrit
malbousquet