Programmation VBA

Résolu
jacksa3ada -  
ccm81 Messages postés 11033 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
  2. jacksa3ada
     
    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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  4. jacksa3ada
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jacksa3ada
     
    bonjour

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

    merci
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  7. jacksa3ada
     
    Re,

    il faut rajouter qelque chose pour selectionner

    je suis un débutant

    merci
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  9. jacksa3ada
     
    Re,
    ça bugue sur la derniere ligne

    elle ne selectionne pas les feuilles (autre que Source et Modele)
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Chez moi, ça fonctionne
      https://mon-partage.fr/f/X4Iw3TdG/
      0
  10. jacksa3ada
     
    ouii ça marche
    merci bcp mon frere
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      De rien

      Bonne continuation et bonne soirée

      cdlmt
      0