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 été voir dans l'aide VBA pour ce qui concerne ?
Code:
Application.ScreenUpdating = False
(touche ALT+F11 -> F1 )

Des indices : screen = ecran
updating -> proche de update non ?
false = faux , true=vrai

edition : bonsoir ROGER2327
 
Dernière édition:
Re : Valeurs comprise entre en macro

Re...
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

  • On trouve dans l'aide de VisualBasic :
    ScreenUpdating, propriété

    Cette propriété a la valeur True si la mise à jour de l'écran est activée. Type de données Boolean en lecture-écriture.

    Notes
    Désactivez la mise à jour de l'écran pour accélérer l'exécution du code de votre macro. Vous ne pourrez suivre le déroulement de la macro mais en revanche celle-ci sera exécutée plus rapidement.

    N'oubliez pas d'affecter de nouveau la valeur True à la propriété ScreenUpdating à la fin de la macro.
    (...)
    En bloquant la mise à jour de l'écran, on obtient une exécution beaucoup plus rapide des procédures qui modifient l'affichage ou écrivent dans les feuilles.

  • La variable oLig est définie dans la ligne
    Code:
    [COLOR="DarkSlateGray"][B]For Each oLig In Intersect(Target, oPlg).Rows[/B][/COLOR]
    Il suffit de lire :
    Pour chaque oLig de l'ensemble des lignes (Rows) de l'intersection de la cible (Target) et de oPlg (i.e. Range("C3:E26"))...
    ...autrement dit pour chaque ligne de Range("C3:E26") où une valeur a été modifiée...

  • La ligne
    Code:
    [COLOR="DarkSlateGray"][B]            .Interior.Color = 16777215 + _
                   (.Value < .Offset(0, 1).Value) * 16776960 + _
                   (.Offset(0, 2).Value <= .Value) * 11480941[/B][/COLOR]
    mérite en effet une explication.

    Elle s'applique à la cellule désignée à la ligne précédente par

    Cells(Intersect(oPlg, oLig).Row, oPlg.Columns(1).Column)

    c'est à dire à une cellule de la première colonne de la plage C3:E26 de la feuille Feuil1 de votre classeur exemple.xls.
    Le test (.Value < .Offset(0, 1).Value) (respectivement (.Offset(0, 2).Value <= .Value)) renvoie -1 si la condition est réalisée, 0 dans le cas contraire ; donc si la valeur de la cellule de la colonne C est strictement inférieure (resp. supérieure ou égale) à celle de la colonne D (resp. E) de la même ligne, le test renvoie -1, et dans le cas contraire, 0.

    Il y a donc trois valeurs possibles pour
    16777215 + (.Value < .Offset(0, 1).Value) * 16776960 + (.Offset(0, 2).Value <= .Value) * 11480941 :

    16777215 + (-1) * 16776960 + (0) * 11480941 si C < D ;
    16777215 + (0) * 16776960 + (0) * 11480941 si D <=C <E ;
    16777215 + (0) * 16776960 + (-1) * 11480941 si E <= C.

    En effectuant les calculs, on obtient 255, 16777215 et 5296274 qui correspondent aux couleurs (color) rouge, blanc et vert.
    (255 et 5296274 sont les valeurs que vous avez utilisées dans la procédure du module Module1 de votre classeur.)
Voilà...

Si je peux me permettre un conseil : n'hésitez pas à consulter l'aide fournie par Microsoft. Bien qu'elle soit quelquefois bizarrement traduite, c'est une source utile.​
ROGER2327
#2737
 
Dernière édition:
Re : Valeurs comprise entre en macro

merci à vous ceci est très bien expliquer et je suis tout a fait d'accord avec vous sur l'aide qui n'est pas assez explicite dans certain cas. Mais j'essaierai par la suite de plus prendre le temps de comprendre leur explication.

Encore merci à toi
 
- 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