Identifier feuilles actives

guitarde

XLDnaute Junior
Bonjour cher usagers du forum,

Je cherche le code vba pour identifier les feuilles actives, la fonction ActiveSheet.Name ne retourne que la première feuille qui est active.

ex. sélection de plusieurs feuilles
Sheets(Array('Bateaux', 'Cédule', 'Inventaires', 'USA')).Select

vSheet = ActiveSheet.Name 'donnera que Bateaux


Peut-être qu'il faudrait une loop qui vérifie le status de chaque feuille ?

Merci pour votre aide.
Eric
 

Bricofire

XLDnaute Impliqué
Bonsoir Guitarde, :)

Je pense que ton pb vient de la propriété Name en elle même, qui fort logiquement ne peux concerner qu'un objet, ou un ensemble d'objet, donc Une chose.

Ce que tu peux faire c'est de boucler sur tes feuilles avec une For Each Feuil... Next Feuil (Feuil = variable à définir) dans ton classeur, et de tester chacune d'elles en implémentant les noms des actives au passage...

Bon courega,

Bfr
 

Bricofire

XLDnaute Impliqué
Bonsoir Guitarde, :)

Je pense que ton pb vient de la propriété Name en elle même, qui fort logiquement ne peux concerner qu'un objet, ou un ensemble d'objet, donc Une chose.

Ce que tu peux faire c'est de boucler sur tes feuilles avec une For Each Feuil... Next Feuil (Feuil = variable à définir) dans ton classeur, et de tester chacune d'elles en implémentant les noms des actives au passage...

Bon courega,

Bfr
 
G

guitarde

Guest
Avec la boucle je crois que je vais pouvoir ajouter le nom des feuilles actives dans une variable de type collection.

Je pourrais plus loin dans ma macro re-sélectionner les feuilles en utilisant cette variable.

Merci pour votre aide.
Eric
 
G

guitarde

Guest
J'ai finalement réussi avec une variable de type ARRAY. La boucle détermine les feuilles qui sont actives, ajoute le nom des feuilles dans la variable.

Ensuite je fais différentes opérations et ensuite je peux ré-activer les feuilles comme au départ.



Sub test()

Dim F As Worksheet
Dim MyActiveSheets() As String
Dim X As Byte

For Each F In Windows(1).SelectedSheets
ReDim Preserve MyActiveSheets(X)
MyActiveSheets(X) = F.Name
X = X + 1
Next F

'All my other code

Worksheets(MyActiveSheets).Select

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55