XL 2016 Problème de Or et and

Phillip

XLDnaute Occasionnel
Bonjour,

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

Quelle est l'erreur de syntaxe ?

merci

Cordialement
 

Pièces jointes

  • masquerS.xlsm
    21 KB · Affichages: 46

ChTi160

XLDnaute Barbatruc
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
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
JHA
ainsi ca Fonctionne aussi
Code:
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
jean marie
 

Phillip

XLDnaute Occasionnel
Bonjour

@ 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

Cordialement
 

ChTi160

XLDnaute Barbatruc
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
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

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 ;)
 

patricktoulon

XLDnaute Barbatruc
petite explication sur or and
ta ligne
VB:
 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
 
Dernière édition:

Phillip

XLDnaute Occasionnel
Bonjour,

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 ?

Merci de vos lumières

Cordialement
 

Pièces jointes

  • btip.xlsm
    21.2 KB · Affichages: 2

ChTi160

XLDnaute Barbatruc
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
jean marie
 

Phillip

XLDnaute Occasionnel
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
 

patricktoulon

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 517
dernier inscrit
XavG