Help pour Array

Résolu
reno421 Messages postés 47 Statut Membre -  
reno421 Messages postés 47 Statut Membre -
Bonjour,

Hé oui, me voilà de retour. Je sèche vraiment là. Je veux automatiser l'impression au moyen d'une macro via un bouton sur l'écran. Pour celà, je dois sélectionner tous les onglets sauf 3 qui porte tjs le même nom (PAA, INFO et site). Quand j'utilise les macros et que je fait sélectionner tous les onglets, en VBA celà se traduit par :
Sheets(Array("INFO", "PAA-VLT", "site 61 63", "Aguesses", "Marcotty")).Select

Ok mais si je veux arriver à faire la même chose de manière à ce que Array se remplisse automatiquement du nom des onglets, comment dois-je procéder ?

D'avance merci

4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sub test()
        Dim TSh() As String
        
        For x = 1 To Worksheets.Count
            If Sheets(x).Name <> "PAA" And Sheets(x).Name <> "INFO" And Sheets(x).Name <> "site" Then
                ReDim Preserve TSh(x - 1)
                TSh(x - 1) = Sheets(x).Name
            End If
        Next x
        Worksheets(TSh).Select
    End Sub
    
    0
    1. reno421 Messages postés 47 Statut Membre
       
      f894009,

      merci beaucoup mais il plante à la dernière instruction : Worksheets(TSh).Select

      j'ai le message erreur 9, l'indice n'appartient pas à la sélection.
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > reno421 Messages postés 47 Statut Membre
         
        Re,

        normal, j'ai oublie de changer l'incrementation du pointeur tableau TSh quand j'ai integre le test de vos onglets

        Sub test()
            Dim TSh() As String, N As Byte
            
            N = 0
            For x = 1 To Worksheets.Count
                If Sheets(x).Name <> "PAA" And Sheets(x).Name <> "INFO" And Sheets(x).Name <> "site" Then
                    ReDim Preserve TSh(N)
                    TSh(N) = Sheets(x).Name
                    N = N + 1
                End If
            Next x
            Worksheets(TSh).Select
        End Sub


        une autre facon de tester les onglets

        Sub test_1()
            Dim TSh() As String
            Dim TSh_NoP, N As Byte
            
            N = 0
            TSh_NoP = Array("PAA", "INFO", "site")
            For x = 1 To Worksheets.Count
                If IsError(Application.Match(Sheets(x).Name, TSh_NoP, 0)) Then
                    ReDim Preserve TSh(N)
                    TSh(N) = Sheets(x).Name
                    N = N + 1
                End If
            Next x
            Worksheets(TSh).Select
        End Sub
        
        0
    2. reno421 Messages postés 47 Statut Membre
       
      Merci, le code tient la route pourtant il plante et m'indique erreur 9, Indice en dehors de la plage
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > reno421 Messages postés 47 Statut Membre
         
        Re,

        Pourquoi ca marche chez moi ???
        0
      2. reno421 Messages postés 47 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci, la secconde solution fonctionne, la première pas, je ne comprends pas pourquoi
        0
  2. reno421 Messages postés 47 Statut Membre
     
    Merci à f894009, son code fonctione car la sélection s'opère bien (vérification en mode pas à pas) pourtant, il m'indique l'erreur 9, Indice en dehors de la plage.

    il s'agit d'une broutille mais laquelle :-((

    Décidément, y'a vraiment des as de VBA, moi je sèche
    0
  3. reno421 Messages postés 47 Statut Membre
     
    f894009 ,

    Merci pour ta précieuse aide pour ces macros idem pour celle du post comment améliorer vitesse d'exécution. Tout est beaucoup plus rapide, super.

    Juste une question, quand j'applique la mise en page, il ne le fait que sur la première feuille de la sélection du à la ligne "With ActiveSheet.PageSetup". j'ai bien tenté de le faire par With Selection mais ca ne fonctionne pas.

    Aurais-tu un petit truc SVP;

    D'avance merci
    0
    1. reno421 Messages postés 47 Statut Membre
       
      sorry, avait mal copier quelquechoses. Tu es un monstre en vba.
      un tout grand merci
      0