TRI (bizarrerie)

Bonjour au forum,

Sur ce fichier, j'essaye de trier un tableau nommé "base",

mais les formats bordures et couleur ne suivent pas, est-ce normal ?

je n'ai jamais fait attention à ce phénomène !

Auriez-vous une explication ?

Fichier:

https://www.excel-pratique.com/~files/doc2/Question_Tri.xls

Bonne journée

Claude.

bonjour Claude

je viens de faire un ou deux tests, je pensais effectivement que le tri ne déplaçait pas les formats mais ce n'est pas tout a fait vrai. il y a moyen de classer par couleur de cellule. par contre, rien ne fait bouger les bords.

je vois 3 solutions possibles à ton problème

1: faire ta mise en forme a partir de format conditionnels (ca va etre sport)

2: utiliser les mises en formes de tableau automatique

3: déplacer les lignes à la main

en fait, j'en vois une 4eme

réécrire une fonction de tri qui déplacera les formats aussi

désolé de ne pas pouvoir en faire plus.

bonne journée

Bonjour Claude,

Je n'ai pas d'explication a ta bizarrerie, mais je crois comprendre que tu fais collection de billets de banque..., moi aussi, moins importante que la tienne, et je me limite au pays dans lequel j'ai travaillé, en regardant vite fait ta liste, j'ai vu que tu n'avais rien du Nigeria, ni d'Angola, ni d'Iran, Nigeria c'est le Naira (NGN), et Angola le Kwanza, les billets ne sont pas neuf, quoique pour le Nigeria je peux peut être t'en trouver des pas trop usages (j'y suis actuellement), pour l'Angola ils sont usages, et ici l'adage "l'argent n'a pas d'odeur" est faux......, pour l'Iran j'en ai des vieux avec la photo de kohmeiny, et des plus récents, je vais voir ce que j'ai en double.

Tiens moi informé, si tu es intéressé par ces billets.

Cordialement

Pierre

re,

PierreL, je te remercie pour ta proposition, ce fichier n'est pas pour moi mais pour un autre

forumeur, "AdrienHeiser" si tu veux le contacter.

édit: on commence un projet de base de données, si tu as quelque chose ou idée, elle sera

bienvenue.

fred,

en fait, j'en vois une 4eme

réécrire une fonction de tri qui déplacera les formats aussi

peux-tu développer ? , çà m'intéresse

Sinon, je supprime les bordures et lignes de séparation (inutiles à mon sens dans une BD)

Merci à vous deux

Amicalement

Claude.

bien entendu !

