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

  • Votes
  • Date
  • Date décroissante
  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
    

    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
      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..
    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
      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
        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!!!!!
      2. bonjour

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

        merci
        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
          
      3. Re,

        il faut rajouter qelque chose pour selectionner

        je suis un débutant

        merci
        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
          
      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
        1. Re,
          ça bugue sur la derniere ligne

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

            Bonne continuation et bonne soirée

            cdlmt