Valeurs comprise entre en macro

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 !

Florian53

XLDnaute Impliqué
Bonjour a tous je souhaiterais faire en macro:

une valeur en (C3) si elle et supérieur a la valeur maxi ou inférieur a la valeur mini la cellule (C3) se colore.

Par exemple vert si supérieur et rouge si inférieur.

J'ai réussi à le réaliser a l'aide des mise en forme conditionnelles mais je voudrais voir le code en macro.

Je vous transmets un fichier exemple

Merci à vous
 

Pièces jointes

Re : Valeurs comprise entre en macro

Bonsoir



Tu as déjà le code non 😕

Grâce à l'enregistreur de macro que tu as utilisé puisque ton fichier contient une macro nommée Macro1

Pour voir le code

ALT+F11 (ou Outils/Macros/Microsoft Visual Basic Editor)
 
Re : Valeurs comprise entre en macro

Merci à toi de m'avoir lu ce code là ne correspond pas car par exemple si j'applique la macro a la cellule c5 il prend en compte V.min et V.max des cellules d3 et e3.

et généralement l'enregistreur de macro complique souvent les codes je trouve.
 
Re : Valeurs comprise entre en macro

Re



Pourtant ca fonctionne non ?

Code:
Sub Macro2()
' Macro2 Macro
' Macro enregistrée le 09/02/2010 par  
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual, Formula1:="=$E3"
Selection.FormatConditions(1).Interior.ColorIndex = 43
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=$D3"
Selection.FormatConditions(2).Interior.ColorIndex = 3
End Sub
 
Re : Valeurs comprise entre en macro

Re



Voici un équivalent ( au niveau du résultat) mais sans MFC


Code:
Sub colorier()
Dim c As Range, r As Range
Set r = Selection [COLOR=Green]'ici pour l'exemple[/COLOR]
[COLOR=Black]'Set r=[C3].Resize([C65536].End(xlUp).Row) [COLOR=Green]' à privilégier[/COLOR][/COLOR]
For Each c In r
    With c
        .Interior.ColorIndex = _
        Switch((.Value >= .Offset(, 2)), 43, (.Value < .Offset(, 1)), 3)
    End With
Next c
End Sub
 
Dernière édition:
Re : Valeurs comprise entre en macro

bonsoir
a moins qu'entre temps tu n'es eut une solution
Code:
Sub remplir_condition()
   Range("c3").Activate
   Do
     
    If ActiveCell.Value > ActiveCell.Offset(0, 2).Value Then
    With Selection.Interior
        .Color = RGB(0, 555, 0)
    End With
Else:
If ActiveCell.Value < ActiveCell.Offset(0, 1).Value Then
With Selection.Interior
        .Color = RGB(555, 0, 0)
     End With

End If
End If
ActiveCell.Offset(1, 0).Activate
Loop Until ActiveCell.Row = Range("c5000").End(xlUp).Row
End Sub
A+
 
Re : Valeurs comprise entre en macro

cela fonctionne merci à vous et si je voulais mettre par exemple pour:

for i =1 to 50
Set r = "C3" +i

Car apres je voudrais mettre cette macro dans worksheet_change pour que celà se fasse automatiquement, comme ça je n'aurais pas à sélectionné la cellule cela se fera automatiquement.

C'est possible?
 
Re : Valeurs comprise entre en macro

Bonsoir à tous
Une proposition de code à placer dans le module de la feuille Feuil1.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim oPlg As Range, oLig As Range
   Set oPlg = Range("C3:E26")
   If Not Intersect(Target, oPlg) Is Nothing Then
      Application.ScreenUpdating = False
      For Each oLig In Intersect(Target, oPlg).Rows
         With Cells(Intersect(oPlg, oLig).Row, oPlg.Columns(1).Column)
            .Interior.Color = 16777215 + _
               (.Value < .Offset(0, 1).Value) * 16776960 + _
               (.Offset(0, 2).Value <= .Value) * 11480941
         End With
      Next oLig
      Application.ScreenUpdating = True
   End If
