Help pour Array

Résolu/Fermé
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015 - 11 févr. 2015 à 14:58
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015 - 12 févr. 2015 à 16:09
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

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 févr. 2015 à 15:40
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
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
11 févr. 2015 à 16:17
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
11 févr. 2015 à 16:30
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
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
11 févr. 2015 à 16:27
Merci, le code tient la route pourtant il plante et m'indique erreur 9, Indice en dehors de la plage
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
11 févr. 2015 à 16:35
Re,

Pourquoi ca marche chez moi ???
0
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
11 févr. 2015 à 17:10
Merci, la secconde solution fonctionne, la première pas, je ne comprends pas pourquoi
0
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
11 févr. 2015 à 16:41
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 févr. 2015 à 16:47
Re,

le fichier test que j'ai utilise: https://www.cjoint.com/c/EBlq42VZbW8

code dans module1
0
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
12 févr. 2015 à 12:20
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
reno421 Messages postés 41 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 16 septembre 2015
12 févr. 2015 à 16:09
sorry, avait mal copier quelquechoses. Tu es un monstre en vba.
un tout grand merci
0