Activer plusieurs onglets dans une macro - VB/VBA/VBS - Programmation
Marsh Posté le 21-08-2005 à 12:57:55
Titoche28 a écrit : Bonjour à tous, |
si j'ai bein compris, lorsque tu sélectionnes la valeur dans r5, tu selectionnes les onglets 1_valeur et valeur_1
je te propose ceci :
Code :
|
cela correspond à tes attentes?
bon dimanche
Marsh Posté le 12-09-2005 à 15:34:32
Bonjour jpcheck,
Merci pour l'info, c'est presque ce que je voulais, j'ai essayé et le seul Hic, est que si dans ma case "r5", j'ai 3, il me sélectionne bien l'onglet 1 et 3, mais pas le 2. Du même coup, si j'ai 5 dans "r5", il me selectionne les onglets 1 et 5, mais pas les 2, 3 et 4. Mais c'est un bon début ...
Je te remercie de ton aide...
@+
Marsh Posté le 13-09-2005 à 12:38:59
Salut Titoche,
J'ai trouvé une petite astuce pour programmer en VBA ton array sur les feuilles de ton classeur. j'ai pas pris ton exemple de nom de feuilles mais je suis passée par le numérodes feuilles. en l'adaptant tu devrais réussir à faire ta sélection
Pour mon exemple j'ai mis en Cellule A5 de la feuille 1 la valeur à écrire, et en B5 de la même feuille le nombre d'onglets à selectioner.
Ce code rempli la cellue B6 des onglets sélectionnés.
Code :
|
Bon courage
Marsh Posté le 09-01-2019 à 14:27:22
Bonjour,
je reprends ce poste car il s'adapte presque à ce que je veux faire.
Citation : Salut Titoche, |
Dans ce code les feuilles sélectionnées sont la feuilles d'index 1 jusqu'à la feuille d'index contenu dans la cellule B5 de la feuille Feuil1.
Qu'en est-il si on veut sélectionner par exemple la feuille d'index 4 à la feuille d'index 9 par exemple ? Ces valeurs (4 et 9) seront contenues dans des cellules de la feuille Feuil1 par exemple.
Merci de votre réponse
Marsh Posté le 09-01-2019 à 14:35:19
Bonjour,
Et tu veux faire quoi ? Parce que là ça a l'air d'être du grand n'importe quoi ce que je vois...
Marsh Posté le 09-01-2019 à 15:19:42
Bonjour Maybe
Merci pour votre reponse.
Ce que je veux faire au fait c'est consolider avec VBA via Consolidate Sources:= une plage de cellules d'un nombre de feuilles qui peut être différent à chaque fois, sachant que les feuilles à consolider sont successives.
Merci de votre aide
Marsh Posté le 09-01-2019 à 16:29:16
Ah ok ce serait pour ça l'intérêt d'utiliser un tableau, mais bon les "select" et "active" sont quand même inutiles.
Voici un exemple fonctionnel :
Code :
|
1- se mettre sur la feuille maitre
2- sélectionner en plus les feuilles à ajouter dans la consolidation (à l'aide de Ctrl ou Maj.)
3- exécuter la macro
Après on peut ajouter des étapes en fonction des besoins pour déterminer la cellule cible et la plage qui sont des paramètres rentrés en dur dans la macro.
Marsh Posté le 09-01-2019 à 18:20:38
Après plusieurs tests ça marche impeccable sur un nouveau classeur (je fais un copier/coller de ma plage de cellules de l'un de mes fichier sur un nouveau classeur au même endroit que sur mes fichiers), mais quand je fait ça sur un exemple concret (sur mes fichiers) en adaptant myRange à ma plage de cellules (M13:U45 en R13C13:R45C21) j'ai un soucis sur la ligne myArray(i) = mySheet.Name & myRange.
Marsh Posté le 09-01-2019 à 22:53:58
Tu n'as pas oublié le point d’exclamation ?
Tu te places bien sur la feuille "maître" ?
Quelle est l'erreur ?
Marsh Posté le 10-01-2019 à 09:43:26
Oui le point d'exclamation est là, et je me place bien sur la feuille maitre.
Et en faisant des tests ce matin la ligne ou ça bloque maintenant est : ReDim myArray(.Windows(1).SelectedSheets.Count - 2)
Marsh Posté le 10-01-2019 à 09:56:54
MaybeEijOrNot a écrit : Quelle est l'erreur ? |
Marsh Posté le 10-01-2019 à 16:22:32
Il m'affiche
erreur d’exécution '9'
L'indice n'appartient pas à la sélection
Mais j'ai trouvé la source du problème ... il fallait créer un module dans mon fichier et non pas dans un autre classeur.
Donc il faut créer un module dans chaque classeur où doit se faire la consolidation.
Marsh Posté le 10-01-2019 à 20:11:19
Oui, je ne suis pas assez expert dans la portée du VBA, cela doit être possible de faire ça dans un seul fichier et de l’exécuter dans les autres mais de toute manière ça demanderait surement de complexifier le script.
Là je proposais une solution assez généraliste, évidemment en fonction de la structure des classeurs, et notamment des noms ou de l’agencement des onglets il y a possibilité de faire plus simple et/ou efficace.
Marsh Posté le 11-01-2019 à 10:20:11
Bonjour,
Citation : Oui, je ne suis pas assez expert dans la portée du VBA |
En tout cas votre solution je la cherchais depuis un bon moment déjà sans avoir obtenu satisfaction.
Votre solution est vraiment très satisfaisante et elle est flexible pour sélectionner les feuilles désirées.... Elle répond très bien à mes besoins.
Il reste plus qu'à peaufiner le tout dans une table de correspondance et ça sera parfait.
Merci de votre aide, et merci surtout d'avoir trouver une solution à mon problème. Ça va me faire gagner un temps énorme.
Merci encore.
Marsh Posté le 13-01-2019 à 14:42:10
Bonjour,
Encore une petite chose .... Comment désélectionner les autres feuilles pour ne laisser que le feuille "Maitre" active ??
Marsh Posté le 13-01-2019 à 15:08:55
Je pense qu'il suffit de resélectionner la feuille maître.
Avant la fin du With, placer :
Code :
|
Marsh Posté le 13-01-2019 à 15:40:26
Impeccable !!
Merci
Marsh Posté le 17-08-2005 à 09:24:10
Bonjour à tous,
Comment peut-on sélectionner un ou plusieurs onglet d'un fichier Excel, dans une macro sans passer par une fonction "If ... Sheets(Array("feuil2 ..." .
En fait, en fonction d'un nombre (entre 1 et 10) que j'indique dans un fichier Excel (par l'intermédiaire d'un UserForm), la macro sélectionne le nombre d'onglet défini, et active l'onglet "feuil1" pour rentrer les données (ce qui me permet de renseigner tout les onglets sélectionnés). (voir l'exemple ci-dessous)
ElseIf Range("R5" ) = 2 Then
Workbooks.Open Filename:="toto.xls"
Sheets(Array("feuil2_1", "feuil1_2" )).Select
Sheets("feuil1_1" ).Activate
Le problème et que ma macro est trés longue et j'aimerais savoir si il n'y a pas un moyen plus rapide de définir cette fonction.
J'attends vos idées avec impatience ...
Merci d'avance,
Titoche28
---------------
Titoche28