Cumul d'une "différent de" et d'un "like"

Bonjour,

J'ai un code qui permet de fermer certain onglet sous une condition, et pas d'autres.

"Systeme" est une variable et selon le système, on garde les onglet qui commence par ce système.

j'ai créer 3 variable car on peux choisir jusqu’à 3 systèmes.

Par exemple, si c'est le système "VOITURE" qui est choisi, on gardes les onglets qui commencent par "VOITURE"

J'ai aussi des onglets que je veux garder ouvert dans tout les cas (PRESENTATION, CALCUL, COMMUNES, NOMENCLATURE et CHEMISE PAPIER).

Mais j'ai une ligne de code qui ne fonctionne pas. Car en fait, je n'arrive pas à garder ouvert les pages s'il y a plusieurs systèmes.

En fait je pense que la commande "différent de" <> ne fonctionne pas avec le "like" "*".

Je vous met le code que j'ai actuellement, mais qui ne fonctionne pas.

Dim Ws As Worksheet

Systeme = Range("Systeme").Value
systeme2 = Range("Systeme2").Value
systeme3 = Range("Systeme3").Value

For Each Ws In Worksheets

    If Ws.Name <> "PRESENTATION" And Ws.Name <> "CALCUL" And Ws.Name <> "COMMUNES" And Ws.Name <> "NOMENCLATURE" And Ws.Name <> "CHEMISE PAPIER" And Ws.Name <> systeme2 & "*" And Ws.Name <> systeme3 & "*" Then

'   Ws.Visible = 1(Rendre visible) ou 0(rendre invisible)
    Ws.Visible = IIf(Ws.Name Like Systeme & "*", 1, 0)

    End If

Next

Pouvez-vous m'aider svp ?

Merci d'avance

Bonjour au lieu d'utiliser la fonction like, pourquoi ne pas utiliser le fonction InStr

Fred

du genre :

if InStr(Ws.Name, Systeme )> 0 then 'l’occurrence a été trouvée

fred

Bonjour fred2406,

A vrai dire je ne connaissais pas cette fonction.

Je viens de me renseigner un peu et je ne vois pas comment l'utiliser dans mon cas.

bahhhhh

comme ceci :

if InStr(Ws.Name, Systeme )> 0 then  
Ws.Visible = true
else 
 Ws.Visible = false
end if

ça marche pas ??

Bonjour

si tu tiens à tes like

If Ws.Name <> "PRESENTATION" And Ws.Name <> "CALCUL" And Ws.Name <> "COMMUNES" And Ws.Name <> "NOMENCLATURE" And Ws.Name <> "CHEMISE PAPIER" And not(Ws.Name like systeme2 & "*") And not (Ws.Name like systeme3 & "*") Then

Bonjour h2so4,

Ta solution ne fonctionne pas, cela me garde tout ouvert, je ne sais pas trop pourquoi

fred2406, ta solution ne garde que le système 1 ouvert, si j'en choisis deux il ne prendra pas en compte le deuxieme. Je pense qu'il faut rajouter les systèmes 2 et 3 dans le code mais ça me met une erreur

Systeme2 et 3 peuvent être vides ? ou sont forcement a une valeur ??

faire un truc du genre si j'ai bien compris :

if InStr(Ws.Name, Systeme )> 0 or InStr(Ws.Name, Systeme2 )> 0 or InStr(Ws.Name, Systeme3 )> 0 then  
Ws.Visible = true
else 
 Ws.Visible = false
end if

Je penses que le mieux c'est de fournir un fichier test.. et de dire ce que souhaites... car là en parlant dans le vide c'est pas facile...

Fred

Les systèmes 2 et 3 peuvent être vides. Effectivement ton code fonctionne si les 3 sont remplit, il me faudrait juste l'équivalent en ayant la possibilité d'avoir des systèmes vides.

Mon fichier et très lourd et confidentiel, je vais essayer en recréer un pour l'exemple

Je vous met mon fichier excel

Re

Ci joint une proposition

Fred

Merci, ça à l'air de fonctionner.

Je vais l'implanter demain matin à mon fichier et je fermerais le sujet si tout est ok.

Merci beaucoup en tout cas,

Bonne soirée.

Rechercher des sujets similaires à "cumul different like"