OVH Cloud OVH Cloud

programmation d'une macro

2 réponses
Avatar
gil
Bonjour
J'aimerais une aide pour résoudre ce problème :
Soit, dans un tableau, une colonne par exemple : EXO DER ZET SDZ FCV DET ZAM
MPO .....
Je veux une macro qui trie cette colonne et le tableau qui va avec par ordre
alphabétique (ca, je sais à peu près) et qui, à chaque changement de
première lettre mette en gras (par exemple) la bordure inférieure de la
ligne (Afin d'ajouter une meilleure lisibilité du tableau)

2 réponses

Avatar
Philippe.R
Bonsoir Gil,
Cette procédure, dans un module ordinaire, devrait le faire :

Sub MarquAZ()
'MPFE le 13/10/2003 par Philippe Raulet
'
Dim lg As Long
'
Columns("A:C").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For lg = 20 To 2 Step -1
Cells(lg, 1).Select
If Left(Cells(lg - 1, 1).Value, 1) <> Left(Cells(lg, 1).Value, 1) Then
With Cells(lg, 1).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Else
Cells(lg, 1).Borders(xlEdgeTop).LineStyle = xlNone
End If
Next lg
End Sub
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"gil" a écrit dans le message de news:bmevsa$d3d$
Bonjour
J'aimerais une aide pour résoudre ce problème :
Soit, dans un tableau, une colonne par exemple : EXO DER ZET SDZ FCV DET ZAM
MPO .....
Je veux une macro qui trie cette colonne et le tableau qui va avec par ordre
alphabétique (ca, je sais à peu près) et qui, à chaque changement de
première lettre mette en gras (par exemple) la bordure inférieure de la
ligne (Afin d'ajouter une meilleure lisibilité du tableau)





Avatar
Jean-François Aubert
Salut gil,

Une 2 ème soluce:

- indifférent aux majuscules / minuscules
- les donées en A2:Ax

Sub yy()
Range("A2:A" & Range("A65536").End(xlUp).Row).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Range("A1").Select
Set rng = Range("A1:A" & Range("A65536").End(xlUp).Row)

For i = 65 To 90
x = Chr(i)
On Error Resume Next
Set y = rng.Find(What:=x, After:¬tiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
:úlse)

z = y.Address

If Not y Is Nothing Then
With Range(z).Borders(xlEdgeBottom)
If Left(Range(z), 1) = Chr(i) Or Left(Range(z), 1) = Chr(i + 32) Then
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End If
End With
End If
Next
Set rng = Nothing: Set y = Nothing
End Sub

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"gil" a écrit dans le message de news:bmevsa$d3d$
Bonjour
J'aimerais une aide pour résoudre ce problème :
Soit, dans un tableau, une colonne par exemple : EXO DER ZET SDZ FCV DET ZAM
MPO .....
Je veux une macro qui trie cette colonne et le tableau qui va avec par ordre
alphabétique (ca, je sais à peu près) et qui, à chaque changement de
première lettre mette en gras (par exemple) la bordure inférieure de la
ligne (Afin d'ajouter une meilleure lisibilité du tableau)