J'ai un fichier dont je veux masquer tous les onglets sauf 2. Mon OR ne fonctionne pas, et ça ne fonctionne pas avec un AND...
VB:
Sub masquer()
Dim VFeuille As Worksheet
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-2020"
For Each VFeuille In ThisWorkbook.Worksheets
If VFeuille.Name <> VNomS Or VFeuille.Name <> "Statistiques" Then
VFeuille.Visible = xlSheetHidden
End If
Next
End Sub
Bonjour Phillip
Bonjour JHA
Bonjour le Fil ,le Forum
Attention aux espaces dans le Nom des Feuilles
VB:
Sub masquer()
Dim VFeuille As Worksheet
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-" & Year(Date)
For Each VFeuille In ThisWorkbook.Worksheets
.Name = Trim(.Name)
With VFeuille
If .Name <> VNomS And .Name <> "Statistiques" Then
.Visible = xlSheetHidden
End If
End With
Next
End Sub
PS : JHA
après test ça ne fonctionne pas !
jean marie
Sub masquerJHA()
Dim VFeuille As Worksheet
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-2020"
For Each VFeuille In ThisWorkbook.Worksheets
VFeuille.Name = Trim(VFeuille.Name)
If VFeuille.Name <> VNomS And VFeuille.Name <> "Statistiques" Then
VFeuille.Visible = xlSheetHidden
Else
VFeuille.Visible = xlSheetVisible
End If
Next
End Sub
@ ChTi160 : le trim plante...En rectifiant comme suit, ça marche...Il y a vait un espace dans un nom de feuille qui faisait planter ma version ???
VB:
Sub masquer()
Dim VFeuille As Worksheet
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-" & Year(Date)
For Each VFeuille In ThisWorkbook.Worksheets
VFeuille.Name = Trim(VFeuille.Name)
With VFeuille
If .Name <> VNomS And .Name <> "Statistiques" Then
.Visible = xlSheetHidden
End If
End With
Next
End Sub
Re
Surement Lol !
Fais une recherche pour voir ce qui est dit sur ce problème !
Tu le supprimes et tu fais attention de ne pas mettre d'espace lorsque tu Nommes les Feuilles !
chez moi (ta version) malgré la suppression des espaces , ca ne Fonctionne pas !
car
If VFeuille.Name <> VNomS Or VFeuille.Name <> "Statistiques"
cela veut dire si le Nom de la Feuille est différent de VNomS ou "Statistiques"
lorsque tu arrives sur "Statistiques" VNomS est Masqué;
il faut le And plutôt que Or
le Nom de la feuille ne doit à la fois pas être VNomS ET "Statistiques"
jean marie
Fonctionne en ma demeure
(testé au coin du feu, sur un Excel 2013 de bon aloi )
VB:
Sub Vivons_Cachés_Vivons_Heureux()
Dim ws As Worksheet
SeeMe_FeelMe = "toto,titi" ' adapter avec le nom des feuilles à ne pas masquer
For Each ws In Worksheets
If InStr(SeeMe_FeelMe, ws.Name) = 0 Then
ws.Visible = xlSheetHidden
End If
Next
End Sub
NB: Les connaisseurs verront l'hommage caché dans le code VBA
If VFeuille.Name <> VNomS Or VFeuille.Name <> "Statistiques" Then
traduction
si Vfeuille .Name est différent de VNOMS ou VFeuille.name est différent de 'Statistiques vba interprete avec or la seconde condition comme l'annulation de la première parce que avec "OU" c'est ou l'un ou l'autre mais pas les deux
maintenant avec and
VB:
If VFeuille.Name <> VNomS And VFeuille.Name <> "Statistiques" Then
traduction
vba l'interpretera comme ceci
si Vfeuille .Name est différent de VNOMS et VFeuille.name est aussi différent de 'Statistiques
maintenant voyons les chose en verlan (pour cela on utilisera "=" et non "<>"
VB:
If VFeuille.Name = VNomS Or VFeuille.Name = "Statistiques" Then Vfeuille.visible=true else vFeuille.visible=xlSheetHidden
traduction
si Vfeuille .Name est égal à VNOMS ou VFeuille.name est égal à 'Statistiques alors vfeuille est visible sinon elle est non visible
Je fais un petit UP sur ce sujet sur conseils d'un éminent membre du forum
Je veux créer un code qui cache tous les onglets sauf 2 que je définis. Le code ci-dessous fonctionne très bien (merci le forum) sur mon fichier de test attaché (BTIP.xlsm), mais PAS sur mon fichier réel où j'ai une erreur. En cherchant pour mon vrai fichier, je constate dans la fenêtre des espions pour ma variable Vfeuille que dans le code qui fonctionne, j'ai bien le "nom" de ma première feuille dans le champs "name", mais avec le même code sur mon fichier réel, le "nom" de ma première feuille est "sheet1" (voir fichier jpg)
VB:
Sub suppsemaines()
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-" & Year(Date)
For Each VFeuille In ThisWorkbook.Worksheets
VFeuille.Name = Trim(VFeuille.Name)
With VFeuille
If .Name <> VNomS And .Name <> "Statistiques" Then
.Visible = xlSheetHidden
End If
End With
Next
End Sub
Je ne comprends pas pourquoi il ne "charge" pas le nom réel
de ma première feuille (qui doit être du genre S24-2020) dans mon vrai fichier. J'ai une feuille par semaine, plus 2 ou 3 autres, y'a-t'il une limite au nombre de feuilles ?
Bonjour
chez moi la procédure ci dessous ,fonctionne correctement !
ou alors j'ai pas compris.
VB:
Sub suppsemaines()
Vsemaine = DatePart("ww", Date)
VNomS = "S" & Vsemaine & "-" & Year(Date)
For Each VFeuille In ThisWorkbook.Worksheets
VFeuille.Name = Trim(VFeuille.Name)
With VFeuille
If .Name <> VNomS And .Name <> "Statistiques" Then
.Visible = xlSheetHidden
End If
End With
Next
End Sub
Elle fonctionne très bien sur le fichier de test joint mais pas sur mon fichier réel, d'où les erreurs en capture d'écran, et c'est ça que je ne comprends pas. Malheureusement, je ne peux pas vous donner le fichier original (confidentiel) mais espérais que l'erreur vous permettrait de m'éclairer...
Le nom de ma feuille ne se "charge" pas dans la variable VFeuille pour le fichier original
re bonjour
de toute façon j'ai vu ce fichier
avec des codename du style "Feuil2" et il y en a un du style "Sheet1" c'est pas normal soit tu es en français soit en anglais mais pas les deux si c'est une feuille importer d'une version anglaise il y a de fortes chance qui y est un conflit dans le xml