Besoin d'aide pour une macro sous excel

Bonjour,

Je suis stagiaire dans une société pour la gestion d’un parc automoible. J’utilise beaucoup excel, mais sans macro. Ou sinon, des tableaux avec macro qui ont été créés avant que j’arrive.

En fait, à chaque fois que j’entre une nouvelle ligne avec un nouveau numéro de dossier, j’écris la ligne en rouge. Et donc la dernière ligne qui était écrite en rouge, je la ré écrit en vert (j’aime pas le noir ^^).

Pensez-vous que je puisse en faire une macro ? Si oui, avec quels codes ?

Car c’est très pesant de devoir à chaque fois rechercher la dernière ligne rouge pour la remettre en vert… dans un petit tableau OK c’est facile, mais plus le tableau s’allonge et plus cela devient fastidieux…

Merci d’avance !!!

Amandine.

Oui, et pour la macro, tu peux commencer par enregistrer tes manipulations pour parvenir à tes fins. Ensuite tu regardes le code généré et tu essaies de retrouver qui fait quoi.

Perso, j’ai procédé comme ca au tout début, histoire de connaitre les responsabilités de chaque objet du (plutot vaste) modele.

Pas si évident que ça en a l’air.
Pas en ce qui concerne l’écriture de la macro, qui n’a rien de difficile, mais dans la méthode à choisir pour déclencher cette macro
A quoi reconnaît-on la dernière ligne entrée ? (par ex est-elle toujours en dernière position, ou y a-t-il des insertions …)
Même question pour la ligne “rouge” à passer en “vert”
La nouvelle ligne saisie l’est-elle en noir, ou déjà en vert, avant la conversion en rouge
La macro devra-t-elle se déclencher automatiquement, ou par appui sur un bouton, ou par un choix du menu contextuel …?)
Si activation automatique, quel est le critère qui indique que la ligne est entièrement saisie ?

Merci gcc, je me disais bien que c’était plus compliqué que ça en a l’air :stuck_out_tongue:

En fait, la dernière ligne entrée n’est pas forcément en dernière position, j’insère aussi, donc je ne sais pas trop comment on peut dire à l’ordinateur que je suis en train de tapper une nouvelle ligne.
Par contre ce qui est sûr, c’est qu’en fait, dès que j’insère une ligne, j’incrémente un nouveau numéro dans la colonne A1. C’est d’ailleurs pour ça que je mets la dernière ligne en rouge, pour trouver le dernier numéro de dossier plus facilement.

Donc peut-être existe-t-il une autre manière de faire pour chercher le nouveau numéro et donc à chaque fois que j’entre une nouvelle ligne, le numéro se mette automatiquement ?

La nouvelle ligne saisie est en vert, en fait, tout mon texte est vert à la base. C’est la société qui a choisi ça, je préfère ne pas le changer, puis faut dire que c’est plus joli que le noir :stuck_out_tongue:

Si on reste sur l’idée du changement de couleur, la macro devra se faire automatiquement dès l’instant où j’ai entré le nouveau numéro dans la colonne A1. Pas forcément quand la ligne est entièrement saisie car parfois je laisse des cases vides si je n’ai pas toutes les informations lors de la saisie.

Sinon je pense à autre chose : on peut, par exemple, tapper “num” dans la premier colonne de la nouvelle ligne, puis, dès que je fais entrer, l’ordinateur chercherait le dernier numéro et changerait mon “num” avec le numéro incrémenté. Et dans ce cas la, on oublie le problème des couleurs. Ce serait peut-être plus simple ?

Merci d’avance :wink:

Quand tu dis colonne A1, je pense que tu veux dire colonne A, parce que A1 c’est la première cellule en haut à gauche, et tu ne dois pas toujours taper sur la première ligne …
Sinon, l’idée d’utiliser le numéro est une bonne idée
Si tu sais écrire des macros basées sur l’évènement change, tu fais en sorte que

  • pour tout changement dans la colonne A
  • si le reste de la ligne (colonnes utilisées) est vierge
  • alors toutes les lignes du tableau passent en vert
  • puis la ligne active passe en rouge