End Sub[/B][/COLOR]
ROGER2327
#2727
 
Re : Valeurs comprise entre en macro

oui merci mais je n'ai pas ton niveau
que veux dire
set c=selection (pour ca je pense la cellule active en cours mais???)
et aussi
Switch((.Value >= .Offset(, 2)), 43, (.Value < .Offset(, 1)), 3) (et pour ca connais pas switch et pourquoi 43 et 3
merci du conseil
 
Re : Valeurs comprise entre en macro

Re


Voici la version avec commentaires

Code:
Sub colorier()
[COLOR=Green]'Déclarations[/COLOR]
Dim c As Range, r As Range
[COLOR=Green]'Définition de la plage de cellules à traiter[/COLOR]
Set r=[C3].Resize([C65536].End(xlUp).Row) 
[COLOR=Green]'On redimensionne la page de C3 à la dernière cellule
'non vide de la colonne C[/COLOR]
For Each c In r
[COLOR=Green]'ici on utilise Switch , voir dans l'aide VBA
'si condition 1 = vraie alors couleur de fond =3
'si condition 2 = vraie alors couleur de fond =43[/COLOR]
[COLOR=Green]'3 et 43 sont couleurs qui étaient dans la MFC initiale de la pièce jointe[/COLOR]
    With c
        .Interior.ColorIndex = _
        Switch((.Value >= .Offset(, 2)), 43, (.Value < .Offset(, 1)), 3)
    End With
Next c
End Sub
PS: mon conseil était juste amical, (rien à avoir avec un quelconcque niveau)
 
Re : Valeurs comprise entre en macro

Bonsoir à tous
Une proposition de code à placer dans le module de la feuille Feuil1.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim oPlg As Range, oLig As Range
   Set oPlg = Range("C3:E26")
   If Not Intersect(Target, oPlg) Is Nothing Then
      Application.ScreenUpdating = False
      For Each oLig In Intersect(Target, oPlg).Rows
         With Cells(Intersect(oPlg, oLig).Row, oPlg.Columns(1).Column)
            .Interior.Color = 16777215 + _
               (.Value < .Offset(0, 1).Value) * 16776960 + _
               (.Offset(0, 2).Value <= .Value) * 11480941
         End With
      Next oLig
      Application.ScreenUpdating = True
   End If
End Sub[/B][/COLOR]
ROGER2327
#2727

Merci à vous tous j'ai opté pour la solution de roger est ce que tu pourrais commenté ta solution comme Staple1600 pour que je puisse l'adapté .
Encore merci à vous
 
Re : Valeurs comprise entre en macro

Re...
Sauf à traduire mot à mot cette procédure, je ne vois guère de commentaire à faire. Le plus simple est que vous disiez exactement quelle partie du code vous pose un problème.​
ROGER2327
#2731
 
Dernière édition:
Re : Valeurs comprise entre en macro

Alors je ne comprend pas trop ce qui est en rouge:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oPlg As Range, oLig As Range
Set oPlg = Range("C3:E26")
If Not Intersect(Target, oPlg) Is Nothing Then
Application.ScreenUpdating = False
For Each oLig In Intersect(Target, oPlg).Rows
With Cells(Intersect(oPlg, oLig).Row, oPlg.Columns(1).Column)
.Interior.Color = 16777215 + _
(.Value < .Offset(0, 1).Value) * 16776960 + _
(.Offset(0, 2).Value <= .Value) * 11480941
End With
Next oLig
Application.ScreenUpdating = True
End If
End Sub

et je voi pas à quoi correspond olig
 
- 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 MFC dans tableau
Réponses
2
Affichages
361
Réponses
4
Affichages
548
Réponses
5
Affichages
665
W
Réponses
6
Affichages
345
Réponses
4
Affichages
332
Réponses
5
Affichages
665
Retour