Classement par nombre de caractères

Re bonjour à tous!

Comment pourrais je faire pour classer une colonne par le nombre de caractères contenus dans les cases?

En gros avoir la dénomination la plus longue en haut et la plus courte en bas ...

Merci de votre aide ! 8)

Bonjour,

NBCAR(B1)

à tirer vers le bas

Si c'est pour ton fil précédent

https://www.excel-pratique.com/~files/doc2/charly3.xlsm

Claude.

merci à toi Claude !

ça concerne la 1° colonne en fait maintenant

heu... sachant en fait que je veux limiter les cases à 64 caractères

Ceux de plus seront réduits ou coupés

Ceux plus courts devraient être complétés par des "espaces" pour aller jusqu'a 64...

Mon but est d'avoir des cases de 64 cases partout

Un peu chiant comme gars mais bon...

Quand tout sera fini et reclassé, je te promets la primeur de te montrer à quoi cela servira...

Si tu es motard tu ne devrais pas être déçu... !

En bref :

Je vais faire le tri avec NBCAR et renommer à ma guise les plus long car de façon automatique ça va être un vrai carnage...!

Le seul truc chiant c'est de compléter les cases de - de 64 ...

re,

pareil, on va faire une macro,

Tu dis qu'il s'agit de la colonne A ?

les espaces ajoutés ou les caractères supprimés sont ceux de la fin ?

Combien restent de lignes à traiter ? (environ)

à te relire

Claude.

re,

avec ajout ou suppression caractères à la fin (colonne A)

Sub Caract64()
''Macros par Claude Dubois pour "charly_xiii" Excel-Pratique le 19 sept 09
Dim Lg As Long, Cel As Range
Dim X, Y
    X = Time
    Application.ScreenUpdating = False
    Lg = Range("A65536").End(xlUp).Row
            For Each Cel In Range("a1:a" & Lg)
                If Len(Cel) < 64 Then
                    Do While Len(Cel) < 64
                        Cel = Cel & " "
                    Loop
                End If
                If Len(Cel) < 64 Then
                    Do While Len(Cel) > 64
                        Right(Cel, 1).Delete
                    Loop
                End If
            Next Cel
    Y = Time
    MsgBox ("temps macro = " & Format(Y - X, "hh:mm:ss"))
End Sub

Claude.

Super Claude ! ça marche très bien !!!

Par contre plus long que la 1° macro : (2mn 16s)

Ben quoi...? Faut bien trouver une critique dans tout ça...!

Au fait tu ne m'as pas dis...

Tu es motard toi même ou quelqu'un dans ta famille proche est passionné?

re,

Non, pas de motards dans la famille !

mais explique quand même le pourquoi du comment du truc.

Pour la macro, on aurai pu l'améliorer en supprimant ou ajoutant les caractères d'un seul

coup par ligne (au lieu de boucler caractère par caractère), mais bon ! c'est pas une

opération répétitive j'imagine.

il y avait combien de lignes à traiter ?

Amicalement

Claude.

8.000 lignes après épuration...

répondu en MP pour le pourquoi du comment...

Bonjour,

essaie ce code :

Sub caract64()
Dim Cel As Range
t = Timer
For Each Cel In Range("A1:A" & [A65000].End(xlUp).Row)
    If Len(Cel) > 64 Then
        Cel = Left(Cel, 64)
    ElseIf Len(Cel) < 64 Then
        Cel = Cel & Application.Rept(" ", 64 - Len(Cel))
    End If
Next Cel
MsgBox Timer - t
End Sub

Bonne journée

Bonsoir cousin,

J'étais prêt à poster à peu près le même code,

Sub Caract64()
''Macros par Claude Dubois pour "charly_xiii" Excel-Pratique le 19 sept 09
Dim Lg As Long, Cel As Range
Dim X, Y, R
    X = Time
    Application.ScreenUpdating = False
    Lg = Range("A65536").End(xlUp).Row
            For Each Cel In Range("a1:a" & Lg)
                If Len(Cel) < 64 Then
                    R = 64 - Len(Cel)
                    Cel = Cel & WorksheetFunction.Rept(" ", R)
                End If
                If Len(Cel) > 64 Then
                    Cel = Left(Cel, 64)
                End If
            Next Cel
    Y = Time
    MsgBox ("temps macro = " & Format(Y - X, "hh:mm:ss"))
End Sub

mais je vois que le tien est encore + raccourci

Je note toujours tes codes

Amicalement

Claude.

édit: différence entre Time et Timer ?, c'est ce qui donne le format ?

édit2: Charly, pour notre gouverne peux-tu refaire l'opération avec la nouvelle macro

et nous dire le temps de traitement ?

Le vainqueur est CousinHub avec 8,671875 !

(Véridique c'est ce que ça m'affiche !)

Tu n'es qu'en 2° mon cher Claude avec ... 9 sec !!!

Merci en tout cas tout les deux pour votre aide très précieuse !!!

Rechercher des sujets similaires à "classement nombre caracteres"