Tri approximatif

Bonjour,

Sous Excel 2010.

J'aimerais pouvoir trier mes données suivant ce format :

Ce que j'ai après Tri :

3 RUE ALEXANDRE FLEMING

RUE DR ALBERT SCHWEITZER

RUE DR ALBERT SCHWEITZER

RUE DR ALBERT SCHWEITZER

12 RUE JEAN LEBAS

13 RUE JEAN LEBAS

22 RUE JEAN LEBAS

5 RUE ALEXANDRE FLEMING

15 RUE ALEXANDRE FLEMING

18 RUE DE VESOUL

18 RUE DE VESOUL

3 RUE JEAN LEBAS

1 RUE DR ALBERT SCHWEITZER

Ici on se rends compte que le Tri prends la valeur du numéro de rue et j'aimerais que le Tri soit en priorité basé sur le Nom de la rue.

Ce que j'aimerais avoir :

3 RUE ALEXANDRE FLEMING

5 RUE ALEXANDRE FLEMING

15 RUE ALEXANDRE FLEMING

RUE DR ALBERT SCHWEITZER

RUE DR ALBERT SCHWEITZER

RUE DR ALBERT SCHWEITZER

1 RUE DR ALBERT SCHWEITZER

3 RUE JEAN LEBAS

12 RUE JEAN LEBAS

13 RUE JEAN LEBAS

22 RUE JEAN LEBAS

18 RUE DE VESOUL

18 RUE DE VESOUL

S'il existe une procédure simple pour m'éviter de passer par une analyse de la chaine de caractères et en extraire le numéro pour réaliser le Tri.

Merci par avance pour une aide.

Cordialement,

bonjour

essai de faisabilité

8thierry.xlsx (11.72 Ko)

cordialement

Bonjour,

Merci pour l'exemple. (Formule qui pourra me servir en autre temps

Le fait de prendre 'Rue' est une bonne idée.

En VBA nous faisons cela comment ?

Je suis en train de le réaliser mais je suis confronté à un souci qui est :

Lorsque que j'ai un numéro de rue comme '6 A' il inscrit dans la cellule '6:00 AM' alors que '62 A' est correct.

Il faut savoir que dans la nomination de Rue nous pouvons avoir 'Impasse' ou 'Allée' au lieu de 'Rue'.

Merci tulipe

re

pas simple ,Exel n'est pas devin ; MAIS en confectionnant une petite liste avec (rue ,allée de; allée des........boulevard ;....avenue ...) bref les utilisations usuelles

il doit etre possible de determiner le point de depart meme en VBA (qui m'est étranger )

cordialement

Bonjour,

Voilà le code qui fonctionne mais que je trouve lourd et il me manque encore une condition si le num rue est Bis au lieu de B et Ter au lieu de T.

Je cherche l'instruction pour supprimer la chaine de caractère 'Bis" et "Ter" dans une chaine.

Si je ne me trompe pas Replace et Mid sont pour un seul caractère.

merci

Sub Macro2()
'
' Macro2 Macro
' variables pour s?paration num de la rue
Dim FL1 As Worksheet, Cell As Range, Plage As Range
Dim Var1, Var2, Var3, Adresse, Cible, EtatBac As String

Dim i As Integer
'
' Touche de raccourci du clavier: Ctrl+k
' Importation : le classeur export.xls doit ?tre ouvert
Call importation

    ' Num?ro de ligne import
    i = 2
    ' Comdamne 
    Cible = "COMDAMNE"

    Set FL1 = Worksheets("Feuil1")
    With FL1
        'D?termination de la plage de cellules ? lire
        Set Plage = .Range("E2:E500")
        ' Insert colonne Num?ro Rue pour modification de chaine caract?res Adresse
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Selection.ColumnWidth = 6.3
        For Each Cell In Plage

            'Valeur de la cellule lue
            Adresse = Cell.Value
            Var1 = Cell.Value
            Var1 = Mid(Var1, 1, 2)
            Var2 = Cell.Value
            Var2 = Mid(Var2, 1, 3)
            Var3 = Cell.Value
            Var3 = Mid(Var3, 1, 4)
            EtatBac = Cell.Value
            EtatBac = Range("H" & i)

            ' traitement valeur normale ex: 1 ou 22 rue toto
            If Val(Var1) <> 0 Then
                Range("E" & i) = Var1
                Adresse = Replace(Adresse, Var1, "")
                Adresse = LTrim(Adresse)
                Range("F" & i) = Adresse

            End If
            ' traitement valeur erreur saisie num rue ex: 3 5 rue
            If Mid(Var3, 4, 1) = " " And Val(Var1) <> 0 Then
                Var2 = Replace(Var2, " ", "")
                Range("E" & i) = Var2
                Adresse = Replace(Adresse, Mid(Adresse, 1, 1), "")
                Adresse = LTrim(Adresse)
                Range("F" & i) = Adresse
            End If

            ' traitement num rue bis, A, T ex : 2 A rue
            If (Mid(Var2, 3, 1) = "A") And Mid(Var2, 4, 1) = " " Then
                Var2 = Replace(Var2, " ", "")
                If Mid(Var2, 4, 1) = "A" Then
                    Adresse = Replace(Adresse, "A ", "")
                End If
                If Mid(Var2, 4, 1) = "B" Then
                    Adresse = Replace(Adresse, "B ", "")
                End If
                If Mid(Var2, 4, 1) = "T" Then
                    Adresse = Replace(Adresse, "T ", "")
                End If

                Adresse = LTrim(Adresse)
                Range("F" & i) = Adresse
                Range("E" & i) = Var2

            End If

            ' traitement valeur ex: 62 A rue
            If (Mid(Var3, 4, 1) = "A") Or (Mid(Var3, 4, 1) = "B") Or (Mid(Var3, 4, 1) = "T") Then
                If Mid(Var3, 4, 1) = "A" Then
                    Adresse = Replace(Adresse, "A ", "")
                End If
                If Mid(Var3, 4, 1) = "B" Then
                    Adresse = Replace(Adresse, "B ", "")
                End If
                If Mid(Var3, 4, 1) = "T" Then
                    Adresse = Replace(Adresse, "T ", "")
                End If

                Adresse = LTrim(Adresse)
                Range("F" & i) = Adresse
                Range("E" & i) = Var3

            End If
            If Right(EtatBac, 8) = Cible And Adresse <> "" Then
                Rows(i).Select
                Selection.Font.Bold = True
            End If

            i = i + 1
        Next
    End With

    Call TriBacs
    ' Pr?paration de l'impression
    Call Imprimer

    Set FL1 = Nothing
    Set Plage = Nothing

End Sub
Rechercher des sujets similaires à "tri approximatif"