Salut bouchito,
Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
TOUT le texte en majuscule...
--
Céd / Lausanne
"" a écrit :
> utlise à la sortie de ton champ
>
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> sinon autre solution:
> au niveau du keypress, tu peux renvoyer le caractère majuscule de la
> lettre tapée au lieu de celle-ci.
>
>
Salut bouchito,
Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
TOUT le texte en majuscule...
--
Céd / Lausanne
"bouchito@free.fr" a écrit :
> utlise à la sortie de ton champ
>
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> sinon autre solution:
> au niveau du keypress, tu peux renvoyer le caractère majuscule de la
> lettre tapée au lieu de celle-ci.
>
>
Salut bouchito,
Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
TOUT le texte en majuscule...
--
Céd / Lausanne
"" a écrit :
> utlise à la sortie de ton champ
>
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> sinon autre solution:
> au niveau du keypress, tu peux renvoyer le caractère majuscule de la
> lettre tapée au lieu de celle-ci.
>
>
Bonjour Congelator,
Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
fermante dans la première moitié.
Au lieu de se lire comme ceci:
TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
Le code de bouchito devrait se lire comme suit:
TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
Si tu veux seulement mettre le premier caractère en majuscule, la procédure
suivante devrait suffire:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
End With
End Sub
Si tu veux traiter correctement la casse de tous les caractères dans un
prénom ou un nom, je te suggère le code suivant:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = CorrigerNom(.Text)
End With
End Sub
'---------------------------------------------------------------------------
' FUNCTION CorrigerNom
' Description:
' Corriger un prénom ou un nom pour que les majuscules soient au bon
' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
' Paramètres:
' strNom Nom à corriger
' Return:
' Un string contenant le nom corrigé
'---------------------------------------------------------------------------
Public Function CorrigerNom(ByVal strNom As String) As String
Dim strNouveauNom As String
Dim intLongueurNom As Integer
Dim intCaractère As Integer, strCaractère As String, blnCaractèreSpécial
As Boolean
Dim intPositionPairePrécédente As Integer, strPairePrécédente As String
On Error GoTo Erreur
strNom = Trim(strNom)
strNouveauNom = ""
CorrigerNom = strNom
' Supprimer un double espace.
Do
If InStr(strNom, " ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " ", 2)
End If
Loop
' Supprimer un double tiret.
Do
If InStr(strNom, "--") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "--", 2)
End If
Loop
' Supprimer un espace qui précède un tiret.
Do
If InStr(strNom, " -") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " -", 1)
End If
Loop
' Supprimer un espace qui suit un tiret.
Do
If InStr(strNom, "- ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "- ", 2)
End If
Loop
' Supprimer un espace qui suit une parenthèse ouvrante.
Do
If InStr(strNom, "( ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "( ", 2)
End If
Loop
' Supprimer un espace qui précède une parenthèse fermante.
Do
If InStr(strNom, " )") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " )", 1)
End If
Loop
' Supprimer un double apostrophe.
Do
If InStr(strNom, "''") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "''", 1)
End If
Loop
' Supprimer une double parenthèse ouvrante.
Do
If InStr(strNom, "((") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "((", 2)
End If
Loop
' Supprimer une double parenthèse fermante.
Do
If InStr(strNom, "))") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "))", 2)
End If
Loop
intLongueurNom = Len(strNom)
blnCaractèreSpécial = False
' Traiter les caractères un à un pour déterminer la casse appropriée.
For intCaractère = 1 To intLongueurNom
strCaractère = Mid(strNom, intCaractère, 1)
' Le premier caractère est toujours en majuscule.
If intCaractère = 1 Then
strCaractère = UCase(strCaractère)
' Si le caractère précédent était un caractère spécial: ( ou '
u - ou espace
ElseIf blnCaractèreSpécial = True Then
' Le caractère courant est mis en majuscule.
strCaractère = UCase(strCaractère)
If strCaractère <> "(" Then
blnCaractèreSpécial = False
End If
Else
' Si le caractère courant est un caractère spécial.
If strCaractère = " " Or strCaractère = "'" Or strCaractère > "-" Or _
strCaractère = "(" Or strCaractère = ")" Then
' Le drapeau de caractère spécial est activé.
blnCaractèreSpécial = True
Else
' Le caractère courant est mis en minuscule (sauf pour les
noms Mc).
intPositionPairePrécédente = intCaractère - 2
If intPositionPairePrécédente >= 1 Then
strPairePrécédente = Mid(strNom,
intPositionPairePrécédente, 2)
If UCase(strPairePrécédente) = "MC" Then
strCaractère = UCase(strCaractère)
Else
strCaractère = LCase(strCaractère)
End If
Else
strCaractère = LCase(strCaractère)
End If
' Le drapeau de caractère spécial est désactivé.
blnCaractèreSpécial = False
End If
End If
strNouveauNom = strNouveauNom & strCaractère
Next intCaractère
CorrigerNom = strNouveauNom
Exit Function
Erreur:
Dim strMessage As String
CorrigerNom = strNom
strMessage = "Une erreur est survenue pendant la correction d'un nom." &
_
vbCrLf & Err.Description
MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
End Function
'---------------------------------------------------------------------------
------------
' FUNCTION StripDoubleCharacter
' Description:
' Supprimer un des deux caractères répétés
' Paramètres:
' strChaîneComplète Chaîne de caractères contenant les
caractères répétés
' strChaîneRecherchée Chaîne des caractères répétés
' blnDeleteSecondCharacter True si on supprime le premier caractère
' False si on supprime le premier caractère
' Return:
' Un string contenant le texte corrigé
'---------------------------------------------------------------------------
------------
Public Function StripDoubleCharacter(ByVal strChaîneComplète As String, _
ByVal
strChaîneRecherchée As String, _
Optional ByVal
intPositionDelete As Integer = 2) _
As String
Dim intPosition As Integer
Dim strDébutChaîne As String, strFinChaîne As String
On Error GoTo Erreur
intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
If intPosition > 0 Then
If intPositionDelete = 1 Then
strDébutChaîne = Left(strChaîneComplète, intPosition)
strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
ElseIf intPositionDelete = 2 Then
strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
End If
StripDoubleCharacter = strDébutChaîne & strFinChaîne
Else
StripDoubleCharacter = strChaîneComplète
End If
Exit Function
Erreur:
Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter", Err.Description
End Function
Tu auras remarqué que la fonction CorrigerNom traite le cas des parenthèses.
Voici l'explication.
Dans le cas d'une femme mariée portant les deux noms (le sien et celui de
son mari), on devrait écrire comme ceci:
Mme Lucie Dubuc-Lafleur.
Plusieurs personnes écrivent plutôt comme ceci:
Mme Lucie (Dubuc) Lafleur.
Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un code
redondant pour arriver à déboguer ma fonction plus facilement.
J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais je
ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont pas
venu à l'esprit.
Espérant le tout utile, je te salue amicalement.
Guy Lafrenière
----------------------------------------------------------------------------
--
"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de
news:
> Salut bouchito,
>
> Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
> TOUT le texte en majuscule...
> --
> Céd / Lausanne
>
>
> "" a écrit :
>
> > utlise à la sortie de ton champ
> >
> > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> >
Bonjour Congelator,
Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
fermante dans la première moitié.
Au lieu de se lire comme ceci:
TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
Le code de bouchito devrait se lire comme suit:
TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
Si tu veux seulement mettre le premier caractère en majuscule, la procédure
suivante devrait suffire:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
End With
End Sub
Si tu veux traiter correctement la casse de tous les caractères dans un
prénom ou un nom, je te suggère le code suivant:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = CorrigerNom(.Text)
End With
End Sub
'---------------------------------------------------------------------------
' FUNCTION CorrigerNom
' Description:
' Corriger un prénom ou un nom pour que les majuscules soient au bon
' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
' Paramètres:
' strNom Nom à corriger
' Return:
' Un string contenant le nom corrigé
'---------------------------------------------------------------------------
Public Function CorrigerNom(ByVal strNom As String) As String
Dim strNouveauNom As String
Dim intLongueurNom As Integer
Dim intCaractère As Integer, strCaractère As String, blnCaractèreSpécial
As Boolean
Dim intPositionPairePrécédente As Integer, strPairePrécédente As String
On Error GoTo Erreur
strNom = Trim(strNom)
strNouveauNom = ""
CorrigerNom = strNom
' Supprimer un double espace.
Do
If InStr(strNom, " ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " ", 2)
End If
Loop
' Supprimer un double tiret.
Do
If InStr(strNom, "--") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "--", 2)
End If
Loop
' Supprimer un espace qui précède un tiret.
Do
If InStr(strNom, " -") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " -", 1)
End If
Loop
' Supprimer un espace qui suit un tiret.
Do
If InStr(strNom, "- ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "- ", 2)
End If
Loop
' Supprimer un espace qui suit une parenthèse ouvrante.
Do
If InStr(strNom, "( ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "( ", 2)
End If
Loop
' Supprimer un espace qui précède une parenthèse fermante.
Do
If InStr(strNom, " )") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " )", 1)
End If
Loop
' Supprimer un double apostrophe.
Do
If InStr(strNom, "''") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "''", 1)
End If
Loop
' Supprimer une double parenthèse ouvrante.
Do
If InStr(strNom, "((") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "((", 2)
End If
Loop
' Supprimer une double parenthèse fermante.
Do
If InStr(strNom, "))") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "))", 2)
End If
Loop
intLongueurNom = Len(strNom)
blnCaractèreSpécial = False
' Traiter les caractères un à un pour déterminer la casse appropriée.
For intCaractère = 1 To intLongueurNom
strCaractère = Mid(strNom, intCaractère, 1)
' Le premier caractère est toujours en majuscule.
If intCaractère = 1 Then
strCaractère = UCase(strCaractère)
' Si le caractère précédent était un caractère spécial: ( ou '
u - ou espace
ElseIf blnCaractèreSpécial = True Then
' Le caractère courant est mis en majuscule.
strCaractère = UCase(strCaractère)
If strCaractère <> "(" Then
blnCaractèreSpécial = False
End If
Else
' Si le caractère courant est un caractère spécial.
If strCaractère = " " Or strCaractère = "'" Or strCaractère > "-" Or _
strCaractère = "(" Or strCaractère = ")" Then
' Le drapeau de caractère spécial est activé.
blnCaractèreSpécial = True
Else
' Le caractère courant est mis en minuscule (sauf pour les
noms Mc).
intPositionPairePrécédente = intCaractère - 2
If intPositionPairePrécédente >= 1 Then
strPairePrécédente = Mid(strNom,
intPositionPairePrécédente, 2)
If UCase(strPairePrécédente) = "MC" Then
strCaractère = UCase(strCaractère)
Else
strCaractère = LCase(strCaractère)
End If
Else
strCaractère = LCase(strCaractère)
End If
' Le drapeau de caractère spécial est désactivé.
blnCaractèreSpécial = False
End If
End If
strNouveauNom = strNouveauNom & strCaractère
Next intCaractère
CorrigerNom = strNouveauNom
Exit Function
Erreur:
Dim strMessage As String
CorrigerNom = strNom
strMessage = "Une erreur est survenue pendant la correction d'un nom." &
_
vbCrLf & Err.Description
MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
End Function
'---------------------------------------------------------------------------
------------
' FUNCTION StripDoubleCharacter
' Description:
' Supprimer un des deux caractères répétés
' Paramètres:
' strChaîneComplète Chaîne de caractères contenant les
caractères répétés
' strChaîneRecherchée Chaîne des caractères répétés
' blnDeleteSecondCharacter True si on supprime le premier caractère
' False si on supprime le premier caractère
' Return:
' Un string contenant le texte corrigé
'---------------------------------------------------------------------------
------------
Public Function StripDoubleCharacter(ByVal strChaîneComplète As String, _
ByVal
strChaîneRecherchée As String, _
Optional ByVal
intPositionDelete As Integer = 2) _
As String
Dim intPosition As Integer
Dim strDébutChaîne As String, strFinChaîne As String
On Error GoTo Erreur
intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
If intPosition > 0 Then
If intPositionDelete = 1 Then
strDébutChaîne = Left(strChaîneComplète, intPosition)
strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
ElseIf intPositionDelete = 2 Then
strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
End If
StripDoubleCharacter = strDébutChaîne & strFinChaîne
Else
StripDoubleCharacter = strChaîneComplète
End If
Exit Function
Erreur:
Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter", Err.Description
End Function
Tu auras remarqué que la fonction CorrigerNom traite le cas des parenthèses.
Voici l'explication.
Dans le cas d'une femme mariée portant les deux noms (le sien et celui de
son mari), on devrait écrire comme ceci:
Mme Lucie Dubuc-Lafleur.
Plusieurs personnes écrivent plutôt comme ceci:
Mme Lucie (Dubuc) Lafleur.
Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un code
redondant pour arriver à déboguer ma fonction plus facilement.
J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais je
ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont pas
venu à l'esprit.
Espérant le tout utile, je te salue amicalement.
Guy Lafrenière
----------------------------------------------------------------------------
--
"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de
news:412D8FAF-4160-48A1-8E57-04DD4AB82614@microsoft.com...
> Salut bouchito,
>
> Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
> TOUT le texte en majuscule...
> --
> Céd / Lausanne
>
>
> "bouchito@free.fr" a écrit :
>
> > utlise à la sortie de ton champ
> >
> > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> >
Bonjour Congelator,
Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
fermante dans la première moitié.
Au lieu de se lire comme ceci:
TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
Le code de bouchito devrait se lire comme suit:
TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
Si tu veux seulement mettre le premier caractère en majuscule, la procédure
suivante devrait suffire:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
End With
End Sub
Si tu veux traiter correctement la casse de tous les caractères dans un
prénom ou un nom, je te suggère le code suivant:
Private Sub TextBox1_LostFocus()
With TextBox1
.Text = CorrigerNom(.Text)
End With
End Sub
'---------------------------------------------------------------------------
' FUNCTION CorrigerNom
' Description:
' Corriger un prénom ou un nom pour que les majuscules soient au bon
' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
' Paramètres:
' strNom Nom à corriger
' Return:
' Un string contenant le nom corrigé
'---------------------------------------------------------------------------
Public Function CorrigerNom(ByVal strNom As String) As String
Dim strNouveauNom As String
Dim intLongueurNom As Integer
Dim intCaractère As Integer, strCaractère As String, blnCaractèreSpécial
As Boolean
Dim intPositionPairePrécédente As Integer, strPairePrécédente As String
On Error GoTo Erreur
strNom = Trim(strNom)
strNouveauNom = ""
CorrigerNom = strNom
' Supprimer un double espace.
Do
If InStr(strNom, " ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " ", 2)
End If
Loop
' Supprimer un double tiret.
Do
If InStr(strNom, "--") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "--", 2)
End If
Loop
' Supprimer un espace qui précède un tiret.
Do
If InStr(strNom, " -") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " -", 1)
End If
Loop
' Supprimer un espace qui suit un tiret.
Do
If InStr(strNom, "- ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "- ", 2)
End If
Loop
' Supprimer un espace qui suit une parenthèse ouvrante.
Do
If InStr(strNom, "( ") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "( ", 2)
End If
Loop
' Supprimer un espace qui précède une parenthèse fermante.
Do
If InStr(strNom, " )") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, " )", 1)
End If
Loop
' Supprimer un double apostrophe.
Do
If InStr(strNom, "''") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "''", 1)
End If
Loop
' Supprimer une double parenthèse ouvrante.
Do
If InStr(strNom, "((") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "((", 2)
End If
Loop
' Supprimer une double parenthèse fermante.
Do
If InStr(strNom, "))") = 0 Then
Exit Do
Else
strNom = StripDoubleCharacter(strNom, "))", 2)
End If
Loop
intLongueurNom = Len(strNom)
blnCaractèreSpécial = False
' Traiter les caractères un à un pour déterminer la casse appropriée.
For intCaractère = 1 To intLongueurNom
strCaractère = Mid(strNom, intCaractère, 1)
' Le premier caractère est toujours en majuscule.
If intCaractère = 1 Then
strCaractère = UCase(strCaractère)
' Si le caractère précédent était un caractère spécial: ( ou '
u - ou espace
ElseIf blnCaractèreSpécial = True Then
' Le caractère courant est mis en majuscule.
strCaractère = UCase(strCaractère)
If strCaractère <> "(" Then
blnCaractèreSpécial = False
End If
Else
' Si le caractère courant est un caractère spécial.
If strCaractère = " " Or strCaractère = "'" Or strCaractère > "-" Or _
strCaractère = "(" Or strCaractère = ")" Then
' Le drapeau de caractère spécial est activé.
blnCaractèreSpécial = True
Else
' Le caractère courant est mis en minuscule (sauf pour les
noms Mc).
intPositionPairePrécédente = intCaractère - 2
If intPositionPairePrécédente >= 1 Then
strPairePrécédente = Mid(strNom,
intPositionPairePrécédente, 2)
If UCase(strPairePrécédente) = "MC" Then
strCaractère = UCase(strCaractère)
Else
strCaractère = LCase(strCaractère)
End If
Else
strCaractère = LCase(strCaractère)
End If
' Le drapeau de caractère spécial est désactivé.
blnCaractèreSpécial = False
End If
End If
strNouveauNom = strNouveauNom & strCaractère
Next intCaractère
CorrigerNom = strNouveauNom
Exit Function
Erreur:
Dim strMessage As String
CorrigerNom = strNom
strMessage = "Une erreur est survenue pendant la correction d'un nom." &
_
vbCrLf & Err.Description
MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
End Function
'---------------------------------------------------------------------------
------------
' FUNCTION StripDoubleCharacter
' Description:
' Supprimer un des deux caractères répétés
' Paramètres:
' strChaîneComplète Chaîne de caractères contenant les
caractères répétés
' strChaîneRecherchée Chaîne des caractères répétés
' blnDeleteSecondCharacter True si on supprime le premier caractère
' False si on supprime le premier caractère
' Return:
' Un string contenant le texte corrigé
'---------------------------------------------------------------------------
------------
Public Function StripDoubleCharacter(ByVal strChaîneComplète As String, _
ByVal
strChaîneRecherchée As String, _
Optional ByVal
intPositionDelete As Integer = 2) _
As String
Dim intPosition As Integer
Dim strDébutChaîne As String, strFinChaîne As String
On Error GoTo Erreur
intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
If intPosition > 0 Then
If intPositionDelete = 1 Then
strDébutChaîne = Left(strChaîneComplète, intPosition)
strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
ElseIf intPositionDelete = 2 Then
strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
End If
StripDoubleCharacter = strDébutChaîne & strFinChaîne
Else
StripDoubleCharacter = strChaîneComplète
End If
Exit Function
Erreur:
Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter", Err.Description
End Function
Tu auras remarqué que la fonction CorrigerNom traite le cas des parenthèses.
Voici l'explication.
Dans le cas d'une femme mariée portant les deux noms (le sien et celui de
son mari), on devrait écrire comme ceci:
Mme Lucie Dubuc-Lafleur.
Plusieurs personnes écrivent plutôt comme ceci:
Mme Lucie (Dubuc) Lafleur.
Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un code
redondant pour arriver à déboguer ma fonction plus facilement.
J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais je
ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont pas
venu à l'esprit.
Espérant le tout utile, je te salue amicalement.
Guy Lafrenière
----------------------------------------------------------------------------
--
"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de
news:
> Salut bouchito,
>
> Merci pour l'info mais malheureusement ça ne foncitonne pas, ça m'affiche
> TOUT le texte en majuscule...
> --
> Céd / Lausanne
>
>
> "" a écrit :
>
> > utlise à la sortie de ton champ
> >
> > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> >
WOUAOOO !!!!! Fabuleux !! Heureusement que j'étais assis !
Mon "petit" problème était de simplement faciliter la saisie des
utilisateurs en faisant en sorte qu'à la sortie du champs, les prénoms se
mettent automatiquement avec la 1ère lettre en majuscule. Après avoir reçu
les 1ers codes (encore merci à tous) je me suis rendu compte que ma
était mal formulée et ne tenait pas compte des prénoms composés. Avec ton
code, je crois bien que tu as vu toutes les possibilités.
Un GRAND MERCI Guy.
--
Céd / Lausanne
"Guy Lafrenière" a écrit :
> Bonjour Congelator,
>
> Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
> fermante dans la première moitié.
>
> Au lieu de se lire comme ceci:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> Le code de bouchito devrait se lire comme suit:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
>
> Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
>
> Si tu veux seulement mettre le premier caractère en majuscule, la
> suivante devrait suffire:
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
> End With
> End Sub
>
> Si tu veux traiter correctement la casse de tous les caractères dans un
> prénom ou un nom, je te suggère le code suivant:
>
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = CorrigerNom(.Text)
> End With
> End Sub
>
>
> ' FUNCTION CorrigerNom
> ' Description:
> ' Corriger un prénom ou un nom pour que les majuscules soient au
> ' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
> ' Paramètres:
> ' strNom Nom à corriger
> ' Return:
> ' Un string contenant le nom corrigé
>
>
> Public Function CorrigerNom(ByVal strNom As String) As String
>
> Dim strNouveauNom As String
> Dim intLongueurNom As Integer
> Dim intCaractère As Integer, strCaractère As String,
> As Boolean
> Dim intPositionPairePrécédente As Integer, strPairePrécédente As
>
> On Error GoTo Erreur
>
> strNom = Trim(strNom)
> strNouveauNom = ""
>
> CorrigerNom = strNom
>
> ' Supprimer un double espace.
> Do
> If InStr(strNom, " ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " ", 2)
> End If
> Loop
>
> ' Supprimer un double tiret.
> Do
> If InStr(strNom, "--") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "--", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède un tiret.
> Do
> If InStr(strNom, " -") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " -", 1)
> End If
> Loop
>
> ' Supprimer un espace qui suit un tiret.
> Do
> If InStr(strNom, "- ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "- ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui suit une parenthèse ouvrante.
> Do
> If InStr(strNom, "( ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "( ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède une parenthèse fermante.
> Do
> If InStr(strNom, " )") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " )", 1)
> End If
> Loop
>
> ' Supprimer un double apostrophe.
> Do
> If InStr(strNom, "''") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "''", 1)
> End If
> Loop
>
> ' Supprimer une double parenthèse ouvrante.
> Do
> If InStr(strNom, "((") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "((", 2)
> End If
> Loop
>
> ' Supprimer une double parenthèse fermante.
> Do
> If InStr(strNom, "))") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "))", 2)
> End If
> Loop
>
> intLongueurNom = Len(strNom)
>
> blnCaractèreSpécial = False
>
> ' Traiter les caractères un à un pour déterminer la casse
> For intCaractère = 1 To intLongueurNom
>
> strCaractère = Mid(strNom, intCaractère, 1)
>
> ' Le premier caractère est toujours en majuscule.
> If intCaractère = 1 Then
> strCaractère = UCase(strCaractère)
>
> ' Si le caractère précédent était un caractère spécial: ( ou
> u - ou espace
> ElseIf blnCaractèreSpécial = True Then
> ' Le caractère courant est mis en majuscule.
> strCaractère = UCase(strCaractère)
> If strCaractère <> "(" Then
> blnCaractèreSpécial = False
> End If
> Else
>
> ' Si le caractère courant est un caractère spécial.
> If strCaractère = " " Or strCaractère = "'" Or strCaractère
> strCaractère = "(" Or strCaractère = ")" Then
> ' Le drapeau de caractère spécial est activé.
> blnCaractèreSpécial = True
>
> Else
>
> ' Le caractère courant est mis en minuscule (sauf pour
> noms Mc).
> intPositionPairePrécédente = intCaractère - 2
> If intPositionPairePrécédente >= 1 Then
> strPairePrécédente = Mid(strNom,
> intPositionPairePrécédente, 2)
> If UCase(strPairePrécédente) = "MC" Then
> strCaractère = UCase(strCaractère)
> Else
> strCaractère = LCase(strCaractère)
> End If
> Else
> strCaractère = LCase(strCaractère)
> End If
> ' Le drapeau de caractère spécial est désactivé.
> blnCaractèreSpécial = False
>
> End If
>
> End If
>
> strNouveauNom = strNouveauNom & strCaractère
>
> Next intCaractère
>
> CorrigerNom = strNouveauNom
>
> Exit Function
>
> Erreur:
>
> Dim strMessage As String
> CorrigerNom = strNom
> strMessage = "Une erreur est survenue pendant la correction d'un
> _
> vbCrLf & Err.Description
> MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
>
> End Function
>
>
>
>
> ------------
> ' FUNCTION StripDoubleCharacter
> ' Description:
> ' Supprimer un des deux caractères répétés
> ' Paramètres:
> ' strChaîneComplète Chaîne de caractères contenant les
> caractères répétés
> ' strChaîneRecherchée Chaîne des caractères répétés
> ' blnDeleteSecondCharacter True si on supprime le premier
> ' False si on supprime le premier
> ' Return:
> ' Un string contenant le texte corrigé
>
> ------------
>
> Public Function StripDoubleCharacter(ByVal strChaîneComplète As String,
> ByVal
> strChaîneRecherchée As String, _
> Optional
> intPositionDelete As Integer = 2) _
> As String
>
> Dim intPosition As Integer
> Dim strDébutChaîne As String, strFinChaîne As String
>
> On Error GoTo Erreur
>
> intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
> If intPosition > 0 Then
> If intPositionDelete = 1 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
> ElseIf intPositionDelete = 2 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
> End If
> StripDoubleCharacter = strDébutChaîne & strFinChaîne
> Else
> StripDoubleCharacter = strChaîneComplète
> End If
>
> Exit Function
>
> Erreur:
>
> Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter",
>
> End Function
>
>
> Tu auras remarqué que la fonction CorrigerNom traite le cas des
> Voici l'explication.
> Dans le cas d'une femme mariée portant les deux noms (le sien et celui
> son mari), on devrait écrire comme ceci:
> Mme Lucie Dubuc-Lafleur.
> Plusieurs personnes écrivent plutôt comme ceci:
> Mme Lucie (Dubuc) Lafleur.
>
> Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un
> redondant pour arriver à déboguer ma fonction plus facilement.
>
> J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais
> ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont
> venu à l'esprit.
>
> Espérant le tout utile, je te salue amicalement.
>
> Guy Lafrenière
>
--------------------------------------------------------------------------
> --
>
> "Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message
> news:
> > Salut bouchito,
> >
> > Merci pour l'info mais malheureusement ça ne foncitonne pas, ça
> > TOUT le texte en majuscule...
> > --
> > Céd / Lausanne
> >
> >
> > "" a écrit :
> >
> > > utlise à la sortie de ton champ
> > >
> > > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> > >
WOUAOOO !!!!! Fabuleux !! Heureusement que j'étais assis !
Mon "petit" problème était de simplement faciliter la saisie des
utilisateurs en faisant en sorte qu'à la sortie du champs, les prénoms se
mettent automatiquement avec la 1ère lettre en majuscule. Après avoir reçu
les 1ers codes (encore merci à tous) je me suis rendu compte que ma
était mal formulée et ne tenait pas compte des prénoms composés. Avec ton
code, je crois bien que tu as vu toutes les possibilités.
Un GRAND MERCI Guy.
--
Céd / Lausanne
"Guy Lafrenière" a écrit :
> Bonjour Congelator,
>
> Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
> fermante dans la première moitié.
>
> Au lieu de se lire comme ceci:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> Le code de bouchito devrait se lire comme suit:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
>
> Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
>
> Si tu veux seulement mettre le premier caractère en majuscule, la
> suivante devrait suffire:
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
> End With
> End Sub
>
> Si tu veux traiter correctement la casse de tous les caractères dans un
> prénom ou un nom, je te suggère le code suivant:
>
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = CorrigerNom(.Text)
> End With
> End Sub
>
>
> ' FUNCTION CorrigerNom
> ' Description:
> ' Corriger un prénom ou un nom pour que les majuscules soient au
> ' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
> ' Paramètres:
> ' strNom Nom à corriger
> ' Return:
> ' Un string contenant le nom corrigé
>
>
> Public Function CorrigerNom(ByVal strNom As String) As String
>
> Dim strNouveauNom As String
> Dim intLongueurNom As Integer
> Dim intCaractère As Integer, strCaractère As String,
> As Boolean
> Dim intPositionPairePrécédente As Integer, strPairePrécédente As
>
> On Error GoTo Erreur
>
> strNom = Trim(strNom)
> strNouveauNom = ""
>
> CorrigerNom = strNom
>
> ' Supprimer un double espace.
> Do
> If InStr(strNom, " ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " ", 2)
> End If
> Loop
>
> ' Supprimer un double tiret.
> Do
> If InStr(strNom, "--") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "--", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède un tiret.
> Do
> If InStr(strNom, " -") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " -", 1)
> End If
> Loop
>
> ' Supprimer un espace qui suit un tiret.
> Do
> If InStr(strNom, "- ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "- ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui suit une parenthèse ouvrante.
> Do
> If InStr(strNom, "( ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "( ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède une parenthèse fermante.
> Do
> If InStr(strNom, " )") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " )", 1)
> End If
> Loop
>
> ' Supprimer un double apostrophe.
> Do
> If InStr(strNom, "''") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "''", 1)
> End If
> Loop
>
> ' Supprimer une double parenthèse ouvrante.
> Do
> If InStr(strNom, "((") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "((", 2)
> End If
> Loop
>
> ' Supprimer une double parenthèse fermante.
> Do
> If InStr(strNom, "))") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "))", 2)
> End If
> Loop
>
> intLongueurNom = Len(strNom)
>
> blnCaractèreSpécial = False
>
> ' Traiter les caractères un à un pour déterminer la casse
> For intCaractère = 1 To intLongueurNom
>
> strCaractère = Mid(strNom, intCaractère, 1)
>
> ' Le premier caractère est toujours en majuscule.
> If intCaractère = 1 Then
> strCaractère = UCase(strCaractère)
>
> ' Si le caractère précédent était un caractère spécial: ( ou
> u - ou espace
> ElseIf blnCaractèreSpécial = True Then
> ' Le caractère courant est mis en majuscule.
> strCaractère = UCase(strCaractère)
> If strCaractère <> "(" Then
> blnCaractèreSpécial = False
> End If
> Else
>
> ' Si le caractère courant est un caractère spécial.
> If strCaractère = " " Or strCaractère = "'" Or strCaractère
> strCaractère = "(" Or strCaractère = ")" Then
> ' Le drapeau de caractère spécial est activé.
> blnCaractèreSpécial = True
>
> Else
>
> ' Le caractère courant est mis en minuscule (sauf pour
> noms Mc).
> intPositionPairePrécédente = intCaractère - 2
> If intPositionPairePrécédente >= 1 Then
> strPairePrécédente = Mid(strNom,
> intPositionPairePrécédente, 2)
> If UCase(strPairePrécédente) = "MC" Then
> strCaractère = UCase(strCaractère)
> Else
> strCaractère = LCase(strCaractère)
> End If
> Else
> strCaractère = LCase(strCaractère)
> End If
> ' Le drapeau de caractère spécial est désactivé.
> blnCaractèreSpécial = False
>
> End If
>
> End If
>
> strNouveauNom = strNouveauNom & strCaractère
>
> Next intCaractère
>
> CorrigerNom = strNouveauNom
>
> Exit Function
>
> Erreur:
>
> Dim strMessage As String
> CorrigerNom = strNom
> strMessage = "Une erreur est survenue pendant la correction d'un
> _
> vbCrLf & Err.Description
> MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
>
> End Function
>
>
>
>
> ------------
> ' FUNCTION StripDoubleCharacter
> ' Description:
> ' Supprimer un des deux caractères répétés
> ' Paramètres:
> ' strChaîneComplète Chaîne de caractères contenant les
> caractères répétés
> ' strChaîneRecherchée Chaîne des caractères répétés
> ' blnDeleteSecondCharacter True si on supprime le premier
> ' False si on supprime le premier
> ' Return:
> ' Un string contenant le texte corrigé
>
> ------------
>
> Public Function StripDoubleCharacter(ByVal strChaîneComplète As String,
> ByVal
> strChaîneRecherchée As String, _
> Optional
> intPositionDelete As Integer = 2) _
> As String
>
> Dim intPosition As Integer
> Dim strDébutChaîne As String, strFinChaîne As String
>
> On Error GoTo Erreur
>
> intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
> If intPosition > 0 Then
> If intPositionDelete = 1 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
> ElseIf intPositionDelete = 2 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
> End If
> StripDoubleCharacter = strDébutChaîne & strFinChaîne
> Else
> StripDoubleCharacter = strChaîneComplète
> End If
>
> Exit Function
>
> Erreur:
>
> Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter",
>
> End Function
>
>
> Tu auras remarqué que la fonction CorrigerNom traite le cas des
> Voici l'explication.
> Dans le cas d'une femme mariée portant les deux noms (le sien et celui
> son mari), on devrait écrire comme ceci:
> Mme Lucie Dubuc-Lafleur.
> Plusieurs personnes écrivent plutôt comme ceci:
> Mme Lucie (Dubuc) Lafleur.
>
> Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un
> redondant pour arriver à déboguer ma fonction plus facilement.
>
> J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais
> ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont
> venu à l'esprit.
>
> Espérant le tout utile, je te salue amicalement.
>
> Guy Lafrenière
>
--------------------------------------------------------------------------
> --
>
> "Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message
> news:412D8FAF-4160-48A1-8E57-04DD4AB82614@microsoft.com...
> > Salut bouchito,
> >
> > Merci pour l'info mais malheureusement ça ne foncitonne pas, ça
> > TOUT le texte en majuscule...
> > --
> > Céd / Lausanne
> >
> >
> > "bouchito@free.fr" a écrit :
> >
> > > utlise à la sortie de ton champ
> > >
> > > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> > >
WOUAOOO !!!!! Fabuleux !! Heureusement que j'étais assis !
Mon "petit" problème était de simplement faciliter la saisie des
utilisateurs en faisant en sorte qu'à la sortie du champs, les prénoms se
mettent automatiquement avec la 1ère lettre en majuscule. Après avoir reçu
les 1ers codes (encore merci à tous) je me suis rendu compte que ma
était mal formulée et ne tenait pas compte des prénoms composés. Avec ton
code, je crois bien que tu as vu toutes les possibilités.
Un GRAND MERCI Guy.
--
Céd / Lausanne
"Guy Lafrenière" a écrit :
> Bonjour Congelator,
>
> Le code de bouchito ne fonctionne pas parce qu'il manque une parenthèse
> fermante dans la première moitié.
>
> Au lieu de se lire comme ceci:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
>
> Le code de bouchito devrait se lire comme suit:
> TONTEXTE = Ucase(left(trim( TONTEXTE),1)) & mid(trim(TONTEXTE),2)
>
> Je ne suis pas sûr de bien comprendre ce que tu cherches réellement.
>
> Si tu veux seulement mettre le premier caractère en majuscule, la
> suivante devrait suffire:
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = UCase(Left(Trim(.Text),1)) & Mid(Trim(.Text),2)
> End With
> End Sub
>
> Si tu veux traiter correctement la casse de tous les caractères dans un
> prénom ou un nom, je te suggère le code suivant:
>
> Private Sub TextBox1_LostFocus()
> With TextBox1
> .Text = CorrigerNom(.Text)
> End With
> End Sub
>
>
> ' FUNCTION CorrigerNom
> ' Description:
> ' Corriger un prénom ou un nom pour que les majuscules soient au
> ' endroit et qu'il n'y ait pas d'espace ou de caractère inutile
> ' Paramètres:
> ' strNom Nom à corriger
> ' Return:
> ' Un string contenant le nom corrigé
>
>
> Public Function CorrigerNom(ByVal strNom As String) As String
>
> Dim strNouveauNom As String
> Dim intLongueurNom As Integer
> Dim intCaractère As Integer, strCaractère As String,
> As Boolean
> Dim intPositionPairePrécédente As Integer, strPairePrécédente As
>
> On Error GoTo Erreur
>
> strNom = Trim(strNom)
> strNouveauNom = ""
>
> CorrigerNom = strNom
>
> ' Supprimer un double espace.
> Do
> If InStr(strNom, " ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " ", 2)
> End If
> Loop
>
> ' Supprimer un double tiret.
> Do
> If InStr(strNom, "--") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "--", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède un tiret.
> Do
> If InStr(strNom, " -") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " -", 1)
> End If
> Loop
>
> ' Supprimer un espace qui suit un tiret.
> Do
> If InStr(strNom, "- ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "- ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui suit une parenthèse ouvrante.
> Do
> If InStr(strNom, "( ") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "( ", 2)
> End If
> Loop
>
> ' Supprimer un espace qui précède une parenthèse fermante.
> Do
> If InStr(strNom, " )") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, " )", 1)
> End If
> Loop
>
> ' Supprimer un double apostrophe.
> Do
> If InStr(strNom, "''") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "''", 1)
> End If
> Loop
>
> ' Supprimer une double parenthèse ouvrante.
> Do
> If InStr(strNom, "((") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "((", 2)
> End If
> Loop
>
> ' Supprimer une double parenthèse fermante.
> Do
> If InStr(strNom, "))") = 0 Then
> Exit Do
> Else
> strNom = StripDoubleCharacter(strNom, "))", 2)
> End If
> Loop
>
> intLongueurNom = Len(strNom)
>
> blnCaractèreSpécial = False
>
> ' Traiter les caractères un à un pour déterminer la casse
> For intCaractère = 1 To intLongueurNom
>
> strCaractère = Mid(strNom, intCaractère, 1)
>
> ' Le premier caractère est toujours en majuscule.
> If intCaractère = 1 Then
> strCaractère = UCase(strCaractère)
>
> ' Si le caractère précédent était un caractère spécial: ( ou
> u - ou espace
> ElseIf blnCaractèreSpécial = True Then
> ' Le caractère courant est mis en majuscule.
> strCaractère = UCase(strCaractère)
> If strCaractère <> "(" Then
> blnCaractèreSpécial = False
> End If
> Else
>
> ' Si le caractère courant est un caractère spécial.
> If strCaractère = " " Or strCaractère = "'" Or strCaractère
> strCaractère = "(" Or strCaractère = ")" Then
> ' Le drapeau de caractère spécial est activé.
> blnCaractèreSpécial = True
>
> Else
>
> ' Le caractère courant est mis en minuscule (sauf pour
> noms Mc).
> intPositionPairePrécédente = intCaractère - 2
> If intPositionPairePrécédente >= 1 Then
> strPairePrécédente = Mid(strNom,
> intPositionPairePrécédente, 2)
> If UCase(strPairePrécédente) = "MC" Then
> strCaractère = UCase(strCaractère)
> Else
> strCaractère = LCase(strCaractère)
> End If
> Else
> strCaractère = LCase(strCaractère)
> End If
> ' Le drapeau de caractère spécial est désactivé.
> blnCaractèreSpécial = False
>
> End If
>
> End If
>
> strNouveauNom = strNouveauNom & strCaractère
>
> Next intCaractère
>
> CorrigerNom = strNouveauNom
>
> Exit Function
>
> Erreur:
>
> Dim strMessage As String
> CorrigerNom = strNom
> strMessage = "Une erreur est survenue pendant la correction d'un
> _
> vbCrLf & Err.Description
> MsgBox strMessage, vbOKOnly + vbCritical, "Erreur"
>
> End Function
>
>
>
>
> ------------
> ' FUNCTION StripDoubleCharacter
> ' Description:
> ' Supprimer un des deux caractères répétés
> ' Paramètres:
> ' strChaîneComplète Chaîne de caractères contenant les
> caractères répétés
> ' strChaîneRecherchée Chaîne des caractères répétés
> ' blnDeleteSecondCharacter True si on supprime le premier
> ' False si on supprime le premier
> ' Return:
> ' Un string contenant le texte corrigé
>
> ------------
>
> Public Function StripDoubleCharacter(ByVal strChaîneComplète As String,
> ByVal
> strChaîneRecherchée As String, _
> Optional
> intPositionDelete As Integer = 2) _
> As String
>
> Dim intPosition As Integer
> Dim strDébutChaîne As String, strFinChaîne As String
>
> On Error GoTo Erreur
>
> intPosition = InStr(strChaîneComplète, strChaîneRecherchée)
> If intPosition > 0 Then
> If intPositionDelete = 1 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 2)
> ElseIf intPositionDelete = 2 Then
> strDébutChaîne = Left(strChaîneComplète, intPosition - 1)
> strFinChaîne = Mid(strChaîneComplète, intPosition + 1)
> End If
> StripDoubleCharacter = strDébutChaîne & strFinChaîne
> Else
> StripDoubleCharacter = strChaîneComplète
> End If
>
> Exit Function
>
> Erreur:
>
> Err.Raise Err.Number, "MLibrairie:StripDoubleCharacter",
>
> End Function
>
>
> Tu auras remarqué que la fonction CorrigerNom traite le cas des
> Voici l'explication.
> Dans le cas d'une femme mariée portant les deux noms (le sien et celui
> son mari), on devrait écrire comme ceci:
> Mme Lucie Dubuc-Lafleur.
> Plusieurs personnes écrivent plutôt comme ceci:
> Mme Lucie (Dubuc) Lafleur.
>
> Mon code n'est pas un modèle de code compact. J'ai choisi d'écrire un
> redondant pour arriver à déboguer ma fonction plus facilement.
>
> J'ai tenté de prévoir tous les types de noms qu'on peut rencontrer mais
> ne peux pas garantir que je n'ai pas omis quelques cas qui ne me sont
> venu à l'esprit.
>
> Espérant le tout utile, je te salue amicalement.
>
> Guy Lafrenière
>
--------------------------------------------------------------------------
> --
>
> "Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message
> news:
> > Salut bouchito,
> >
> > Merci pour l'info mais malheureusement ça ne foncitonne pas, ça
> > TOUT le texte en majuscule...
> > --
> > Céd / Lausanne
> >
> >
> > "" a écrit :
> >
> > > utlise à la sortie de ton champ
> > >
> > > TONTEXTE = Ucase(left(trim( TONTEXTE),1) & mid(trim(TONTEXTE),2)
> > >