Si tu n’as pas l’habitude, comme les macros déclenchées par évènement ne sont pas forcément intuitives, il faut que tu fasses comme le préconise vitamin1981 : d’abord une petite macro simple (enregistrée) pour effectuer le(s) changement(s) de couleur. Même pas besoin de bouton, tu l’utises par Outils > Macro > Macros > executer
Et une fois au point, on te guidera pour l’activation automatique.
Bien sûr, si tu as des difficultés avant, tu le dis, mais tu donnes exactement ce qui bloque (code et message d’erreur)

Edit: et pendant que tu y es, si tes numéros de dossiers se suivent, tu peux faire en sorte que la macro te mette d’office le numéro suivant le max existant.
Mais c’est peut être à faire dans un deuxième temps pour ne pas tout mélanger
Edité le 14/05/2009 à 15:56

Alors, j’ai essayé de faire une macro automatique, voici le code :

Les deux seules lignes qu’il y a de bon sont les sélections de couleur lol…
Le “Rows” signifie que j’ai sélectionné toute la ligne pour la mettre d’une couleur. La 101 (avec le num dossier 2008089) était en rouge, je l’ai sélectionné pour la mettre en vert, puis la ligne 85 (avec le nouveau num dossier 2008090) était en vert, je l’ai sélectionné pour la mettre en rouge.

En fait, il me faudrait genre une boucle, qui me dise

“quand “num” est tappé dans la colonne A, alors on cherche pour chaque ligne, laquelle est en color 3. Quand la ligne est trouvé, on la met en color 50, puis on sélectionne la ligne où “num” a été tappé, et on la mets en color 3.”

Et ça, aucune idée de comment le faire :frowning: Je précise que je n’ai jamais fait d’informatique et que je suis ici dans le but que quelqu’un m’éclaire sur mon problème ^^

Non, tout est bon, il suffit de l’habiller un peu

[i]Sub test_chgmt_couleur()
’ test_chgmt_couleur Macro
’ Touche de raccourci du clavier: Ctrl+w

ActiveCell.FormulaR1C1 = “2008090”[/i]
Cette ligne, c’est parce que tu as tapé ton numéro de dossier pendant l’enregistrement de la macro.
On va l’ignorer (tu la supprimes), comme si la macro se lançait juste après la saisie.
Par contre, quand tu taperas ton ctrl-w, tu feras bien attention que ce soit la cellule contenant le numero qui soit sélectionnée
Cette contrainte sautera au final

Rows(“101:101”).Select
Ca c’est la ligne qui était en rouge ; il faut d’abord la repérer en balayant toute ta zone de saisie
On suppose que tes données commencent en A4, mais tu ajustes en fonction de la réalité
On va balayer toute la première colonne cellule par cellule, tant qu’il y a des données, d’où l’intérêt d’avoir déjà saisi le nouveau numéro de dossier pour qu’il n’y ait pas de “trou”.
Donc on remplace la ligne par

set R = range(“A4”) 'valeur à ajuster
for each c in range(R, R.end(xldown)) 'balayage vertical
if c.Font.ColorIndex = 3 then ’ cellule rouge trouvée
c.EntireRow.ColorIndex = 50 'passe toute la ligne en vert
endif
Next 'cellule suivante

pour
Rows(“85:85”).Select
Selection.Font.ColorIndex = 3

Ca c’est la ligne à passer en rouge : elle ne sera pas toujours en 85, mais par contre ce sera toujours la ligne dans laquelle la cellule est sélectionnée (celluleActive).
Donc à remplacer par
[i]ActiveCell.EntireRow.Font.ColorIndex=3

End Sub
[/i]

edit:
tu peux aussi mettre
selection.EntireRow.Font.ColorIndex=3,
mais de toute manière cette ligne ne sera pas conservée telle quelle au final
Edité le 15/05/2009 à 09:52