OVH Cloud OVH Cloud

mise en forme

3 réponses
Avatar
Xtof
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 :

RefEdit1.Text = ActiveWindow.RangeSelection.Address
Cellule = RefEdit1.Text

après je n'y arrive pas
Merci d'avance
A+
Xtof

3 réponses

Avatar
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
Avatar
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 :

RefEdit1.Text = ActiveWindow.RangeSelection.Address
Cellule = RefEdit1.Text

après je n'y arrive pas
Merci d'avance
A+
Xtof



Avatar
PMO
Bonjour,

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 :

RefEdit1.Text = ActiveWindow.RangeSelection.Address
Cellule = RefEdit1.Text

après je n'y arrive pas
Merci d'avance
A+
Xtof