Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Forcer la fonction nompropre en excluant les articles (de, le, les, etc)

5 réponses
Avatar
jean.pinna
Bonjour =E0 tous, j'ai un probl=E8me qui me para=EEt un peu complexe =E0
r=E9soudre et je recherche une solution en VBA :

j'ai une colonne A avec des adresses de ce type :
3 RUE DE LA POISSONNERIE

J'applique dessus une formule type NomPropre() : r=E9sultat en colonne B
3 Rue De La Poissonnerie

En fait je veux obtenir :
3 Rue de la Poissonerie =20


Merci =E0 tous de votre aide.

A+

5 réponses

Avatar
Francois L
Bonjour à tous, j'ai un problème qui me paraît un peu complexe à
résoudre et je recherche une solution en VBA :

Bonsoir,


Pas peur de publier une adresse professionnelle en clair sur un forum !
J'espère qu'il est costaud l'antispam de la CCI.

--
François L

Avatar
Daniel
Bonsoir.
Essaie cette macro pour des noms en colonne A :

Sub test1()
Dim Tablo, c As Range, Plage As Range
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
Tablo = Split(LCase(c))
For i = 0 To UBound(Tablo)
Select Case Tablo(i)
Case "de", "du", "le", "la", "des", "au", "des", "les",
"aux", "bis", "ter", "à"
Case Else
If Left(Tablo(i), 2) = "l'" Then
Mid(Tablo(i), 3, 1) = UCase(Mid(Tablo(i), 3, 1))
Else
Tablo(i) = WorksheetFunction.Proper(Tablo(i))
End If
End Select
Next i
c = Join(Tablo)
Next c
End Sub

Cordialement.
Daniel
a écrit dans le message de news:

Bonjour à tous, j'ai un problème qui me paraît un peu complexe à
résoudre et je recherche une solution en VBA :

j'ai une colonne A avec des adresses de ce type :
3 RUE DE LA POISSONNERIE

J'applique dessus une formule type NomPropre() : résultat en colonne B
3 Rue De La Poissonnerie

En fait je veux obtenir :
3 Rue de la Poissonerie


Merci à tous de votre aide.

A+
Avatar
AV
Une macro après sélection de la plage :

Sub zzz()
For Each c In Selection
z = Split(Application.Proper(c), " ")
For i = 0 To UBound(z)
tablo = Array("de", "du", "des", "le", "la", "les", "au", "aux", "bis",
"ter", "à", "en")
If IsNumeric(Application.Match(z(i), tablo, 0)) Then chaine = chaine & " "
& LCase(z(i)) _
Else chaine = chaine & " " & z(i)
Next i
c.Value = Trim(chaine): chaine = ""
Next
End Sub

Une fonction perso à mettre dans un module ordinaire :

Function PROPER_SPE(cellule As Range)
z = Split(Application.Proper(cellule), " ")
For i = 0 To UBound(z)
tablo = Array("de", "du", "des", "le", "la", "les", "au", "aux", "bis",
"ter", "à", "en")
If IsNumeric(Application.Match(z(i), tablo, 0)) Then chaine = chaine & " "
& LCase(z(i)) _
Else chaine = chaine & " " & z(i)
Next i
PROPER_SPE = Trim(chaine)
End Function

Libre à toi d'agrémenter le "tablo" des termes souhaités/manquants

Utilisation dans une feuille : =PROPER_SPE(A1)

AV
Avatar
JB
Bonsoir,

http://cjoint.com/?mqvqC5VUcF

Function NomPropre2(nom As String)
temp = Application.Proper(nom)
tbl = Array("De ", "Du ", "Des ", "Le ", "La ", "À ", "En ", "Au ",
"Bis ", "Ter ")
For i = 0 To UBound(tbl)
temp = Replace(temp, tbl(i), LCase(tbl(i)))
Next i
NomPropre2 = temp
End Function

Convertit le champ sélectionné:

Sub ConvertitSelection()
tbl = Array("De ", "Du ", "Des ", "Le ", "La ", "À ", "En ", "Au ",
"Bis ", "Ter ")
For Each c In Selection
temp = Application.Proper(c.Value)
For i = 0 To UBound(tbl)
temp = Replace(temp, tbl(i), LCase(tbl(i)))
Next i
c.Value = temp
Next c
End Sub

JB

Bonjour à tous, j'ai un problème qui me paraît un peu complexe à
résoudre et je recherche une solution en VBA :

j'ai une colonne A avec des adresses de ce type :
3 RUE DE LA POISSONNERIE

J'applique dessus une formule type NomPropre() : résultat en colonne B
3 Rue De La Poissonnerie

En fait je veux obtenir :
3 Rue de la Poissonerie


Merci à tous de votre aide.

A+


Avatar
JB
Barre utilitaire pour convertir les noms propres et noms de rue.

http://cjoint.com/?mrijXrPjq1

JB

Bonjour à tous, j'ai un problème qui me paraît un peu complexe à
résoudre et je recherche une solution en VBA :

j'ai une colonne A avec des adresses de ce type :
3 RUE DE LA POISSONNERIE

J'applique dessus une formule type NomPropre() : résultat en colonne B
3 Rue De La Poissonnerie

En fait je veux obtenir :
3 Rue de la Poissonerie


Merci à tous de votre aide.

A+