Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Laurent313131

XLDnaute Occasionnel
bonjour,

J'ai une question toute simple pour VBA mais comme je débute c'est difficile pour moi 🙂

Je veux utiliser la variable If Then Else afin de colorier mes cellules en fonction de leur valeur.

Exemple : si B4 < à 10 alors je veux que la trame de fond de B4 soit en rouge et si B4 > à 10, je veux que la trame soit en vert. J'ai essayé ça mais ça ne marche pas (j'ai mi les colorindex au pif car c'est juste pour voir si la variable marche ...)

Sub VMA()
Dim Perf As Integer
Perf = Range("B4")
If Perf <= 10 Then
Cell.Interior.ColorIndex = 2
Else
Cell.Interior.ColorIndex = 3
End If
End Sub

Pouvez vous m'aider s'il vous plaît ?

Merci beaucoup !
 
Re : Variable If VBA

Bonjour



Essaie ainsi

Code:
Sub VMA()
Dim Perf As Range
Set Perf = Range("B4")
If Perf <= 10 Then
'fond rouge
Perf.Interior.ColorIndex = 3
Else
'fond vert
Perf.Interior.ColorIndex = 43
End If
End Sub
PS: Voici une variante (pour plus tard) 😉
Code:
Sub VMA_bis()
Range("B4").Interior.ColorIndex = _
IIf(Range("B4").Value <=10, 3, 43)
End Sub
 
Dernière édition:
Re : Variable If VBA

Me revoilà avec cette fois-ci l'intention de faire un boucle dans mon petit programme.

Si j'ai des valeurs de B4 a T4,comment faire la boucle pour que le programme me colore chaque cellule en fonction de sa valeur ? C'est vraiment dur de commencer avec VBa mais je désespère pas ^^

Merci
 
Re : Variable If VBA

bonjour Laurent313131

en l'absence de Staple 🙂 (que je salue)

A tester:

Code:
Sub VMA()
Dim Perf As Range
[COLOR=seagreen]'Set Perf = Range("B4")[/COLOR]
[COLOR=blue]for each Perf in range("B4:T4")[/COLOR]
If Perf <= 10 Then
'fond rouge
Perf.Interior.ColorIndex = 3
Else
'fond vert
Perf.Interior.ColorIndex = 43
End If
[COLOR=blue]Next Perf[/COLOR]
End Sub
 
Re : Variable If VBA

Re


En réutilisant les exemples précédents:


Code:
Sub VMA()
Dim C As Range
Dim Perf As Range
Set Perf = Range("B4:T4")
For Each C In Perf
C.Interior.ColorIndex = IIf(C.Value <= 10, 3, 43)
Next C
End Sub
Tu as des questions?

La version de pierrejean est plus facile à comprendre lorsqu'on débute 😉

Tu as donc le choix Laurent 😉


edition: bonjour pierrejean
 
Dernière édition:
Re : Variable If VBA

Merci c'est bon ça marche. Je commence un peu à comprendre comment ça fonctionne 🙂

Par contre, si je ne veux pas m'embêter à écrire la fin de ma plage de sélection à chaque fois, puis je faire arrêter ma boucle avant la 1ère cellule vide ? Dans mon exemple en U4 afin que la boucle s'arrête en T4...

J'ai assayé avec endXLdown mais je ne sais pas comment l'écrire correctement ...
 
Re : Variable If VBA

Re

toujours a tester

Code:
Sub VMA()
[COLOR=blue]Dim dercol as integer[/COLOR]
Dim Perf As Range
[COLOR=seagreen]'Set Perf = Range("B4")[/COLOR]
[COLOR=blue]dercol=Cells(4,256).end(xltoleft).Column[/COLOR]
[COLOR=blue]for each Perf in range("B4:T" & dercol)[/COLOR]
If Perf <= 10 Then
'fond rouge
Perf.Interior.ColorIndex = 3
Else
'fond vert
Perf.Interior.ColorIndex = 43
End If
[COLOR=blue]Next Perf[/COLOR]
End Sub

tu peux remplacer Cells(4,256) par Range("IV4")
 
Re : Variable If VBA

Ca marche par contre puis je remplacer "dercol" par "derlin" si mes valeurs vont de B4 à B14 ?

En fait je me suis trompé au début car mes valeurs vont de B4 à B14 et non de B4 à T4

Pour Staple 1600 > la manip de Jean Pierre est effectivement plus simple... je pense que je l'ai saisis ^^
 
Re : Variable If VBA

J'avais tenté ça moi mais ça ne marche pas ...

Sub VMA()
Dim derrow As Integer
Dim Perf As Range
'Set Perf = Range("B4")
derrow = Cells(4, 256).End(xlToDown).Row
For Each Perf In Range("B4:B" & derrow)
If Perf <= 10 Then
'fond rouge
Perf.Interior.ColorIndex = 3
Else
'fond vert
Perf.Interior.ColorIndex = 43
End If
Next Perf
End Sub
 
Re : Variable If VBA

Re

Tu n'étais pas loin
Code:
Sub VMA()
Dim derlin as Long
Dim Perf As Range
[COLOR=blue][/COLOR]derlin=Range("B65536").End(xlUp).Row
For each Perf in Range("B1:B" & derlin)
If Perf <= 10 Then
'fond rouge
Perf.Interior.ColorIndex = 3
Else
'fond vert
Perf.Interior.ColorIndex = 43
End If
[COLOR=blue]Next Perf[/COLOR]
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
594
Réponses
2
Affichages
411
Réponses
14
Affichages
484
Réponses
5
Affichages
666
Retour