XL 2016 VBA: Sélectionner puis désélectionner toutes les feuilles

Aloha

XLDnaute Accro
Bonjour,

Je voulais enregistrer l'action de sélectionner toutes les feuilles, mais l'enregistreur n'a rien enregistré

Quel petit code me permettrait de sélectionner toutes les feuilles d'un fichier?
Et lequel pour les désélectionner à nouveau?
Cela ne peut pas être une seule Sub, puisqu'entre l'action de sélectionner et celle de désélectionner il y a d'autres Sub.

Bonne soirée
Aloha
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@Aloha
On peut utiliser la même sub pour la sélection et la déselection
Voir le petit exemple ci-dessous
Pour tester lancer la macro nommée Test
VB:
Sub Test()
'On sélectionne toutes les feuilles
WS_Selection
MsgBox "Pause"
'On desélectionne toutes les feuilles
WS_Selection True
End Sub
Sub WS_Selection(Optional Tout As Boolean = False)
'macro unique pour la sélection et la désleection
Dim s As Worksheet
For Each s In Worksheets
s.Select Tout
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@Calvus
Je n'ai rien perdu, je suis juste tracassé
(voir le fil que je viens de créer dans le forum ce soir)

PS: Ta syntaxe est bien pour sélectionner
mais ceci ne fonctionne pas (pour ce qui est de la déselection)
Sub WS_Selection(Optional Tout As Boolean = False)
ThisWorkbook.Sheets.Select Tout
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Oui mais je parlais de ne faire qu'une seule macro
(comme dans mon exemple, message#3)
Que ce soit pour sélectionner ou désélectionner on n'utilise que la macro WS_Selection
(en changeant seulement le paramètre Tout: soit True soit False)
 

Aloha

XLDnaute Accro
Bonsoir et merci pour vos messages.

Je viens de me rendre compte que la partie de ma tâche pour laquelle il me faut de l'aide ne se résume pas à sélectionner et à désélectionner.

J'explique mon projet à l'aide d'un exemple:

Dans un fichier Fichier destination avec un certain nombre de feuilles à la structure identique j'ai 9 formules qui vont chercher des données dans un autre fichier nommé Base moyennant la "maudite" fonction INDIRECT().
Qui plus est, dans le fichier source les données ne sont pas accessibles directement; je dois mettre (dans cet exemple) SERVICE 3 en A1 de la feuille "Personnel" et des formules vont chercher les données de base dans la feuille SERVICE 3 et d'autres formules font plein de calculs avec.

Vu la volatilité des formules INDIRECT, je dois ouvrir le fichier "Fichier destination", je sélectionne toutes les feuilles, je copie les cellules contenant les formules INDIRECT et je les recolle comme valeurs pour ensuite désélectionner les fiches, enregistrer le fichier et le fermer .

Comme le fichier sera modifié au cours de l'année et que les valeurs produites par les formules INDIRECT peuvent changer, je dois donc remettre les formules à l'ouverture du fichier, et ainsi de suite.

La suite des opérations:
1. vérifier si le fichier Base est ouvert, sinon l'ouvrir
2. ouvrir le fichier Fichier destination
3. inscrire SERVICE 3 en A1 de la feuille Personnel du fichier Base
4. sélectionner toutes les feuilles du fichier de destination
5. mettre les formules dans B6:E8 de toutes les feuilles
6. remplacer les formules (qui viennent de récolter les informations dans l'autre fichier depuis que SERVICE 3 a été mis en A1 de Personnel; dans mon exemple il n'y a que des N/A; il faut les considérer comme des valeurs) par leurs valeurs
7. désélectionner les feuilles
8. fermer le fichier en le sauvegardant

Donc la tâche ne se limite pas à mon énoncé initial.
Bonne soirée
Aloha
 

Pièces jointes

  • Base.xlsx
    9.8 KB · Affichages: 20
  • Fichier destination.xlsx
    11.4 KB · Affichages: 25

Staple1600

XLDnaute Barbatruc
Re

@Aloha
Mon code se rapporte à l’énoncé initial.
Par conséquent à mon niveau mission accomplie.

Je passe à la main à mes petits camarades de jeux immunisés contre ces questions à tiroirs ;)

NB: On se demande bien pourquoi le dernier message d'Aloha n'est pas le premier message de cette discussion?
(Car on y trouve des explications détaillées et un fichier exemple...)
 

Staple1600

XLDnaute Barbatruc
Re

@Aloha
perseverare diabolicum ;)

NB:
Pourquoi n'as-tu pas tenté d'utiliser l'enregistreur de macros pour certaines actions?
Pourquoi joindre des fichier *.xlsx (et pas des *.xlsm) ?
(ce qui indique qu'on y trouvera pas les codes VBA précédemment déposés par Calvus ou moi, ni tes différents essais de macros)
 

Aloha

XLDnaute Accro
Re,
J‘ai beaucoup utilisé l‘enregistreur: voir mon premier message.
La brève histoire de ces deux fichiers exemples: j‘ai travaillé sur mes fichiers réels où j‘ai essayé d‘intégrer l‘une de vos macros et je me suis rendu compte que les choses ne sont pas si simples que je ne croyais. Voilà pourquoi j‘ai imaginé les deux fichiers reproduisant la situation réelle pour faire comprendre. Voilà!
Salve
Aloha
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali