Choix de la feuille sur laquelle sapplique la macro

Résolu/Fermé
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013
- 7 juin 2013 à 10:09
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013
- 7 juin 2013 à 11:25
Bonjour,

Je sollicite votre aide pour une question qui me semble toute bete, mais je n'arrive pas à y répondre.

Je veux créer une sorte d'interface, qui serait sur une feuille excel appelée Accueil.
Sur cette interface, l'utilisateur aura plusieurs boutons.
J'assigne des macros à mes boutons, qui correspondent à du traitement d'information.

Le problème est que les feuilles sur lesquelles l'utilisateur utilisera la macros seront amenées à changer au cours du temps (de titre, mais pas de contenu)

Je veux que l'utilisateur, lorsqu'il clique sur le bouton, et sans ouvrir le alt+F11, puisse choisir sur quelle feuille la macro va s'executer.

Je ne sais pas si je suis clair, jespere l'etre un maximum.

p.s: une solution est de demander à l'utilisateur de renommer la feuille d'un nom bien précis, puis d'aller sur sa page accueil et de lancer la macro. Je prendrai cette soltion par défaut, mais je pense qu'il existe mieux

Merci d'avance pour votre aide !



4 réponses

rEVOLV3r
Messages postés
221
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2019
28
7 juin 2013 à 10:38
Bonjour,

C'est tout simple. Dans tes macros, tu indiques où elle doit s'activer ainsi :


dim numero as integer
numero = activesheets("Feuille principale").range("A1").value

-> tu rentres un numéro dans la case A1 et numero prendra cette valeur.
sheets(numero).activate

Et ta macro s'activera ici :-)

Si tu ne veux pas voir les changements de feuilles et pour que tes macros se finissent plus vite, tu peux écrire cette fonction au début et a la fin de ta macro :

application.screenupdating = FALSE
.
.
.
application.screenupdating = TRUE

J'espère que ca répondra à ta question.

Amicalement
1
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013

Modifié par Maxxikilla le 7/06/2013 à 11:04
Ca me parait très bien comme solution !
Est ce que "numéro" peut prendre en paramètres des noms, par exemple "GRAND livre 02-13" ?
0
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013

7 juin 2013 à 11:09
dim numero as String

numero = activesheets("Accueil").range("A1").value (dans A1, on met GRAND livre 02-13)
sheets('GRAND livre 02-13'!).activate

Est ce que ca pourrait fonctionner ?
0
PHILOU10120
Messages postés
5963
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
18 mai 2022
707
7 juin 2013 à 10:30
Bonjour

Avez-vous la possibilité de travailler sur un fichier modèle et c'est au moment de la sauvegarde que vous changez le nom du fichier, comme ça vous avez toujours les même noms de feuilles
Ou travailler avec des noms de champs comme cela d'une feuille à l'autre les nom restent identiques
C'est suivant les tâches à réaliser qu'il faut voir la solution possible

0
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013

7 juin 2013 à 10:46
Re,

Alors, en fait, sur les feuilles que j'ai à traiter, les champs seront toujours les meme.

Plus en details, il s'agit de compta d'une entreprise.
Le petit Soft que je fais aura plusieurs fonctionnalités (afficher des graphiques, calculer les evolutions, isoler le chiffre d'affaire par clients .. ...)

J'importe mes données à partir d'un autre fichier excel.

Pour la fonctionnalité en question, les données dont j'ai besoin seront toujours à la meme place (le range ne changera pas). Il y a par exemple les comptes de janvier, fevrier,octobre ...

En cliquant sur traiter les données dans ma page accueil, j'aimerais ouvrir une nouvelle feuille. Ensuite copier les données a partir d'une feuille x AU CHOIX DE LUTILISATEUR, et les traiter dans la feuille que l'on vient douvrir.

Mon problème est en fait de choisir a partir de quelle feuille les données vont etre copiée..
0
Maxxikilla
Messages postés
40
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
23 juillet 2013

7 juin 2013 à 11:25
Merci rEVOLV3r, ca m'a bien aidé !!

Au final, ca donne ca (au niveau du code):

sub test()

Dim numero As String

'L3 correspond à la case ou l'utilisateur indique le nom de l'onglet sur lequel il va 'traiter l'information
numero = Sheets("Accueil").Range("L3").Value

Sheets(numero).Activate

'mettre le traitement que l'on veut effectuer ci-dessous...
Range("A1").Select


End sub
0