Mettre en gras si max

vassili

XLDnaute Occasionnel
Bonjour le forum,

Voila j'ai un soucis, je n'arrive pas à faire une macro qui fonctionnerait de la manière suivante:

La macro met en gras la valeur max de chaque ligne du tableau.

Voici le fichier:

Regarde la pièce jointe Classeur3.xls

Merci et à bientôt,

Vassili
 

Pièces jointes

  • Classeur3.xls
    22 KB · Affichages: 88
  • Classeur3.xls
    22 KB · Affichages: 86

Robert

XLDnaute Barbatruc
Repose en paix
Re : Mettre en gras si max

Bonjour Vassili, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
 
'boucle sur toutes les cellules éditées cel de la colonne B
For Each cel In Sheets("Gras").Range("B1:B" & Sheets("Gras").Cells(Application.Rows.Count, 2).End(xlUp).Row)
    If cel.Value > cel.Offset(0, 1).Value Then 'condition : si la cellule est supérieure à celle de la colonne C
        cel.Font.Bold = True 'gras dans la cellule
    Else 'sinon
        cel.Offset(0, 1).Font.Bold = True 'gras dans la cellule de la colonne C
    End If 'fin de la condition
Next cel 'prochaine cellule cel de la boucle
End Sub
 

Kiseki

XLDnaute Occasionnel
Re : Mettre en gras si max

Bonjour,

Avec une MFC :

Colonne de gauche par rapport à la droite :
Code:
=moyenne(INDIRECT("L" & LIGNE() & "C" & COLONNE();0);INDIRECT("L" & LIGNE() & "C" & COLONNE()+1;0))<INDIRECT("L" & LIGNE() & "C" & COLONNE();0)

Colonne de droite par rapport à la gauche :
Code:
=moyenne(INDIRECT("L" & LIGNE() & "C" & COLONNE();0);INDIRECT("L" & LIGNE() & "C" & COLONNE()-1;0))<INDIRECT("L" & LIGNE() & "C" & COLONNE();0)


La mise en forme conditionnel peut faire référence à un nom dynamique.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Mettre en gras si max

Bonjour Vassili, Kiseki, bonjour le forum,

Vassili à dit:
Dans le cas ou j'ai 10 colonnes comment fais tu?
D'abord je commence par le dire... Après j'essaie comme ça :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim li As Range 'déclare la variable cel (CELlule)
Dim max As Date 'décalre la variable max (valeur MAXimale)
 
Set pl = Sheets("Gras").Range("A1").CurrentRegion 'définit la plage pl (à adapter)
For Each li In pl.Rows 'boucle sur toutes les lignes de la plage pl
    max = Application.WorksheetFunction.max(li) 'définit la valeur maximale de la ligne
    li.Find(max, , xlFormulas, xlWhole).Font.Bold = True 'recherche dans la ligne la valeur maximale et la met en gras
Next li 'prochaine ligne de la boucle
End Sub
 

Kiseki

XLDnaute Occasionnel
Re : Mettre en gras si max

J'étais arrivé à ça :

Code:
Sub DetectMax()
Dim nb_ligne As Integer, last_col As Integer

nb_ligne = Application.WorksheetFunction.CountA(Range("B:B")) '20
last_col = Application.WorksheetFunction.CountA(Range("1:1")) '10

Range("B1", Cells(20, 10)).Font.Bold = False


For l = 1 To nb_ligne
    For c = 1 To last_col
        If Cells(l, c) = Application.WorksheetFunction.Max(Range(Cells(l, 2), Cells(l, last_col))) Then
            Cells(l, c).Font.Bold = True
        End If
    Next c
Next l
    
End Sub


J'ai encore tant de choses à apprendre.


@Robert, tu n'aurais pas oublié d'enlever une précédente mise en gras ?
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 237
Membres
103 497
dernier inscrit
JP9231