Limiter la selection dans excel - VB/VBA/VBS - Programmation
Marsh Posté le 22-10-2007 à 14:23:12
As-tu essayé d'utiliser la mise en forme conditionnelle d'Excel (Menu Format) ?
Si oui, en quoi cela ne répond-il pas à ton besoin, pour envisager une macro ?
Marsh Posté le 22-10-2007 à 14:42:40
Bonjour,
Tu lui fais changer de couleur dès que la valeur est différente du "31/12..." quand il n'y a rien c'est normal que ca change.
Ajoute un test du style "si différent de ta cellule vide" avant de changer la couleur.
Pour savoir si ta sélection est dans la colonne "e" teste la colonne de la cellule active :
ActiveCell.Column
Marsh Posté le 22-10-2007 à 14:47:06
Merci pour vos réponses!
Finalement j'ai réussi à m'en sortir avec un ElseIf different de cellule vide, comme tu le disais Paul Hood.
Mais je pensais qu'il y avait un moyen plus "propre" de lui dire de s'arreter une fois qu'il arrive sur une plage blanche...
Et pour répondre à tegu, je sais que ca peut se faire avec la mise en forme automatique, mais en fait plus que la macro, ce qui m'interesse, c'est de savoir la faire! ^^
Merci encore!
Marsh Posté le 22-10-2007 à 14:49:09
Tu peux si tu connais la taille de ton tableau, définir un Range de ton tableau et lui faire parcourir uniquement les cellules de ce Range avec un each.
Marsh Posté le 22-10-2007 à 15:00:17
ok, mais justement, mon problème c'est que c'est un tableur à rafraichir régulièrement et dont le nombre de lignes change à chaque fois...
Avec le elseif, ca marche très bien, mais est-ce que ca n'alourdit pas mon programme?
Marsh Posté le 22-10-2007 à 18:43:52
la méthode end(xlup) pourrait t'aider...
For each cEll in range("E1:E" & range("E65536" ).end(xlUp).row)
next
En partant du principe que la première cellule soit E1, si tu mets ton traitement à l'interieur de la boucle, je pense que ça devrait correspondre à ce que tu veux !
Marsh Posté le 22-10-2007 à 11:48:21
Bonjour à tous!
Je suis un grand débutant de VBA, et je m'escrime depuis quelques jours sur une macro...
Malheureusement, je commence à vraiment être bloqué et je n'ai rien trouvé malgré des longues recherches sur les fofos...
Voila donc mon problème:
Je voudrais faire une macro qui change de couleur les cases d'un tableur uniquement sur une colonne pour certaines plages de valeurs. Mais le problème, c'est que ma macro change la couleur sur toutes les cases de la ligne jusqu'au max d'excel! (jusqu'à la ligne 64 000!!) du coup ca dure 3 plombes et c'est pas très pro tout ca...
voici mon code:
Sub couleur()
ActiveSheet.UsedRange.Select
Dim cEll As Range
If Columns("e:e" ).Select Then
For Each cEll In Selection
If cEll.Value <> "31/12/2007" Then
cEll.Interior.ColorIndex = 40
cEll.Offset(0, -4).Interior.ColorIndex = 40
End If
Next cEll
End If
ActiveCell.End(xlToLeft).Select
MsgBox "fini!"
End Sub
je pense que le probleme vient de mon "If Columns("e:e" ).Select Then", car il "écrase" la 1ère séléction, mais je ne sais pas comment faire pour le limiter aux cellules utilisées du tableau et qu'il n'aille pas jusqu'à la ligne maximum...
Qqun pourrait m'aider??
Merci d'avance!