Choix de la feuille sur laquelle sapplique la macro

Résolu
Maxxikilla Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
Maxxikilla Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
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 !



A voir également:

4 réponses

rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 6445 Date d'inscription   Statut Contributeur Dernière intervention   824
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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