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
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+
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
<jean.pinna@cote-azur.cci.fr> a écrit dans le message de news:
1166197728.953115.140670@t46g2000cwa.googlegroups.com...
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
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+
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
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
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
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+
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
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+
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+
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