Programmation VBA

Résolu
Bonjour,

j'ai un classeur Excel de plusieurs feuilles, pour les besoins d'une application j'ai réalisé une macro pour la selection de toutes les feuilles

voici la macro:
'''''''''''''''''''selection des feuilles'''''''''''''''''''''

Dim I As Byte 'déclare la variable I (Incrément)
Dim OS As Variant 'déclare la variable OS (OngletS)

ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
For I = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
    OS(I) = Sheets(I).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
Next I 'prochain onglet de la boucle
Sheets(OS).Select 'sélectionne les onglets du tableau OS


comment faire pour que la macro ne selectionne pas les feuilles "Source" , "calcul" et "tableaux"

merci

Configuration: Windows / Chrome 74.0.3729.169

9 réponses

  1. Modérateur
    Bonjour,

    A l'avenir, merci de placer tes questions VBA dans le forum VBA (j'ai déplacé celle-ci).
    Merci également d'utiliser les BALISES DE CODE.
    Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Et pour répondre à ta question...... en faisant des IF
    If Sheets(I).Name <> "Source" AND Sheets(I).Name<>"calcul" AND Sheets(I).Name<>"tableaux" Then
      '...
      '... ici ton code
    
    
      EndIf
    

    0
    1. bonjour
      merci pour ta reponse

      j'ai fais ça !
      et ça bloque
      je ne suis qu'un débutant, je sais ce qui ne va pas

      '''''''''''''''''''selection des feuilles'''''''''''''''''''''
      
      Dim i As Byte 'déclare la variable I (Incrément)
      Dim OS As Variant 'déclare la variable OS (OngletS)
      If Sheets(i).Name <> "Source" And Sheets(i).Name(i) <> "Modele" Then
      
      ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
      
      For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
          OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
      Next i 'prochain onglet de la boucle
      Sheets(OS).Select 'sélectionne les onglets du tableau OS
      
      End If
      0
      1. Modérateur
        Déjà... OU SONT LES BALISES DE CODE ?????!!!!!

        Ensuite... c'est dans la boucle qu il faut placer le code du if..... pas avant..
        0
    2. Bonjour à tous les deux

      Quelque chose comme ça
      '''''''''''''''''''selection des feuilles'''''''''''''''''''''
      Dim i As Byte 'déclare la variable I (Incrément)
      Dim OS() 'déclare la variable OS (OngletS)
      ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
      For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
        If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
          OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
        End If
      Next i 'prochain onglet de la boucle


      RQ. celle là Sheets(OS).Select 'sélectionne les onglets du tableau OS me parait douteuse !

      Cdlmnt
      0
      1. bonjour
        j 'ai fais ça :
        '
        ''''''''''''''''''selection des feuilles'''''''''''''''''''''
        Sub Selection ()
        Dim i As Byte 'déclare la variable I (Incrément)
        Dim OS() 'déclare la variable OS (OngletS)
        ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
        For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
          If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
            OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
          End If
        Next i 'prochain onglet de la boucle
        End Sub


        cela ne fonctionne pas!!!!

        rien n'est selectionné !!

        je comprend pas pkoi
        0
        1. Bonjour,

          Balises, balises, ah mes belles balises de code……..

          Que voulez-vous dire par:

          rien n'est selectionné !!
          Parce que dans le code, y a rein de selectionne!!!!!
          0
      2. bonjour

        je veux selectionner toutes les feuilles autre que la feuille "source" et la feuille "Modele" .

        merci
        0
        1. Re,

          je veux selectionner toutes les feuilles autre
          Certes, certes mais je repete que dans le code y a pas de selection mais:
          OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
          
          0
      3. Re,

        il faut rajouter qelque chose pour selectionner

        je suis un débutant

        merci
        0
        1. Re,

          ''''''''''''''''''selection des feuilles'''''''''''''''''''''
          Sub Selection()
              Dim i As Long 'd?clare la variable I (Incr?ment)
              Dim OS() 'd?clare la variable OS (OngletS)
              ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
              For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
                  If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
                      OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
                  End If
              Next i 'prochain onglet de la boucle
              Sheets(OS).Select          'selection des onglets
          End Sub
          
          0
      4. Essaies ceci pour mettre 1 en A1 des feuilles selectionnées

        Sub ok()
        '''''''''''''''''''selection des feuilles'''''''''''''''''''''
        Dim i As Byte 'déclare la variable I (Incrément)
        Dim n As Long ' nombre de feuilles dans OS
        Dim OS() 'déclare la variable OS (OngletS)
        n = -1
        For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
          If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
            n = n + 1
            ReDim Preserve OS(0 To n)
            OS(n) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
          End If
        Next i 'prochain onglet de la boucle
        Sheets(OS).Select 'sélectionne les onglets du tableau OS et mettre 1 en A1
        Range("A1").Select
        ActiveCell.Value = 1
        End Sub

        CDlmnt
        0
        1. Re,
          ça bugue sur la derniere ligne

          elle ne selectionne pas les feuilles (autre que Source et Modele)
          0
          1. Chez moi, ça fonctionne
            https://mon-partage.fr/f/X4Iw3TdG/
            0
        2. ouii ça marche
          merci bcp mon frere
          0
          1. De rien

            Bonne continuation et bonne soirée

            cdlmt
            0