Bouton de commande VBA pour changer la matrice d'une formule INDEX

Bonjour à tous,

J'ai une formule INDEX qui est répartit sur plusieurs cellule avec la même plage (la même matrice). J'aimerais connaitre une macro, pour que quand j'appuie sur un bouton de commande VBA, la plage change. Je vous met le fichier ci-joint en espérant que ce soit plus clair.

Ainsi, Dans la feuille "Calcul", j'ai crée une formule "INDEX" sur la colonne de droite, ce qui me permet d'avoir les données du tableau numéro "1" de la feuille "Chiffres". Ce que je veut c'est que lorsque je clique sur le bouton "Changement de tableau" présent dans la feuille "Bouton", la formule INDEX se modifie pour changer la plage prise en compte afin d'avoir les données du tableau numéro "2". Ainsi, au lieu de prendre en compte la plage (C4:C13), je veut que cela prenne compte la plage (F4:F13) quand je clique sur le bouton.

Si je clique à nouveau, cela doit m'afficher les données du tableau "3", puis du tableau "4" si je clique encore une fois.

Merci d'avance

3test.xlsx (12.94 Ko)

Bonjour,

Une solution sans bouton, ni macro (si ça t'intéresse !?)
En feuille "Calcul", une liste déroulante en F1 permet de renseigner le "numéro" du tableau

... tu verras bien si ça convient !

Salut,

Ton idée est vraiment excellente, c'est exactement ce dont j'avais besoin, cependant, je n'arrive pas à le reproduire dans mon vrai fichier excel. Ducoup, je me permet de le joindre afin que tu puisse réaliser la même manipulation directement sur le vrai fichier (si tu es d'accord bien sur).

Ducoup, les tableaux contenant les données originelle

3test-final.zip (168.99 Ko)

(1, 2, 3, 4, etc jusqu'a 14) se trouve dans la feuille "Données". les tableaux qui contiendront la fonction index sont dans les tableaux de la feuille nommés "générateur(10)" (donc il y en a 2 un en dessous de "Anticipation" et l'autre en dessous de "Résultat").

J'aimerais que la liste déroutante se trouve dans la feuille "Centre de contrôle" en "I10".

Merci d'avance

Bonjour,

La liste déroulante se crée avec Données > Validation de données > Autoriser : Liste > Source : 1;2;3;4;5;6;7;8;9;10;11;12;13;14 (les "noms" de tes tableaux, séparés par des ';' sans espaces). La suite ne fonctionne que si ces "noms" sont des nombres qui se suivent et que chaque "écart" entre les colonnes visées dans la feuille Données est de 5.

On ne peut pas utiliser exactement le système proposé la première fois (les "noms" des tableaux étaient dans une ligne dédiée ; ici, si tu cherches 6 pour identifier la colonne du Tableau 6, tu vas trouver une ribambelle de 6 sur la même ligne de la feuille "Données").
Par ailleurs tes tableaux ne sont pas tous garnis, mais surtout, rien ne permet de savoir pourquoi le premier a des valeurs sur 50 lignes et le second sur 160 lignes, alors que tes tableaux en feuille "Générateur" ne font que 10 lignes !?

Bref, après avoir créé ta liste déroulante en I10 de la feuille "Centre de contrôle", essaie en C6 de la feuille "Générateur" :

=INDEX(DECALER(Données!$E$1:$E$52;0;('Centre de contrôle'!$I$10-1)*5);B6)

... à recopier vers le bas. La formule serait la même en colonne U (si j'ai compris !), sauf la référence à B6, qui deviendrait T6 ??

Tu noteras tout de même qu'il aurait été plus simple de n'avoir qu'un seul tableau en feuille "Données" (puisque la première colonne est identique dans tes 14 tableaux) !

Salut à nouveau, merci pour tes conseils et ton temps, cela fonctionne très bien. le fait qu'il ne soient pas tous garni n'a pas posé problème. J'ai indiqué E1:E500 à chaque fois.

Je coche ton commentaire. Bonne soirée

Rechercher des sujets similaires à "bouton commande vba changer matrice formule index"