Bonjour à tous,
je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour
Access 97.
J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les
réécrire à la main...
Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin-Lamotte ou De la
Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ?
Merci pour vos réponses.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raymond [mvp]
Bonjour.
La fonction nompropre est une fonction spécifique Excel et n'existe pas sous access. soit tu passes par la fonction excel par automation soit tu utilises une fonction que j'ai placé sur mon site: http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes) cette fonction modifie tous les mots, c'est-à-dire y compris les particules. -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"Florian" a écrit dans le message de news:3fc31fbc$0$17105$
Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour
Access 97. J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les réécrire à la main... Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin-Lamotte ou De la Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ? Merci pour vos réponses.
Bonjour.
La fonction nompropre est une fonction spécifique Excel et n'existe pas sous
access.
soit tu passes par la fonction excel par automation soit tu utilises une
fonction que j'ai placé sur mon site:
http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes)
cette fonction modifie tous les mots, c'est-à-dire y compris les particules.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"Florian" <florian@nospam.fr> a écrit dans le message de
news:3fc31fbc$0$17105$626a54ce@news.free.fr...
Bonjour à tous,
je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel)
pour
Access 97.
J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les
réécrire à la main...
Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela
devient
un vrai casse tête avec les noms composés (ex : Martin-Lamotte ou De la
Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ?
Merci pour vos réponses.
La fonction nompropre est une fonction spécifique Excel et n'existe pas sous access. soit tu passes par la fonction excel par automation soit tu utilises une fonction que j'ai placé sur mon site: http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes) cette fonction modifie tous les mots, c'est-à-dire y compris les particules. -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"Florian" a écrit dans le message de news:3fc31fbc$0$17105$
Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour
Access 97. J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les réécrire à la main... Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin-Lamotte ou De la Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ? Merci pour vos réponses.
Florian
Merci pour ta diligente réponse.
Je ne connais pas cette procédure d'automation (Excel in Access ? c possible ça ?), alors je tente autre chose. J'essaie de reconstituer une fonction proche de la fonction Nompropre d'excel. Les fonctions que tu as écrites vont m'aider mais certains trucs ne fonctionne pas en Access 97 (Replace, Split...). Je posterai ma solution si ça interresse du monde.
à +
"Raymond [mvp]" a écrit dans le message de news:
Bonjour.
La fonction nompropre est une fonction spécifique Excel et n'existe pas sous
access. soit tu passes par la fonction excel par automation soit tu utilises une fonction que j'ai placé sur mon site: http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes) cette fonction modifie tous les mots, c'est-à-dire y compris les particules.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"Florian" a écrit dans le message de news:3fc31fbc$0$17105$
Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour Access 97...
Merci pour ta diligente réponse.
Je ne connais pas cette procédure d'automation (Excel in Access ? c possible
ça ?), alors je tente autre chose.
J'essaie de reconstituer une fonction proche de la fonction Nompropre
d'excel.
Les fonctions que tu as écrites vont m'aider mais certains trucs ne
fonctionne pas en Access 97 (Replace, Split...).
Je posterai ma solution si ça interresse du monde.
à +
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message de
news:OXtF0lzsDHA.2388@TK2MSFTNGP12.phx.gbl...
Bonjour.
La fonction nompropre est une fonction spécifique Excel et n'existe pas
sous
access.
soit tu passes par la fonction excel par automation soit tu utilises une
fonction que j'ai placé sur mon site:
http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes)
cette fonction modifie tous les mots, c'est-à-dire y compris les
particules.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"Florian" <florian@nospam.fr> a écrit dans le message de
news:3fc31fbc$0$17105$626a54ce@news.free.fr...
Bonjour à tous,
je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel)
pour Access 97...
Je ne connais pas cette procédure d'automation (Excel in Access ? c possible ça ?), alors je tente autre chose. J'essaie de reconstituer une fonction proche de la fonction Nompropre d'excel. Les fonctions que tu as écrites vont m'aider mais certains trucs ne fonctionne pas en Access 97 (Replace, Split...). Je posterai ma solution si ça interresse du monde.
à +
"Raymond [mvp]" a écrit dans le message de news:
Bonjour.
La fonction nompropre est une fonction spécifique Excel et n'existe pas sous
access. soit tu passes par la fonction excel par automation soit tu utilises une fonction que j'ai placé sur mon site: http://access.seneque.free.fr/mot_majuscule.htm ( et pages précédentes) cette fonction modifie tous les mots, c'est-à-dire y compris les particules.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"Florian" a écrit dans le message de news:3fc31fbc$0$17105$
Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour Access 97...
3stone
Salut,
"Florian"
Les fonctions que tu as écrites vont m'aider mais certains trucs ne fonctionne pas en Access 97 (Replace, Split...). Je posterai ma solution si ça interresse du monde.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Salut,
"Florian"
Les fonctions que tu as écrites vont m'aider mais certains trucs ne
fonctionne pas en Access 97 (Replace, Split...).
Je posterai ma solution si ça interresse du monde.
--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Les fonctions que tu as écrites vont m'aider mais certains trucs ne fonctionne pas en Access 97 (Replace, Split...). Je posterai ma solution si ça interresse du monde.
-- A+ Pierre (3stone) Access MVP -------------------------------------- Une pour tous, tous pour une ;-) http://users.skynet.be/mpfa/charte.htm --------------------------------------
Florian
Merci 3stone, j'avais oeuvré dans cette direction. Merci Raymond, ta réponse à orienté mes recherches. En voici le résultat (que tout le monde en profite...). C'est bourrin mais ça à l'air de fonctionner. Notez que les particules ne doivent pas être mises en majuscules. J'espère ne rien avoir oublié car je ne vais pas contrôler mes 5000 lignes...
Sub test() 'pour tester la fonction MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du château d'albertas "), vbOKOnly, "Test du bidule" End Sub
************************************* Function NomPropre(letexte As String) As String Dim posit As Variant Dim debutrecherche As Integer 'note : les particules restent en minuscule (ça reste une histoire de ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et après le texte letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre If Left(letexte, 3) <> "de " Or Left(letexte, 3) <> "du " Or Left(letexte, 2) <> "d'" Or Left(letexte, 4) <> "des " Then letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) - 1)) End If
'Traitement des espaces debutrecherche = 1 posit = InStr(debutrecherche, letexte, " ", 1) 's'il existe un espace : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " And _ Mid(letexte, posit + 1, 3) <> "de " And _ Mid(letexte, posit + 1, 3) <> "la " And _ Mid(letexte, posit + 1, 3) <> "du " And _ Mid(letexte, posit + 1, 2) <> "d'" And _ Mid(letexte, posit + 1, 4) <> "des " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, " ", 1) Wend '**************************************************** 'Traitement des tirets debutrecherche = 1 posit = InStr(debutrecherche, letexte, "-", 1) 'il existe un tiret donc un nom composé : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** 'Traitement des "d'" debutrecherche = 1 posit = InStr(debutrecherche, letexte, "d'", 2) 'il existe un "d'" : While posit > 1 If Mid(letexte, posit + 2, 1) <> " " Then letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2, 1)) & Right(letexte, Len(letexte) - (posit + 2)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** NomPropre = letexte End Function
Merci 3stone, j'avais oeuvré dans cette direction.
Merci Raymond, ta réponse à orienté mes recherches.
En voici le résultat (que tout le monde en profite...).
C'est bourrin mais ça à l'air de fonctionner. Notez que les particules ne
doivent pas être mises en majuscules.
J'espère ne rien avoir oublié car je ne vais pas contrôler mes 5000
lignes...
Sub test()
'pour tester la fonction
MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du
château d'albertas "), vbOKOnly, "Test du bidule"
End Sub
*************************************
Function NomPropre(letexte As String) As String
Dim posit As Variant
Dim debutrecherche As Integer
'note : les particules restent en minuscule (ça reste une histoire de ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et après le
texte
letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre
If Left(letexte, 3) <> "de " Or Left(letexte, 3) <> "du " Or Left(letexte,
2) <> "d'" Or Left(letexte, 4) <> "des " Then
letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) -
1))
End If
'Traitement des espaces
debutrecherche = 1
posit = InStr(debutrecherche, letexte, " ", 1)
's'il existe un espace :
While posit > 1
If Mid(letexte, posit + 1, 1) <> " " And _
Mid(letexte, posit + 1, 3) <> "de " And _
Mid(letexte, posit + 1, 3) <> "la " And _
Mid(letexte, posit + 1, 3) <> "du " And _
Mid(letexte, posit + 1, 2) <> "d'" And _
Mid(letexte, posit + 1, 4) <> "des " Then
letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1,
1)) & Right(letexte, Len(letexte) - (posit + 1))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, " ", 1)
Wend
'****************************************************
'Traitement des tirets
debutrecherche = 1
posit = InStr(debutrecherche, letexte, "-", 1)
'il existe un tiret donc un nom composé :
While posit > 1
If Mid(letexte, posit + 1, 1) <> " " Then
letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1))
& Right(letexte, Len(letexte) - (posit + 1))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, "-", 1)
Wend
'****************************************************
'Traitement des "d'"
debutrecherche = 1
posit = InStr(debutrecherche, letexte, "d'", 2)
'il existe un "d'" :
While posit > 1
If Mid(letexte, posit + 2, 1) <> " " Then
letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2,
1)) & Right(letexte, Len(letexte) - (posit + 2))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, "-", 1)
Wend
'****************************************************
NomPropre = letexte
End Function
Merci 3stone, j'avais oeuvré dans cette direction. Merci Raymond, ta réponse à orienté mes recherches. En voici le résultat (que tout le monde en profite...). C'est bourrin mais ça à l'air de fonctionner. Notez que les particules ne doivent pas être mises en majuscules. J'espère ne rien avoir oublié car je ne vais pas contrôler mes 5000 lignes...
Sub test() 'pour tester la fonction MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du château d'albertas "), vbOKOnly, "Test du bidule" End Sub
************************************* Function NomPropre(letexte As String) As String Dim posit As Variant Dim debutrecherche As Integer 'note : les particules restent en minuscule (ça reste une histoire de ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et après le texte letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre If Left(letexte, 3) <> "de " Or Left(letexte, 3) <> "du " Or Left(letexte, 2) <> "d'" Or Left(letexte, 4) <> "des " Then letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) - 1)) End If
'Traitement des espaces debutrecherche = 1 posit = InStr(debutrecherche, letexte, " ", 1) 's'il existe un espace : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " And _ Mid(letexte, posit + 1, 3) <> "de " And _ Mid(letexte, posit + 1, 3) <> "la " And _ Mid(letexte, posit + 1, 3) <> "du " And _ Mid(letexte, posit + 1, 2) <> "d'" And _ Mid(letexte, posit + 1, 4) <> "des " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, " ", 1) Wend '**************************************************** 'Traitement des tirets debutrecherche = 1 posit = InStr(debutrecherche, letexte, "-", 1) 'il existe un tiret donc un nom composé : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** 'Traitement des "d'" debutrecherche = 1 posit = InStr(debutrecherche, letexte, "d'", 2) 'il existe un "d'" : While posit > 1 If Mid(letexte, posit + 2, 1) <> " " Then letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2, 1)) & Right(letexte, Len(letexte) - (posit + 2)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** NomPropre = letexte End Function
deschamp
c'est simple il suffit de convertir tout en minuscule avec lcase et ensuite de les convertir avec strconv ainsi nom=strconv(lcase(nom),vbpropercase)
-----Message d'origine----- Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour
Access 97. J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les
réécrire à la main... Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin- Lamotte ou De la
Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ? Merci pour vos réponses.
.
c'est simple il suffit de convertir tout en minuscule avec
lcase et ensuite de les convertir avec strconv
ainsi nom=strconv(lcase(nom),vbpropercase)
-----Message d'origine-----
Bonjour à tous,
je cherche une fonction équivalente à la
fonction "Nompropre" (d'Excel) pour
Access 97.
J'ai plus de 5 000 noms écrits tout en majuscule et je ne
me vois pas les
réécrire à la main...
Jouer avec les fonction Ucase et Lcase n'est pas
approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin-
Lamotte ou De la
Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ?
Merci pour vos réponses.
c'est simple il suffit de convertir tout en minuscule avec lcase et ensuite de les convertir avec strconv ainsi nom=strconv(lcase(nom),vbpropercase)
-----Message d'origine----- Bonjour à tous, je cherche une fonction équivalente à la fonction "Nompropre" (d'Excel) pour
Access 97. J'ai plus de 5 000 noms écrits tout en majuscule et je ne me vois pas les
réécrire à la main... Jouer avec les fonction Ucase et Lcase n'est pas approprié car cela devient
un vrai casse tête avec les noms composés (ex : Martin- Lamotte ou De la
Marjelle du Puit du Fond du Jardin).
Quelqu'un a une solution ? Merci pour vos réponses.
.
Raymond [mvp]
Bonjour.
juste une remarque, cette fonction a de grosses lacunes et c'est pour ça qu'on utilise une fonction spécifique qu'on modifie selon ses besoins. strconv donne ceci: Jean-pierre De La Fontaine, ce qui est franchement horrible.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"deschamp" a écrit dans le message de news:0b9901c3b4e1$d1062cf0$
c'est simple il suffit de convertir tout en minuscule avec lcase et ensuite de les convertir avec strconv ainsi nom=strconv(lcase(nom),vbpropercase)
Bonjour.
juste une remarque, cette fonction a de grosses lacunes et c'est pour ça
qu'on utilise une fonction spécifique qu'on modifie selon ses besoins.
strconv donne ceci:
Jean-pierre De La Fontaine, ce qui est franchement horrible.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"deschamp" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:0b9901c3b4e1$d1062cf0$a101280a@phx.gbl...
c'est simple il suffit de convertir tout en minuscule avec
lcase et ensuite de les convertir avec strconv
ainsi nom=strconv(lcase(nom),vbpropercase)
juste une remarque, cette fonction a de grosses lacunes et c'est pour ça qu'on utilise une fonction spécifique qu'on modifie selon ses besoins. strconv donne ceci: Jean-pierre De La Fontaine, ce qui est franchement horrible.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour une meilleure efficacité de tes interventions sur MPFA
"deschamp" a écrit dans le message de news:0b9901c3b4e1$d1062cf0$
c'est simple il suffit de convertir tout en minuscule avec lcase et ensuite de les convertir avec strconv ainsi nom=strconv(lcase(nom),vbpropercase)
lrabiet
Le mardi 25 Novembre 2003 à 13:45 par Florian :
Merci 3stone, j'avais oeuvré dans cette direction. Merci Raymond, ta réponse à orienté mes recherches. En voici le résultat (que tout le monde en profite...). C'est bourrin mais ça à l'air de fonctionner. Notez que les particules ne doivent pas être mises en majuscules. J'espère ne rien avoir oublié car je ne vais pas contrôler mes 5000 lignes...
Sub test() 'pour tester la fonction MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du château d'albertas "), vbOKOnly, "Test du bidule" End Sub
************************************* Function NomPropre(letexte As String) As String Dim posit As Variant Dim debutrecherche As Integer 'note : les particules restent en minuscule (ça reste une histoire de ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et après le texte letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre If Left(letexte, 3) <> "de " Or Left(letexte, 3) <> "du " Or Left(letexte, 2) <> "d'" Or Left(letexte, 4) <> "des " Then letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) - 1)) End If
'Traitement des espaces debutrecherche = 1 posit = InStr(debutrecherche, letexte, " ", 1) 's'il existe un espace : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " And _ Mid(letexte, posit + 1, 3) <> "de " And _ Mid(letexte, posit + 1, 3) <> "la " And _ Mid(letexte, posit + 1, 3) <> "du " And _ Mid(letexte, posit + 1, 2) <> "d'" And _ Mid(letexte, posit + 1, 4) <> "des " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, " ", 1) Wend '**************************************************** 'Traitement des tirets debutrecherche = 1 posit = InStr(debutrecherche, letexte, "-", 1) 'il existe un tiret donc un nom composé : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** 'Traitement des "d'" debutrecherche = 1 posit = InStr(debutrecherche, letexte, "d'", 2) 'il existe un "d'" : While posit > 1 If Mid(letexte, posit + 2, 1) <> " " Then letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2, 1)) & Right(letexte, Len(letexte) - (posit + 2)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** NomPropre = letexte End Function
Bonjour Je suis un peu novice dans Access. Est ce que quelqu'un peux m'expliquer comment intégrer cette fonction dans Access ? Merci !! Lionel
Le mardi 25 Novembre 2003 à 13:45 par Florian :
Merci 3stone, j'avais oeuvré dans cette direction.
Merci Raymond, ta réponse à orienté mes recherches.
En voici le résultat (que tout le monde en profite...).
C'est bourrin mais ça à l'air de fonctionner. Notez que les
particules ne
doivent pas être mises en majuscules.
J'espère ne rien avoir oublié car je ne vais pas contrôler
mes 5000
lignes...
Sub test()
'pour tester la fonction
MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du
château d'albertas "), vbOKOnly, "Test du bidule"
End Sub
*************************************
Function NomPropre(letexte As String) As String
Dim posit As Variant
Dim debutrecherche As Integer
'note : les particules restent en minuscule (ça reste une histoire de
ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et
après le
texte
letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre
If Left(letexte, 3) <> "de " Or Left(letexte, 3) <>
"du " Or Left(letexte,
2) <> "d'" Or Left(letexte, 4) <> "des " Then
letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) -
1))
End If
'Traitement des espaces
debutrecherche = 1
posit = InStr(debutrecherche, letexte, " ", 1)
's'il existe un espace :
While posit > 1
If Mid(letexte, posit + 1, 1) <> " " And _
Mid(letexte, posit + 1, 3) <> "de " And _
Mid(letexte, posit + 1, 3) <> "la " And _
Mid(letexte, posit + 1, 3) <> "du " And _
Mid(letexte, posit + 1, 2) <> "d'" And _
Mid(letexte, posit + 1, 4) <> "des " Then
letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1,
1)) & Right(letexte, Len(letexte) - (posit + 1))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, " ", 1)
Wend
'****************************************************
'Traitement des tirets
debutrecherche = 1
posit = InStr(debutrecherche, letexte, "-", 1)
'il existe un tiret donc un nom composé :
While posit > 1
If Mid(letexte, posit + 1, 1) <> " " Then
letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1))
& Right(letexte, Len(letexte) - (posit + 1))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, "-", 1)
Wend
'****************************************************
'Traitement des "d'"
debutrecherche = 1
posit = InStr(debutrecherche, letexte, "d'", 2)
'il existe un "d'" :
While posit > 1
If Mid(letexte, posit + 2, 1) <> " " Then
letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2,
1)) & Right(letexte, Len(letexte) - (posit + 2))
End If
debutrecherche = posit + 1
posit = InStr(debutrecherche, letexte, "-", 1)
Wend
'****************************************************
NomPropre = letexte
End Function
Bonjour
Je suis un peu novice dans Access. Est ce que quelqu'un peux m'expliquer comment intégrer cette fonction dans Access ?
Merci !!
Lionel
Merci 3stone, j'avais oeuvré dans cette direction. Merci Raymond, ta réponse à orienté mes recherches. En voici le résultat (que tout le monde en profite...). C'est bourrin mais ça à l'air de fonctionner. Notez que les particules ne doivent pas être mises en majuscules. J'espère ne rien avoir oublié car je ne vais pas contrôler mes 5000 lignes...
Sub test() 'pour tester la fonction MsgBox NomPropre("marie-pierre-agathe des jonquilles de la marjelle du château d'albertas "), vbOKOnly, "Test du bidule" End Sub
************************************* Function NomPropre(letexte As String) As String Dim posit As Variant Dim debutrecherche As Integer 'note : les particules restent en minuscule (ça reste une histoire de ule)
If IsNull(letexte) Or IsEmpty(letexte) Then Exit Function
letexte = Trim(letexte) 'élimine les espaces avant et après le texte letexte = LCase(letexte) 'passe tout le texte en minuscule
'Traitement de la première lettre If Left(letexte, 3) <> "de " Or Left(letexte, 3) <> "du " Or Left(letexte, 2) <> "d'" Or Left(letexte, 4) <> "des " Then letexte = UCase(Left(letexte, 1)) & LCase(Right(letexte, Len(letexte) - 1)) End If
'Traitement des espaces debutrecherche = 1 posit = InStr(debutrecherche, letexte, " ", 1) 's'il existe un espace : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " And _ Mid(letexte, posit + 1, 3) <> "de " And _ Mid(letexte, posit + 1, 3) <> "la " And _ Mid(letexte, posit + 1, 3) <> "du " And _ Mid(letexte, posit + 1, 2) <> "d'" And _ Mid(letexte, posit + 1, 4) <> "des " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, " ", 1) Wend '**************************************************** 'Traitement des tirets debutrecherche = 1 posit = InStr(debutrecherche, letexte, "-", 1) 'il existe un tiret donc un nom composé : While posit > 1 If Mid(letexte, posit + 1, 1) <> " " Then letexte = Left(letexte, posit) & UCase(Mid(letexte, posit + 1, 1)) & Right(letexte, Len(letexte) - (posit + 1)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** 'Traitement des "d'" debutrecherche = 1 posit = InStr(debutrecherche, letexte, "d'", 2) 'il existe un "d'" : While posit > 1 If Mid(letexte, posit + 2, 1) <> " " Then letexte = Left(letexte, posit + 1) & UCase(Mid(letexte, posit + 2, 1)) & Right(letexte, Len(letexte) - (posit + 2)) End If debutrecherche = posit + 1 posit = InStr(debutrecherche, letexte, "-", 1) Wend '**************************************************** NomPropre = letexte End Function
Bonjour Je suis un peu novice dans Access. Est ce que quelqu'un peux m'expliquer comment intégrer cette fonction dans Access ? Merci !! Lionel