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,
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