Classement intelligent (du moins pour moi pour une meilleur lisibilité)

quezaco

XLDnaute Occasionnel
Bonjour à tous, bonjour au forum,
Je souhaite savoir si quelqu'un aurait une solution à me proposer pour classer et mettre en couleur des données.
Je dispose d'un fichier avec des codes postaux, villes...
Dans un premier temps, je voudrais classer les CP du plus petit au plus grand et ensuite classer les villes des différents CP par ordre alphabétique.
Aprés ou pendant cette manoeuvre, est-il possible que les lignes se colorent à chaque changement de CP?
Si cette macro existe, elle me permettrait de gagner un temps précieux. Pour plus de compréhension, ci-joint un exemple sachant que le nombre de lignes et de colonnes est supérieur à l'exemple.
Merci pour vos suggestions.
 

Pièces jointes

  • exemple espagne.xlsx
    27.3 KB · Affichages: 62
  • exemple espagne.xlsx
    27.3 KB · Affichages: 65
  • exemple espagne.xlsx
    27.3 KB · Affichages: 64

Gorfael

XLDnaute Barbatruc
Re : Classement intelligent (du moins pour moi pour une meilleur lisibilité)

Salut quezaco et le forum
Toujours difficile de paramétrer une plage fluctuante, quand on ne connaît pas le travail.
Je me suis basé sur la colonne A et la ligne 1, estimant qu'une colonne avait toujours un titre et une ligne un CP. Ça nous donne à peu près ça :
Code:
Sub Macro1()
Dim Cel As Range, Plage As Range, Coul As Long, x
Set Plage = Range([A2], Cells(Cells(Rows.Count, "A").End(xlUp).Row, _
                    Cells(1, Columns.Count).End(xlToLeft).Column))

Plage.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
    , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False _
    , Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
    xlSortNormal
Plage.Interior.ColorIndex = xlNone
For Each Cel In Plage.Columns(1).Cells
    If Cel <> Cel.Offset(-1, 0) Then
        If Cel.Offset(-1, 0).Interior.ColorIndex = xlNone Then
            Coul = 36
        Else
            Coul = xlNone
        End If
    Else
        Coul = Cel.Interior.ColorIndex
    End If
    Range(Cel, Cells(Cel.Row, Plage.Columns.Count)).Interior.ColorIndex = Coul
Next Cel
End Sub
A+
 

quezaco

XLDnaute Occasionnel
Re : Classement intelligent (du moins pour moi pour une meilleur lisibilité)

Bonjour Gorfael,
Merci pour votre rapidité et pour cette macro qui exécute le travail demandé. Seul petit problème au niveau du remplissage couleur, la couleur ne s'applique que dans la ligne du premier changement de code et non dans les suivantes du même code. Pouvez-vous s'il vous plait faire une modification ?
Encore une fois merci de nous faire partager vos connaissances.
 

quezaco

XLDnaute Occasionnel
Re : Classement intelligent (du moins pour moi pour une meilleur lisibilité)

Bonjour à tous, bonjour au forum,
Suite à l'excelente macro effectuée par Gorfael, je souhaiterai savoir si au niveau du remplissage couleur, la couleur pouvait s'appliquer aux lignes suivantes ayant le même code et non juste à la première. Si cette fonction pouvait se faire, elle me permettrait d'y voir beaucoup plus clair. Le résultat à obtenir se trouve en Feuil2 du fichier exemple.
Merci pour votre aide.
 

Gorfael

XLDnaute Barbatruc
Re : Classement intelligent (du moins pour moi pour une meilleur lisibilité)

Salut quezaco et le forum
??? Ma macro est censé le faire ? En tenant compte évidemment que 2007 ait un fonctionnement similaire à 2003.
Vérifie que les colonnes A et B soient bien classées.
A+
 

quezaco

XLDnaute Occasionnel
Re : Classement intelligent (du moins pour moi pour une meilleur lisibilité)

Bonjour Gorfael,
Merci pour votre réponse rapide.
Je suis désolé d'insister mais, sous 2007, la macro fonctionne trés bien (classement des CP, des villes par CP) mais pour la couleur, le changement s'effectue seulement sur la première ligne du CP suivant différent alors que les autres CP identiques restent blancs.
C'est peut-être pas trés clair, et je vous invite, si vous le souhaitez, à regarder le résultat à obtenir en Feuil2 du classeur exemple.
Encore merci pour vos solutions.
 

Statistiques des forums

Discussions
312 330
Messages
2 087 342
Membres
103 524
dernier inscrit
Smile1813