VBA - Activer une liste de feuille

Fouine85

XLDnaute Nouveau
Bonjour,


Je voudrais activer une liste de feuille, pour celà j'ai déjà un premier code, problème celui-ci est très lent car je passe à chaque fois par une feuille Excel de référence pour connaitre le nom de la feuille à activer.

Premier codre trop lent :

Sub Active_feuille()

XX = 1

Do While XX <= 31
Sheets("Feuil1").Select
nom_feuille = Range("A" & XX).Value
Worksheets(nom_feuille).Activate

XX = XX + 1

Loop


End Sub

J'ai donc créer un deuxième code avec une variable par feuille, et je souhaiterais afficher mes feuilles un à une car a chaque fois j'ai un traitement à faire sur chaque feuille :

2ème méthode qui ne fonctionne pas :

Sub affiche_feuille()

Dim n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31 As String
Dim nom_feuille As String

n1 = "Air Liquide"
n2 = "Arcelormittal"
n3 = "Atos Origin"
n4 = "Axa"
n5 = "BNP"
n6 = "Cap Gemini"
n7 = "Casino"
n8 = "Club Méditerranée"
n9 = "Danone"
n10 = "EADS"
n11 = "France Télécom"
n12 = "Iliad"
n13 = "Lafarge"
n14 = "L'oréal"
n15 = "LVMH"
n16 = "Michelin"
n17 = "Peugeot"
n18 = "Saint Gobain"
n19 = "Sanofi"
n20 = "Stmicroelectronics"
n21 = "Total"
n22 = "Vivendi Universal"
n23 = "FCP"
n24 = "OAT 3,5"
n25 = "OAT 4,25"
n26 = "OAT 4,75"
n27 = "OATi 3,4"
n28 = "FT 3,625"
n29 = "BNP TV"
n30 = "Grèce 4,6"
n31 = "S&P 500"

XX = 1
Do While XX < 31
nom_feuille = "n" & XX
XX = XX + 1

Sheets(nom_feuille).Activate

Loop

End Sub

Mon problème est que dans Sheets(nom_feuille).Activate nom_feuille = "n1" et non pas n1 qui renverrais "Air Liquide".

Quelqu'un pourrait il mettre fin à mon arrachage de cheveux ^^.

Je ne peux pas utiliser Sheets(Index) car j'ai un très grand nombres de feuilles qui sont affichées ou non en et dont l'ordre peut changer.

Merci d'avance !
 

Fouine85

XLDnaute Nouveau
Re : VBA - Activer une liste de feuille

J'ai commencé à regarder de ce coté sans trop savoir (par total hasard) car je début en VBA mais je ne connait pas du tout cette fonction.
Si quelqu'un peut m'expliquer plus en détails comment elle fonctionne ce n'est pas de refus.
Mais je vais creuser de ce coté si je suis en bonne voix.
Merci
 

Gorfael

XLDnaute Barbatruc
Re : VBA - Activer une liste de feuille

Salut Fouine85 et le forum
Comprends pas !
Code:
Sub Active_feuille()
XX = 1
Do While XX <= 31
    Sheets("Feuil1").Select
           nom_feuille = Range("A" & XX).Value
           Worksheets(nom_feuille).Activate
    
    XX = XX + 1
Loop
End Sub
Genre de code que je ne comprends absolument pas : en final, il correspond à
Code:
Sub Active_feuille()
Worksheets(Range("A31")).Activate
End Sub
Tu ne peux activer qu'une et une seule feuille !
A+
 
Dernière édition:

Fouine85

XLDnaute Nouveau
Re : VBA - Activer une liste de feuille

Dans ma feuil1, j'ai dans la première colonne la liste de toutes mes feuilles.
Donc Range("A" & XX).Value = Air Liquide pour XX = 1
Je n'ai pas de problème avec ce code il fonctionne à la perfection, je voudrais juste ne pas passer par une feuille Excel car celà rend ma macro vraiment trop lente.
 

jp14

XLDnaute Barbatruc
Re : VBA - Activer une liste de feuille

Bonjour
Salut Pierrot93

Pour utiliser activate il faut d'abord sélectionner la feuille.
En utilisant une boucle on ne peut donc pas tout activer.

Code:
' on active uniquement la dernièe feuille
Sub essai()
Dim tableau As Variant
Dim i As Byte
Worksheets("Feuil1").Activate
tableau = Array("Feuil1", "Feuil2", "Feuil3")
For i = 0 To 2
Worksheets(tableau(i)).Select
Worksheets(tableau(i)).Activate
Next i
End Sub
Pour tout activer

Code:
    Sheets(Array("Feuil1", "Feuil2", "Feuil3", "Feuil4")).Select
    Sheets("Feuil1").Activate

L' enregistreur de macro est très utile.

JP
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA - Activer une liste de feuille

Bonjour le fil, bonjour le forum,

Il en des des feuilles comme des cellules, on peut en Sélectionner plusieurs mais une seule restera/sera/deviendra active. La boucle permet donc de Sélectionner plusieurs onglet et ensuite tu pourras en activer un parmi la sélection avec Activate ou un autre ne faisant pas partie de la sélection mais dans ce cas tu perds ta sélection...
 

Gorfael

XLDnaute Barbatruc
Re : VBA - Activer une liste de feuille

Salut Fouine85 et le forum
Je n'ai pas de problème avec ce code il fonctionne à la perfection
Premièrement : cette affirmation est fausse : S'il était parfait, tu ne serait pas sur le forum

Deuxièmement :
un petit rappel : Il n'y a ni télépathe, ni magicien, ni devin sur ce site !
Le code me semble inutile, inepte. Mais c'est sans doute dû à un manque d'informations.
Pour accélérer un code, en général, on supprime les sélection/activation, qui ne servent qu'à ralentir le traitement. Mais comme le code ne contient qu'une boucle d'activation, et qui ne sert (même si ça fonctionne), le plus simple, pour accélérer le traitement, c'est de n'activer que la dernière feuille, comme le fait la boucle.

Petit rappel : pour qu'un dépannage soit efficace, il connaître le code, ce qu'il est supposé faire et les données avant traitement et après. Là, on a qu'un code erroné et rien d'autre.
A+
EDIT
Je viens de relire ton premier post, et il me semble que je me suis fourvoyé : je me suis arrêté sur la débilité du code, avec l'activation, alors qu'il ne sert qu'en pas-à-pas pour comprendre. Désolé
.
Ce que je crois comprendre de ton problème, c'est l'utilisation d'une variable tableau :
"n" & XX ne permet pas à Excel de comprendre que n12 (en admettant que xx=12) est une variable. Pour lui, c'est du texte.

Dim n(22) as String

n(1)="A"
n(2)="B"
etc...

Sheets(n(2)).activate

Dans ce cas, Excel comprendra qu'il faut activer l'onglet de nom "B"
A+
 
Dernière édition:

Statistiques des forums

Discussions
312 330
Messages
2 087 348
Membres
103 526
dernier inscrit
HEC