VBA Excel Pb affichage ComboBox If

Résolu
Bonjour,
Je fais appel à vous ce jour pour une bizarrerie VBA sous Excel (testé sous 2003).
Je souhaite que s'affiche, dans une Combo de mon USF, le nom des feuilles du classeur, mises à part 3 de ces feuilles...
Ma grande question du jour est pourquoi?
Pourquoi ce code affiche tout de même "Feuil1", "Facture" et "Devis" dans la ComboBox :

Private Sub UserForm_Initialize()
Dim Ws As Worksheet
ComboBox1.Clear
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name <> "Feuil1" Or Ws.Name <> "Facture" Or Ws.Name <> "Devis" Then
            ComboBox1.AddItem Ws.Name
        End If
    Next Ws
End Sub


Alors qu'avec ce code les feuilles non désirées ne s'affichent pas :

Private Sub UserForm_Initialize()
Dim Ws As Worksheet
ComboBox1.Clear
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name = "Feuil1" Or Ws.Name = "Facture" Or Ws.Name = "Devis" Then
        Else
            ComboBox1.AddItem Ws.Name
        End If
    Next Ws
End Sub


J'ai donc trouvé ma solution, mais je cherche tout de même à comprendre.
Merci d'avance.
--
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --

3 réponses

  1. Re,

    Pour ma part, je préfére ce code

    Private Sub UserForm_Initialize()
    sauf = "Feuil1,Facture,Devis,"
    For i = 1 To Sheets.Count
    If InStr(sauf, Sheets(i).Name & ",") = 0 Then ComboBox1.AddItem Sheets(i).Name
    Next i
    End Sub
    0
    1. Modérateur
      Re,
      Merci Mike, en effet ça semble logique quand on le voit.
      A+
      0
  2. Bonjour,

    A la place de "Or", essaie "And"....

    Bonne journée
    0
    1. Modérateur
      Salut cousin...
      Ca fonctionne bien avec "And".
      Je répète alors ma question, puisque l'on a avancé, pourquoi ce code ne fonctionne pas avec "Or"?
      Au niveau de la syntaxe tout semble correct : Si...Ou...Ou...Alors.

      EDIT : pas bien réveillé... Désolé, je retire ma question... Il est vrai que comme le nom de ma feuille "Feuil1" est différent de "Facture" alors, comme le test se fait avec "ou", il est normal d'ajouter à la combo...
      0
    2. Modérateur
      Merci CousinHub
      0
  3. Salut,

    Dans ton deuxième code tu écris si le nom de la feuille est égale à = "Feuil1" ne pas afficher

    alors que dans le premier code s'il est différent <> "Feuil1" ne pas afficher donc Feuil1 s'affiche ainsi que "Facture" "Devis" sauf les autres feuilles, ce qui n'est pas normal c'est qu'elles s'affichent

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Modérateur
      Salut Mike,
      Non dans le premier, j'indique bien : Si <> "Feuil1" alors afficher... C'est bien là le "souci".
      1er code :
      If Ws.Name <> "Feuil1" Or Ws.Name <> "Facture" Or Ws.Name <> "Devis" Then
              ComboBox1.AddItem Ws.Name
      End If
      0