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. ouii ça marche
    merci bcp mon frere
    0
    1. De rien

      Bonne continuation et bonne soirée

      cdlmt
      0
  2. 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
  3. 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,

      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
    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. 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
    4. 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
        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. 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