Faire une action sur plusieurs onglets

Elo6b

XLDnaute Nouveau
Bonjour,
Sur cette action :
With Sheets("A-1")
Select Case n
Case 1
.Columns("h:gz").Hidden = False
.Columns("I:L").Hidden = True
.Columns("o:p").Hidden = True
.Columns("T:Y").Hidden = True
.Columns("AA:AC").Hidden = True
.Columns("AE:EZ").Hidden = True
.Columns("FC:FF").Hidden = True
.Columns("FH:FK").Hidden = True
.Columns("FM:FP").Hidden = True
.Columns("FR:FU").Hidden = True
.Columns("FW:fz").Hidden = True
Range("G9").Select
End Select
End With

Je voudrai également le faire sur un autre onglet "A prévisionnelle". Comment l'intégrer en même temps que le With Sheets("A-1") ?
En vous remerciant de votre aide!
 

tototiti2008

XLDnaute Barbatruc
Re : Faire une action sur plusieurs onglets

Bonjour Elo6b, Bonjour natorp, Bonjour stefan, :)

à tester

Code:
Dim Sht As Worksheet, n As Long
    For Each Sht In Sheets(Array("A-1", "A previsionnel"))
        With Sht
        Select Case n
            Case 1
                .Columns("h:gz").Hidden = False
                .Range("I:L,o:P,T:Y,AA:AC,AE:EZ,FC:FF,FH:FK,FM:FP,FR:FU,FW:fz").EntireColumn.Hidden = True
                .Activate
                .Range("G9").Select
            End Select
        End With
    Next
 

stefan373

XLDnaute Occasionnel
Re : Faire une action sur plusieurs onglets

Re, re,

Effectivement il y a peut-être une partie du code non dévoilée, mais en l'état du code envoyé, je pense qu'il ne ce passerai rien. :confused: et j'avais bien lu 1 et pas l. :)

Merci pour votre réponse.

A + Stéfan
 

tototiti2008

XLDnaute Barbatruc
Re : Faire une action sur plusieurs onglets

Re,

Oui, il doit nous manquer du code

Code:
Select Case n
    Case 1

Signifie : teste la valeur de la variable n
Si elle vaut 1, fait ce qui suit, jusqu'au prochain Case ou jusqu'au End Select
En général on fait un Select Case quand il y a beaucoup de cas, le fait qu'il n'y en ait qu'un veut surement dire qu'il ne nous a pas fourni les autres cas
Je ne sais pas si je répond à ta question, je ne sais pas ce qui te gène dans l'écriture...

Edit : si n n'est pas défini dans la première partie du code, en effet, il ne se passera rien puisque n ne sera pas égal à 1, d'accord avec toi ;)
 

stefan373

XLDnaute Occasionnel
Re : Faire une action sur plusieurs onglets

Re, re, re, :)

C'est bien ce que ma pensée me disait,:p mais effectivement vous avez encore une fois raison car aucun intérêt d'utiliser le Case avec une seule possibilité. :cool:

Un grand merci pour votre explication. :)

A + Stéfan
 

Elo6b

XLDnaute Nouveau
Re : Faire une action sur plusieurs onglets

Effectivement j'ai 11 cas qui s'imbriquaient.
Si n=1 alors c'est le cas que j'avais mis.
Par contre si n=2, colonnes différentes masquées, etc...
Comment dois-je faire après le next? Faut-il reprendre :
Dim Sht As Worksheet, n As Long
For Each Sht In Sheets(Array("A-1", "A previsionnel"))
With Sht
Select Case n
Case 2
.Columns("h:gz").Hidden = False
.Range("I:L,o:p,T:Y,AA:AC").EntireColumn.Hidden = True
.Activate
.Range("G9").Select
End Select
End With
Next
Et refaire pareil pour chaque n?
En vous remerciant de votre aide!
 

tototiti2008

XLDnaute Barbatruc
Re : Faire une action sur plusieurs onglets

Re,

Si tu vas en mode avancé quand tu écris ton message, tu as une balise code (#) qui permet de poster du code de façon plus lisible

ça devrait donner un truc comme ça


Code:
For Each Sht In Sheets(Array("A-1", "A previsionnel"))
        With Sht
        Select Case n
        Case 1
         .Columns("h:gz").Hidden = False
         .Range("I:L,o:P,T:Y,AA:AC,AE:EZ,FC:FF,FH:FK,FM:FP,FR:FU,FW:fz").EntireColumn.Hidden = True
         .Activate
         .Range("G9").Select
            Case 2
                .Columns("h:gz").Hidden = False
                .Range("I:L,o:P,T:Y,AA:AC").EntireColumn.Hidden = True
                .Activate
                .Range("G9").Select
            End Select
        End With
    Next
 

Elo6b

XLDnaute Nouveau
Re : Faire une action sur plusieurs onglets

Ca ne fonctionne pas... Bug au niveau de la ligne
Code:
For Each Sht In Sheets(Array("A-1", "A previsionnelle"))
Je mets le fichier en pièce jointe
Merci de vos aides!
 

Pièces jointes

  • PDE Forum Excel.zip
    255.3 KB · Affichages: 20
  • PDE Forum Excel.zip
    255.3 KB · Affichages: 23
  • PDE Forum Excel.zip
    255.3 KB · Affichages: 18

Elo6b

XLDnaute Nouveau
Re : Faire une action sur plusieurs onglets

Bonsoir kjin,
C'est le même fichier mais avec des soucis différents!
Sur la précédente discussion, le but était de faire un affichage dépend de 2 cellules.
ici, j'y arrive (grâce à vous!) sur un onglet mais pas sur 2 à la fois (les 2 onglets sont construits de manière identiques).
Je n'arrive pas à faire parcourir l'action sur les 2 onglets.
Merci de votre aide et bonne soirée!
 

kjin

XLDnaute Barbatruc
Re : Faire une action sur plusieurs onglets

Bonsoir,
C'est le même fichier mais avec des soucis différents!
Mouais ! Inutile de multiposter sur le même sujet, on fini par ne plus suivre le fil...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$24" Or Target.Count > 1 Then Exit Sub
n = [choix_actuel]
For Each ws In Sheets
    Select Case ws.Name
    Case "A-1", "A Prévisionnelle"
    With ws
        Select Case n
        Case 1 To 5
            .Columns("H:FZ").Hidden = True
            x1 = (n * 30) - 22
            x2 = (n * 30) + 6
            .Range(.Columns(x1), .Columns(x2)).Hidden = False
            For x3 = 1 To 5
                .Columns(x3 * 5 + 152 + n).Hidden = False
            Next
        Case 6
            .Columns("H:FZ").Hidden = False
        End Select
    End With
    End Select
Next
End Sub
Mais il est vrai que je n'ai pas traité les cas > 6 car je pensais que tu pourrais compléter (je t'ai répondu sur ce fil)
Reviens si ce n'est pas le cas
A+
kjin
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 931
Messages
2 093 721
Membres
105 796
dernier inscrit
Max...26