Macro pour une mise en forme sous excel

Fermé
bricedugard - 17 mars 2009 à 17:58
 bricedugard - 20 mars 2009 à 19:58
Bonjour,
voilà je fais du triathlon et je note mes entraînements sur feuille excel, une plage de mon tableau correspond aux détails des entraînements du jour.
L'idée c'est de créer des boutons raccourcis pour ces macros (ça je crois avoir compris comment faire) : le lundi la plage où je note le détail des activités c'est B10:D37 ; je voudrai que si je me place en B10 j'active la macro natation ça écrit "natation" en B10 et ça colore les cellules jusqu'en D37 mais si plus loin en B25 par exemple je clique sur la macro vélo en B25 ça écrit "vélo" en B25 et colore en vert jusqu'à D37 (en recolorant le bleu en vert), naturellement ces macros doivent aussi tourner pour les autres jours de la semaine et les autres semaines présentes dans la même feuille.

Voilà j'espère que mon problème vous a paru clair, merci d'avoir pris le temps de me lire et un plus grand merci pour vos réponses
Brice
A voir également:

3 réponses

leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
18 mars 2009 à 16:33
Bonjour

Si j'ai bien compris, tu as une zone par jour dans la feuille.

1) Comment sont faite ces zones ? toujours 28 lignes ?
du style B10:D37 puis B38:D65 puis B66:D93... ?
cela servira à définir la zone à colorer.

2) si B10 = "Natation" puis B25= "Vélo" ==> bleu jusqu'en D24 puis vert
mais si ajout d'une autre activité ("Bière" par exemple) en C15 que doit-il se passait : jaune de B15 à D25 ou à D37 ?
si suppression en B25 de "Vélo", faut-il blanc ou la couleur supérieure ?

Tu peux déposer ton fichier exemple sur cijoint.fr et coller ici le lien fourni.

LePlot

NB : j'aime pas les sportifs...
0
bricedugard
18 mars 2009 à 17:17
Tout d'abord merci pour la réponse et le tuyau du site cijoint.fr
http://www.cijoint.fr/cjlink.php?file=cj200903/cijbOvV9eE.xls voilà le fichier
En fait le fichier se complète une fois les activités faites donc si je me place sur une cellule et je clique natation ca devrait mettre bleu jusqu'en bas et si plus loin je mets vélo ça écrase le bleu pour le vert...
J'ai en partie solutionné mon problème en insérant des boutons (pour macro) qui écrivent Natation et colore la Zone sélectionnée. Je pourrais me contenter de ça...mais en fait là je souhaiterais surtout comprendre comment est construite une macro du genre "j'active natation sur une cellule ça colore en bleu jusqu'en bas ou jusqu'à rencontrer vélo ou CàP ou Bière comme vous l'avez suggéré...

Merci de votre attention
Brice
0
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
19 mars 2009 à 10:56
Bonjour

http://www.cijoint.fr/cjlink.php?file=cj200903/cijF1KuQWN.xls

Dans le fichier, il y a une macro sur worsheet_Change() qui s'exécute à chaque modification d'une cellule dans la feuille.
Elle s'exécute si tu es dans la zone de saisie (colonne B, E... et ligne entre 10-37, 66-93...)et si la valeur est correcte (natation, vélo, Càp, Divers ou vide) sinon il y a un message (que tu peux modifier ou ôter.

Ensuite, la macro teste les lignes en dessous de la cellule modifiée (target) et change la couleur si elle est vide.
Les couleurs sont prises en B6 à B9.
Si on efface la cellule, la couleur d'au-dessus est reprise sauf s'il s'agissait de la première ligne.

J'ai mis une liste déroulante (données\validation\) pour limiter la saisie autorisée.
J'ai modifié la formule de nombre de séances avec la fonction nb() qui est plus simple que la série de si().

Je vois que la sasie des temps se fait en minute. Il serait possible de le faire directement en heure 00:00 pour plus de simplicité (en modifiant bien sûr les formules de récapitulation)

Leplot

NB : "un bon sportif est un sportif mort" (Pierre de Coubertin)
0
bricedugard
19 mars 2009 à 23:02
Merci pour ces lignes de programme, après deux heures pour comprendre clairement les instructions (ben oui je ne connais aucune commande) j'ai à peu près pigé, j'ai enlevé le case"" pour mettre case Else (c'est ma perf du jour) puisque j'ai dévérouillé la liste pour pouvoir mettre le détail des activités en plus ça a l'air de marcher.

J'ai quand même des points en suspens :
je comprends pas la différence entre Target et Range. Target c'est le "nom" attribué à la cellule par la fonction range ?
la commande Target.offset(x,y) crée un décalage de x lignes et y colonnes sur l'objet target?

Sinon je trouve que ces lignes de programme sont très élégantes , ça a l'air tellement facile que j'en râle. Bon en même temps j'ai jamais fait que du turbopascal il y a 13 ans en prépa... et la programmation de ma casio8800 au lycée c'est pas les meilleures références je crois...

Je vais potasser l'utilisation du 00:00 pour le temps et faire les modifications sur les formules merci pour l'idée
et surtout merci pour tout.

Brice
0
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
20 mars 2009 à 09:30
Bonjour Brice

Target est une variable transmise comme argument lors de l'appel de worsheet_Change(). Elle correspond à la cellule active au moment de l'appel de la routine. Elle pourrait s'appeler Cible ou XBshdkjhgfj si tu préfères, le tout est de changer l'argument de worsheet_Change().

Range définit une plage de cellules. Dans le code, je l'utilise pour définir une plage en fonction de la cellule active.
Offset permet effectivement de décaler la cellule utilisée en relatif et non en absolu ("B1") ce qui est plus simple quand l'adresse est variable.

LePlot

NB : pour un sportif, tu t'en sors bien.
0
bricedugard
20 mars 2009 à 19:58
Merci de tes éclaircissements et pour la remarque encourageante mais bon accessoirement je suis prof de maths, mais c'est vrai que l'info n'a pratiquement pas fait partie de mon cursus à part quelques heures sur word internet et c'est tout... J'arrive à comprendre les lignes de prog et à les réadapter pour obtenir exactement ce que je veux mais je peux pas les créer, faudrait un de ces quatre que je potasse tout ça comme il faut en été 2010 peut-être...

En tout cas merci pour tout

Bricedugard
0