il y a plusieurs algorithmes de tri possibles (http://fr.wikipedia.org/wiki/M%C3%A9thode_de_tri)

exemple le tri shell (je copie-colle)

'TRI DE SHELL:
Sub Tri_Shell_Metzner(ByVal Nb_Element As Long, Tableau() As Variant, ByVal Sens As Boolean)
' le paramètre Nb_Element correspond au nombre d'éléments du tableau, sa valeur n'est donc pas modifiée
' le paramètre Tableau() est le tableau à trier, il est modifié puis retourné
' le paramètre Sens est vrai pour un tri croissant
Dim Ecart As Long
' Ecart représente la division du tableau
Dim I As Long
Dim J As Long
' I et J sont des variables intermédiaires utilisées pour les compteurs de boucles
Dim Permut As Boolean
' Permut est un flag contrôlant que l'élément à classer a été permuté
Dim Ligne_Tampon As Variant
' Ligne_Tampon est une variable intermédiaire utilisée pour la permutation d'éléments
' On définit l'écart d'origine
Ecart = Nb_Element \ 2
Do While Ecart <> 0
For I = 1 To Nb_Element - Ecart
J = I
Permut = True
Do While J > 0 And Permut
Permut = False
If (Tableau(J) > Tableau(J + Ecart) And Sens) Or (Tableau(J) < Tableau(J + Ecart) And Not Sens) Then
Ligne_Tampon = Tableau(J)
Tableau(J) = Tableau(J + Ecart)
Tableau(J + Ecart) = Ligne_Tampon
Permut = True
J = J - Ecart
End If
Loop
Next I
' On redivise
Ecart = Ecart \ 2
Loop
End Sub

maintenant, il faut adapter ce tri pour qu'en plus des valeurs, il reprenne la ligne complete du tableau ET le format des cellules.

je regarde ça ce midi !

bien à toi

j'ai un petit problème

je n'arrive pas a retrouver la zone sélectionnée dans une feuille pour en prendre toute les cellules...

re,

écoute Fred,

laisse tomber, çà me parait trop complexe et l'enjeu n'en vaut pas la chandelle.

Je vais supprimer les bordures

mais si des fois çà te revenait, pour l'info.

merci, j'étais persuadé que les format suivaient les cellules, comme quoi ...

je laisse un peu le fil ouvert au cas ou.

Bonne journée

Claude.

Bonjour à tous,

Finalement après tri, on efface les bordures et on les retrace aux bons endroits.

Sub Cadre()
Dim Lg As Long
Dim X, Y
Dim i As Integer
    Application.ScreenUpdating = False
    Sheets(1).Copy After:=Sheets(Sheets.Count) 'copie feuille
    '***** tri ****
    Range("base").Sort Key1:=Range("d6"), Order1:=xlAscending, Key2:=Range("c6") _
        , Order2:=xlAscending, Header:=xlYes
    '***** cadre bordure ****
    Lg = Range("d65536").End(xlUp).Row
    Range("e7:n" & Lg).Borders.LineStyle = xlNone 'efface
        For i = 7 To Lg
                X = Range("e" & i).Address
            Do While Range("d" & i) = Range("d" & i).Offset(1, 0)
                i = i + 1
            Loop
                Y = Range("n" & i - 1).Address
            Range(X, Y).BorderAround (xlDouble) 'bordure cadre
        Next i
End Sub

fichier:

https://www.excel-pratique.com/~files/doc2/Tri.zip

Bonne journée

Claude.

Bonjour,

Hier soir, j'ai failli répondre à ce fil en disant quelque chose du genre :

"Faire simple, c'est ce qu'il y a de plus compliqué... et vice versa. Tiens, j'ai déjà vu ça quelque part...

Et si tu effaçais toutes les bordures pour les remettre au bon endroit ?

Et puis j'ai bien regardé ton fichier, et je me suis dit : comment repérer le bon endroit, ça doit pas être si facile que ça, finalement".

Alors je me suis ravisée... mais tout compte fait, j'avais pas tout à fait tort...

Amicalement,

Bonjour,

Juste pour le fun..

D'après un code adapté de JBoisgontier

https://www.excel-pratique.com/~files/doc2/Question_Tri_v1.zip

Bonsoir à tous,

cousinhub, Voila un code qu'il est bon !

Je le mets soigneusement dans mes tablettes.

J'en ai profité pour le compléter en fusionnant le Pays (colonne "E" comme à l'origine)

Fichier:

https://www.excel-pratique.com/~files/doc2/Question_Tri3.zip

vois si anomalies, merci bien.

Je retire un temps le résolu pour en faire profiter les autres forumeurs.

Amicalement

Claude.

édit: le fait d'employer 2 fois la variable "I" n'est t-il pas gênant ?

Bonsoir au forum,

Merci à tous, j'ai encore appris sur ce fil

Amicalement

Claude.

Bonsoir,

ou Re-,

Zut, j'avais oublié de répondre

mais devant le gain insignifiant, je n'avais pas pensé posté....

Perso, j'avais travaillé sur les cellules pleines, puis sur le nombre de ces cellules pleines...

Et Re-,

pour la fusion des cellules (en respectant bien ton fichier)

ce petit code :

Dim Ar As Range
For Each Ar In Range("D7:E" & [D65000].End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Areas
    Ar.Offset(-1, 0).Resize(Ar.Rows.Count, 1).Merge
Next Ar

Un peu plus beau, mais en gain de temps....(pas fait l'essai) mais je ne pense pas des secondes....voire des centièmes

Juste pour le code....

Bonjour cousinhub,

C'est noté, en effet c'est + élégant

Merci et à+....Claude.

Rechercher des sujets similaires à "tri bizarrerie"