Bonjour à tous,
Dans une feuille je sélectionne des cellules contenant des chiffres, on va
dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce en
VBA.
J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules,
mais je n'arrive pas à mettre en forme :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CAP2
Salut,
pour éviter le VBA, tu peux passer par une mise en forme conditionnelle...
Tu sélectionnes la plage sur laquelle tu veux mettre en forme la valeur maximale (ici, par exemple B1:B30), tu vas sur Format/Mise en forme conditionnelle, et tu choisis : Si la "valeur de la cellule" "est égale à" =MAX($B$1:$B$30)
et tu cliques sur format pour choisir la mise en forme à appliquer à la valeur maximale...
Ca marche ?
CAP2
Salut,
pour éviter le VBA, tu peux passer par une mise en forme conditionnelle...
Tu sélectionnes la plage sur laquelle tu veux mettre en forme la valeur
maximale (ici, par exemple B1:B30), tu vas sur Format/Mise en forme
conditionnelle, et tu choisis :
Si la "valeur de la cellule" "est égale à" =MAX($B$1:$B$30)
et tu cliques sur format pour choisir la mise en forme à appliquer à la
valeur maximale...
pour éviter le VBA, tu peux passer par une mise en forme conditionnelle...
Tu sélectionnes la plage sur laquelle tu veux mettre en forme la valeur maximale (ici, par exemple B1:B30), tu vas sur Format/Mise en forme conditionnelle, et tu choisis : Si la "valeur de la cellule" "est égale à" =MAX($B$1:$B$30)
et tu cliques sur format pour choisir la mise en forme à appliquer à la valeur maximale...
Ca marche ?
CAP2
papou
Bonjour Avec VBA, voici un code testé qui fonctionne (excel 2003). Un peu l'impression de l'artillerie lourde :-( mais bon... Soit donc l'ensemble du code sur un commandbutton par exemple : (sélection de la plge dans Refedit au préalable puis clic sur le bouton) Private Sub CommandButton1_Click() Dim NbCol As Long, trouve As Range If RefEdit1.Value <> "" Then NbCol = Range(RefEdit1).Columns.Count For i = 1 To NbCol With Range(Range(Cells(Range(RefEdit1).Row, _ (NbCol - NbCol) + i), Cells(Range(RefEdit1).Rows.Count, (NbCol - NbCol) + i)).Address) Set trouve = .Find(Application.WorksheetFunction.Max(Range(Range _ (Cells(Range(RefEdit1).Row, (NbCol - NbCol) + i), Cells(Range(RefEdit1).Rows.Count, _ (NbCol - NbCol) + i)).Address)), , xlValues) If Not trouve Is Nothing Then trouve.Font.Bold = True End With Next i End If End Sub
Cordialement Pascal
"Xtof" a écrit dans le message de news:
Bonjour à tous, Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce en
VBA. J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules, mais je n'arrive pas à mettre en forme :
Bonjour
Avec VBA, voici un code testé qui fonctionne (excel 2003).
Un peu l'impression de l'artillerie lourde :-( mais bon...
Soit donc l'ensemble du code sur un commandbutton par exemple :
(sélection de la plge dans Refedit au préalable puis clic sur le bouton)
Private Sub CommandButton1_Click()
Dim NbCol As Long, trouve As Range
If RefEdit1.Value <> "" Then
NbCol = Range(RefEdit1).Columns.Count
For i = 1 To NbCol
With Range(Range(Cells(Range(RefEdit1).Row, _
(NbCol - NbCol) + i), Cells(Range(RefEdit1).Rows.Count, (NbCol - NbCol) +
i)).Address)
Set trouve = .Find(Application.WorksheetFunction.Max(Range(Range _
(Cells(Range(RefEdit1).Row, (NbCol - NbCol) + i),
Cells(Range(RefEdit1).Rows.Count, _
(NbCol - NbCol) + i)).Address)), , xlValues)
If Not trouve Is Nothing Then trouve.Font.Bold = True
End With
Next i
End If
End Sub
Cordialement
Pascal
"Xtof" <Xtof@discussions.microsoft.com> a écrit dans le message de
news:501E359F-7DB7-4D7C-B66A-444CAB6F4E9F@microsoft.com...
Bonjour à tous,
Dans une feuille je sélectionne des cellules contenant des chiffres, on va
dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre
en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce
en
VBA.
J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules,
mais je n'arrive pas à mettre en forme :
Bonjour Avec VBA, voici un code testé qui fonctionne (excel 2003). Un peu l'impression de l'artillerie lourde :-( mais bon... Soit donc l'ensemble du code sur un commandbutton par exemple : (sélection de la plge dans Refedit au préalable puis clic sur le bouton) Private Sub CommandButton1_Click() Dim NbCol As Long, trouve As Range If RefEdit1.Value <> "" Then NbCol = Range(RefEdit1).Columns.Count For i = 1 To NbCol With Range(Range(Cells(Range(RefEdit1).Row, _ (NbCol - NbCol) + i), Cells(Range(RefEdit1).Rows.Count, (NbCol - NbCol) + i)).Address) Set trouve = .Find(Application.WorksheetFunction.Max(Range(Range _ (Cells(Range(RefEdit1).Row, (NbCol - NbCol) + i), Cells(Range(RefEdit1).Rows.Count, _ (NbCol - NbCol) + i)).Address)), , xlValues) If Not trouve Is Nothing Then trouve.Font.Bold = True End With Next i End If End Sub
Cordialement Pascal
"Xtof" a écrit dans le message de news:
Bonjour à tous, Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce en
VBA. J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules, mais je n'arrive pas à mettre en forme :
Ci-dessous un code pour répondre à: Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en gras la valeur la plus grandes dans chaque colonne de la sélection et ce en VBA.
J'ai bloqué volontairement la plage à traiter au maximum 3000 lignes et 30 colonnes (j'ai testé ce cas et ça marche). Si vous avez plus de lignes ou de colonnes if faudra rectifier la ligne If P.Rows.Count > 3000 Or _ P.Columns.Count > 30 Then Exit Sub
J'ai limité également le minimum de lignes de la plage à 3 pour des raisons techniques. D'autre part, la macro ne traite pas une plage en multisélection. Elle traite uniquement les valeurs numériques. Enfin, s'il existe plusieurs occurrences d'un nombre maximum, ces occurrences seront mises toutes en gras.
'****************************** Option Explicit Sub MaxBold() Dim P As Range Dim A$ Dim var Dim i& Dim j& Dim Tcoord&(1 To 4) Dim big# Dim nbBig& Dim Tbig#() Dim R As Range Set P = ActiveSheet.Range(Selection.Address) If P.Rows.Count > 3000 Or _ P.Columns.Count > 30 Then Exit Sub If P.Rows.Count = 1 And _ P.Columns.Count = 1 Then Exit Sub If P.Rows.Count < 3 Then Exit Sub A$ = P.Address(ReferenceStyle:=xlR1C1) If InStr(1, A$, ",") Then MsgBox "Multi-sélection interdite." Exit Sub End If A$ = Mid(A$, 2) Do Until Val(A$) = 0 i& = i& + 1 Tcoord&(i&) = Val(A$) A$ = Mid(A$, Len(CStr(Tcoord&(i&))) + 1) Do Until IsNumeric(Mid(A$, 1, 1)) _ Or A$ = "" A$ = Mid(A$, 2) Loop Loop var = P ReDim Tbig#(1 To UBound(var, 2), 1 To 2) For j& = 1 To UBound(var, 2) big# = 4.94065645841247E-324 nbBig& = 0 For i& = 1 To UBound(var, 1) If IsNumeric(var(i&, j&)) Then nbBig& = nbBig& + 1 If var(i&, j&) >= big# Then big# = var(i&, j&) Else nbBig& = nbBig& - 1 End If End If Next i& Tbig#(j&, 1) = big# If nbBig& = UBound(var, 1) Then _ Tbig#(j&, 2) = -1 Next j& For j& = 1 To UBound(var, 2) If Tbig#(j&, 2) = 0 Then For i& = 1 To UBound(var, 1) If var(i&, j&) = Tbig#(j&, 1) Then Set R = Range(Cells(i& + Tcoord&(1) - 1, _ j& + Tcoord&(2) - 1), _ Cells(i& + Tcoord&(1) - 1, _ j& + Tcoord&(2) - 1)) R.Font.Bold = True End If Next i& End If Next j& End Sub '****************************
Est-ce que ça apporte de l'eau à votre moulin ?
Cordialement.
PMO Patrick Morange
Bonjour à tous, Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en gras la valeur la plus grandes dans chaque colonne de la sélection et ce en VBA. J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules, mais je n'arrive pas à mettre en forme :
Ci-dessous un code pour répondre à:
Dans une feuille je sélectionne des cellules contenant des chiffres, on va
dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre
en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce en
VBA.
J'ai bloqué volontairement la plage à traiter au maximum 3000 lignes
et 30 colonnes (j'ai testé ce cas et ça marche). Si vous avez plus de lignes
ou de colonnes if faudra rectifier la ligne
If P.Rows.Count > 3000 Or _
P.Columns.Count > 30 Then Exit Sub
J'ai limité également le minimum de lignes de la plage à 3 pour
des raisons techniques.
D'autre part, la macro ne traite pas une plage en multisélection.
Elle traite uniquement les valeurs numériques.
Enfin, s'il existe plusieurs occurrences d'un nombre maximum, ces
occurrences seront mises toutes en gras.
'******************************
Option Explicit
Sub MaxBold()
Dim P As Range
Dim A$
Dim var
Dim i&
Dim j&
Dim Tcoord&(1 To 4)
Dim big#
Dim nbBig&
Dim Tbig#()
Dim R As Range
Set P = ActiveSheet.Range(Selection.Address)
If P.Rows.Count > 3000 Or _
P.Columns.Count > 30 Then Exit Sub
If P.Rows.Count = 1 And _
P.Columns.Count = 1 Then Exit Sub
If P.Rows.Count < 3 Then Exit Sub
A$ = P.Address(ReferenceStyle:=xlR1C1)
If InStr(1, A$, ",") Then
MsgBox "Multi-sélection interdite."
Exit Sub
End If
A$ = Mid(A$, 2)
Do Until Val(A$) = 0
i& = i& + 1
Tcoord&(i&) = Val(A$)
A$ = Mid(A$, Len(CStr(Tcoord&(i&))) + 1)
Do Until IsNumeric(Mid(A$, 1, 1)) _
Or A$ = ""
A$ = Mid(A$, 2)
Loop
Loop
var = P
ReDim Tbig#(1 To UBound(var, 2), 1 To 2)
For j& = 1 To UBound(var, 2)
big# = 4.94065645841247E-324
nbBig& = 0
For i& = 1 To UBound(var, 1)
If IsNumeric(var(i&, j&)) Then
nbBig& = nbBig& + 1
If var(i&, j&) >= big# Then
big# = var(i&, j&)
Else
nbBig& = nbBig& - 1
End If
End If
Next i&
Tbig#(j&, 1) = big#
If nbBig& = UBound(var, 1) Then _
Tbig#(j&, 2) = -1
Next j&
For j& = 1 To UBound(var, 2)
If Tbig#(j&, 2) = 0 Then
For i& = 1 To UBound(var, 1)
If var(i&, j&) = Tbig#(j&, 1) Then
Set R = Range(Cells(i& + Tcoord&(1) - 1, _
j& + Tcoord&(2) - 1), _
Cells(i& + Tcoord&(1) - 1, _
j& + Tcoord&(2) - 1))
R.Font.Bold = True
End If
Next i&
End If
Next j&
End Sub
'****************************
Est-ce que ça apporte de l'eau à votre moulin ?
Cordialement.
PMO
Patrick Morange
Bonjour à tous,
Dans une feuille je sélectionne des cellules contenant des chiffres, on va
dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en
gras la valeur la plus grandes dans chaque colonne de la sélection et ce en
VBA.
J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules,
mais je n'arrive pas à mettre en forme :
Ci-dessous un code pour répondre à: Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en gras la valeur la plus grandes dans chaque colonne de la sélection et ce en VBA.
J'ai bloqué volontairement la plage à traiter au maximum 3000 lignes et 30 colonnes (j'ai testé ce cas et ça marche). Si vous avez plus de lignes ou de colonnes if faudra rectifier la ligne If P.Rows.Count > 3000 Or _ P.Columns.Count > 30 Then Exit Sub
J'ai limité également le minimum de lignes de la plage à 3 pour des raisons techniques. D'autre part, la macro ne traite pas une plage en multisélection. Elle traite uniquement les valeurs numériques. Enfin, s'il existe plusieurs occurrences d'un nombre maximum, ces occurrences seront mises toutes en gras.
'****************************** Option Explicit Sub MaxBold() Dim P As Range Dim A$ Dim var Dim i& Dim j& Dim Tcoord&(1 To 4) Dim big# Dim nbBig& Dim Tbig#() Dim R As Range Set P = ActiveSheet.Range(Selection.Address) If P.Rows.Count > 3000 Or _ P.Columns.Count > 30 Then Exit Sub If P.Rows.Count = 1 And _ P.Columns.Count = 1 Then Exit Sub If P.Rows.Count < 3 Then Exit Sub A$ = P.Address(ReferenceStyle:=xlR1C1) If InStr(1, A$, ",") Then MsgBox "Multi-sélection interdite." Exit Sub End If A$ = Mid(A$, 2) Do Until Val(A$) = 0 i& = i& + 1 Tcoord&(i&) = Val(A$) A$ = Mid(A$, Len(CStr(Tcoord&(i&))) + 1) Do Until IsNumeric(Mid(A$, 1, 1)) _ Or A$ = "" A$ = Mid(A$, 2) Loop Loop var = P ReDim Tbig#(1 To UBound(var, 2), 1 To 2) For j& = 1 To UBound(var, 2) big# = 4.94065645841247E-324 nbBig& = 0 For i& = 1 To UBound(var, 1) If IsNumeric(var(i&, j&)) Then nbBig& = nbBig& + 1 If var(i&, j&) >= big# Then big# = var(i&, j&) Else nbBig& = nbBig& - 1 End If End If Next i& Tbig#(j&, 1) = big# If nbBig& = UBound(var, 1) Then _ Tbig#(j&, 2) = -1 Next j& For j& = 1 To UBound(var, 2) If Tbig#(j&, 2) = 0 Then For i& = 1 To UBound(var, 1) If var(i&, j&) = Tbig#(j&, 1) Then Set R = Range(Cells(i& + Tcoord&(1) - 1, _ j& + Tcoord&(2) - 1), _ Cells(i& + Tcoord&(1) - 1, _ j& + Tcoord&(2) - 1)) R.Font.Bold = True End If Next i& End If Next j& End Sub '****************************
Est-ce que ça apporte de l'eau à votre moulin ?
Cordialement.
PMO Patrick Morange
Bonjour à tous, Dans une feuille je sélectionne des cellules contenant des chiffres, on va dire B4:H20, mais ce peut être partout ailleurs, j'aimerais pouvoir mettre en gras la valeur la plus grandes dans chaque colonne de la sélection et ce en VBA. J'arrive à sélectionner, depuis un UserForm avec un RefEdit, les cellules, mais je n'arrive pas à mettre en forme :