Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2744 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Sélectionner plusieurs onglets par une macro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Sélectionner plusieurs onglets par une macro

n°1335665
format_c
Plouf plouf ...
Posté le 30-03-2006 à 16:35:09  profilanswer
 

Bonjour,
J'ai une feuille avec plusieurs onglets. Ce nombre de feuille varie. Je voudrais sélectionner toutes les feuilles à partir de la 5ème par une macro.
 
Voici le code que je voudrais simuler en fonction du nombre de feuilles qu'il y a dans mon classeur; n est ce nombre de feuilles :

Code :
  1. Sheets(Array(5, 6)).Select    'Pour un classeur de 7 feuilles
  2. Sheets(Array(5, 6,7)).Select   'Pour un classeur de 8 feuilles
  3. etc...


 
Je pense que ça doit pas être très compliqué, mais je bloque complètement et la seule solution que j'ai trouvé sur Google n'est même plus dans son cache :D

mood
Publicité
Posté le 30-03-2006 à 16:35:09  profilanswer
 

n°1335667
kennybis
SeiGneuR des SaiGneuRz - SaiGn
Posté le 30-03-2006 à 16:37:40  profilanswer
 

si tu trouves comment executer une commande VBA a partir d'une chaine, il te suffit de construire ta commande avec une boucle et de la concatenation... Je sais pas si c'est propre mais ca marcherait a coup sur.

n°1335672
format_c
Plouf plouf ...
Posté le 30-03-2006 à 16:42:21  profilanswer
 

kennybis a écrit :

si tu trouves comment executer une commande VBA a partir d'une chaine, il te suffit de construire ta commande avec une boucle et de la concatenation... Je sais pas si c'est propre mais ca marcherait a coup sur.


 
Tu veux dire, quelque chose de ce style ?
i = "5, 6, 7"
Sheets(Array(i)).Select
 
Ca ne marche pas :(

Message cité 1 fois
Message édité par format_c le 30-03-2006 à 16:42:44
n°1335678
format_c
Plouf plouf ...
Posté le 30-03-2006 à 16:55:46  profilanswer
 

J'ai trouvé !
 
Dim WB1 As Workbook
Dim MyArray() As String
Dim i As Integer, X As Byte
 
Set WB1 = ThisWorkbook
 
    For i = 5 To 7
        ReDim Preserve MyArray(X)
        MyArray(X) = Sheets(i).Name
           X = X + 1
    Next
            WB1.Worksheets(MyArray).Copy

n°1335680
watashi
La démotivation : JAMAIS !
Posté le 30-03-2006 à 17:00:22  profilanswer
 

format_c a écrit :

Tu veux dire, quelque chose de ce style ?
i = "5, 6, 7"
Sheets(Array(i)).Select
 
Ca ne marche pas :(

Salut format_c
une recherche sur le forum t'aurai permis de trouver au moins ce post
sinon pour corriger ton bout de code et l'adapter à ton besoin ça devrait te donner ceci :

Code :
  1. Sub SelectionFeuille()
  2. Dim i As Integer, MonArray()
  3. ReDim MonArray(Worksheets.Count - 6) '-6 car tu ne prends pas les 4 premières feuilles
  4. 'ni la dernière et l'array commence à l'indice 0
  5. For i = 5 To Worksheets.Count - 1 'Parcours des feuilles
  6.     MonArray(i - 5) = Sheets(i).Name
  7. Next i
  8. Sheets(MonArray).Select    'sélection de l'ensemble
  9. End Sub

@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1335681
watashi
La démotivation : JAMAIS !
Posté le 30-03-2006 à 17:03:01  profilanswer
 

format_c a écrit :

J'ai trouvé !
 
Dim WB1 As Workbook
Dim MyArray() As String
Dim i As Integer, X As Byte
 
Set WB1 = ThisWorkbook
 
    For i = 5 To 7
        ReDim Preserve MyArray(X)
        MyArray(X) = Sheets(i).Name
           X = X + 1
    Next
            WB1.Worksheets(MyArray).Copy

J'avais pas vu avant de repondre ;)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1335704
format_c
Plouf plouf ...
Posté le 30-03-2006 à 17:27:32  profilanswer
 

Merci quand même ! :)

n°2113057
raptorneuf
Posté le 24-11-2011 à 10:59:14  profilanswer
 

watashi a écrit :

Salut format_c
une recherche sur le forum t'aurai permis de trouver au moins ce post
sinon pour corriger ton bout de code et l'adapter à ton besoin ça devrait te donner ceci :

Code :
  1. Sub SelectionFeuille()
  2. Dim i As Integer, MonArray()
  3. ReDim MonArray(Worksheets.Count - 6) '-6 car tu ne prends pas les 4 premières feuilles
  4. 'ni la dernière et l'array commence à l'indice 0
  5. For i = 5 To Worksheets.Count - 1 'Parcours des feuilles
  6.     MonArray(i - 5) = Sheets(i).Name
  7. Next i
  8. Sheets(MonArray).Select    'sélection de l'ensemble
  9. End Sub

@+


 
merci pour ce code, même si ça date de 2006 lol
ça m'aura bien servi :)
 
bizarre par contre, le :
wbSource.Sheets(MonArray).Select
ne marche pas, je sais pas pourquoi
 
par contre ce dont j'avais besoin :
wbSource.Sheets(MonArray).Copy Before:=wbCible.Sheets(1)  
marche super, donc vraiment merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Sélectionner plusieurs onglets par une macro

 

Sujets relatifs
envoie de sms avec Lotus Notes et VBAxml a plusieurs niveaux
[résolu][VBA]Afficher mon document Word[VBA][Excel][Resolu]Connaitre le nombre de ligne d'une colonne
[VBA] [Résolu] Liste de choixTableau a 2 entrées et condition sous excel
couleur depuis macroExcel gestion stock inventaire
"débutant" sous excel ... 
Plus de sujets relatifs à : [VBA Excel] Sélectionner plusieurs onglets par une macro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR