dès que tu tends une perche (et le mot n'est pas utilisé au hasard) tu peux
être sûr qu'il y aura toujours un lubrique pour s'en saisir....
sacré daniel, tu les connais toutes, de la version "première communion 1.0"
à celle "corps de garde 6.9"
jps
dès que tu tends une perche (et le mot n'est pas utilisé au hasard) tu peux
être sûr qu'il y aura toujours un lubrique pour s'en saisir....
sacré daniel, tu les connais toutes, de la version "première communion 1.0"
à celle "corps de garde 6.9"
jps
dès que tu tends une perche (et le mot n'est pas utilisé au hasard) tu peux
être sûr qu'il y aura toujours un lubrique pour s'en saisir....
sacré daniel, tu les connais toutes, de la version "première communion 1.0"
à celle "corps de garde 6.9"
jps
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message de
news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur dela boucle auraient pu se limiter à une seule copie mais je voulais
traiter
McDonald (qui introduisait l'utilisation des SubMatches). De plus, j'ai
intégré(mais pas beaucoup testé) une modif pour empêcher "de" d'être changé en
"De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)) +
2,
1) = _UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1))
End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de"Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)), 1)
_UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)), 1))
End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la première
école", mais je me retrouve toujours en chicane avec les Patterns, et
je perds patience. Je me dis alors que vaut mieux un programme "qui
marche" que rien du tout.
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" <prenom.maher@bigfoot.inutil.com> a écrit dans le message de
news:eaWZecl1EHA.3324@tk2msftngp13.phx.gbl...
Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de
la boucle auraient pu se limiter à une seule copie mais je voulais
traiter
McDonald (qui introduisait l'utilisation des SubMatches). De plus, j'ai
intégré
(mais pas beaucoup testé) une modif pour empêcher "de" d'être changé en
"De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)) +
2,
1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1))
End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de"
Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)), 1)
_
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)), 1))
End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la première
école", mais je me retrouve toujours en chicane avec les Patterns, et
je perds patience. Je me dis alors que vaut mieux un programme "qui
marche" que rien du tout.
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas allé
jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message de
news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur dela boucle auraient pu se limiter à une seule copie mais je voulais
traiter
McDonald (qui introduisait l'utilisation des SubMatches). De plus, j'ai
intégré(mais pas beaucoup testé) une modif pour empêcher "de" d'être changé en
"De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)) +
2,
1) = _UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1))
End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de"Mid(LeTexte, Match.FirstIndex + 1 + Len(Match.SubMatches(0)), 1)
_UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)), 1))
End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la première
école", mais je me retrouve toujours en chicane avec les Patterns, et
je perds patience. Je me dis alors que vaut mieux un programme "qui
marche" que rien du tout.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" <biscotteUnScudJpsabatdelaile@wanadoo.fr> a écrit dans le
message de news:ukMJ$wl1EHA.2012@TK2MSFTNGP15.phx.gbl...
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" <prenom.maher@bigfoot.inutil.com> a écrit dans le message
de news:eaWZecl1EHA.3324@tk2msftngp13.phx.gbl...
Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" <biscotteUnScudJpsabatdelaile@wanadoo.fr> a écrit dans le
message de news:ukMJ$wl1EHA.2012@TK2MSFTNGP15.phx.gbl...
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" <prenom.maher@bigfoot.inutil.com> a écrit dans le message
de news:eaWZecl1EHA.3324@tk2msftngp13.phx.gbl...
Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" <biscotteUnScudJpsabatdelaile@wanadoo.fr> a écrit dans le
message de news:ukMJ$wl1EHA.2012@TK2MSFTNGP15.phx.gbl...
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" <prenom.maher@bigfoot.inutil.com> a écrit dans le message
de news:eaWZecl1EHA.3324@tk2msftngp13.phx.gbl...
Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
bon, ben, boujour la foule
va être fou le daniel M quand je vais lui dire qu'il manque encore un cas
:
j'ai un client qui s'appelle Thierry Garnier des Garets d'Ars (oui, oui,
le
chatelain du bled de l'Ain où officiait le curé du même nom avant d'être
béatifié)...
alors il va falloir ajouter encore un And.... "des", ok?
en tous cas, merci geedee pour cette explication que je ne distingue pas
mais bon, il est tard...
jps
"GD" a écrit dans le message de
news:Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
bon, ben, boujour la foule
va être fou le daniel M quand je vais lui dire qu'il manque encore un cas
:
j'ai un client qui s'appelle Thierry Garnier des Garets d'Ars (oui, oui,
le
chatelain du bled de l'Ain où officiait le curé du même nom avant d'être
béatifié)...
alors il va falloir ajouter encore un And.... "des", ok?
en tous cas, merci geedee pour cette explication que je ne distingue pas
mais bon, il est tard...
jps
"GD" <nomail@nomail.net> a écrit dans le message de
news:eHKgWam1EHA.1452@TK2MSFTNGP11.phx.gbl...
Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:
oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" <biscotteUnScudJpsabatdelaile@wanadoo.fr> a écrit dans le
message de news:ukMJ$wl1EHA.2012@TK2MSFTNGP15.phx.gbl...
chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" <prenom.maher@bigfoot.inutil.com> a écrit dans le message
de news:eaWZecl1EHA.3324@tk2msftngp13.phx.gbl...
Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.
bon, ben, boujour la foule
va être fou le daniel M quand je vais lui dire qu'il manque encore un cas
:
j'ai un client qui s'appelle Thierry Garnier des Garets d'Ars (oui, oui,
le
chatelain du bled de l'Ain où officiait le curé du même nom avant d'être
béatifié)...
alors il va falloir ajouter encore un And.... "des", ok?
en tous cas, merci geedee pour cette explication que je ne distingue pas
mais bon, il est tard...
jps
"GD" a écrit dans le message de
news:Bonsour® Daniel, Clément ,
Joli travail qui va en satisfaire quelques uns ....
Bonsour® JPS......
simple question de logique (booléenne)
;o)))
If (Left(s, 2) <> "de" And Left(s, 2) <> "du") Or Len(s) <> 2 Then
godefoy gras comtesse du berry>>>>>Godefoy Gras Comtesse du Berry
mais encore pour faire le pestou ... ;o)))
reste ce probleme qui est incompatible avec la règle des O'Connors ;o)))
jean-paul sabotier d'azergue >>>> Jean-Paul Sabotier D'Azergue
ou bien
anémone gisquette d'estaing>>>>>Anémone Gisquette D'Estaing
;o)))
wrote:oups petit bémol, daniel
tu as oublié de traiter le "du" de la comtesse du barry, par ex.
j'ai essayé de modifier ta proc en ajoutant :
If Left(s, 2) <> "du" Or Len(s) <> 2 Then ' met 1 lettre en maj sauf
si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)), 1))
End If
eh ben merdum de merdum, ça ne prend pas en charge le "pas de
majuscule" à "du"...
comment faut-il faire alors pour avoir et "de" et "du"???? moi pas y
arriver...
jps
"jps" a écrit dans le
message de news:ukMJ$chapeau, daniel
et je suis content d'avoir fait mon caprice, même si je ne suis pas
allé jusqu'à faire pipi dans le VBE et me rouler dans le module...
jps
"Daniel.M" a écrit dans le message
de news:Salut,
La fonction étant relativement courte, je la copie ici.
Ça donnerait quelque chose comme ce qui suit. Les instructions à
l'intérieur de la boucle auraient pu se limiter à une seule copie
mais je voulais traiter McDonald (qui introduisait l'utilisation
des SubMatches). De plus, j'ai intégré (mais pas beaucoup testé)
une modif pour empêcher "de" d'être changé en "De".
'Met en majuscule la première lettre des mots de la cellule
'sauf le "de" : un caprice de JPS
'
Function PremLettre(LeTexte As String) As String
Dim RE As Object, Matches As Object, Match As Object
Dim s As String
Set RE = New RegExp
RE.Global = True 'Recherche toutes les correspondances
RE.IgnoreCase = True 'Ignore les différences maj/min
' Le pattern:
' un espace, un apostrophe, un tiret ou rien
' PUIS
' une suite de lettres reconnues
RE.Pattern = "(s|'|-|)" & _
"([A-ZßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ]+)"
Set Matches = RE.Execute(LeTexte) ' le seul appel
For Each Match In Matches
s = Match.SubMatches(1)
If Left(s, 2) = "mc" Then ' De mcdonald vers mcDonald
Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)) + 2, 1) = _
UCase(Mid(LeTexte, Match.FirstIndex + 1 + _
Len(Match.SubMatches(0)) + 2, 1)) End If
If Left(s, 2) <> "de" Or Len(s) <> 2 Then ' met 1 lettre en maj
sauf si "de" Mid(LeTexte, Match.FirstIndex + 1 +
Len(Match.SubMatches(0)), 1) = _ UCase(Mid(LeTexte,
Match.FirstIndex + 1 + _ Len(Match.SubMatches(0)),
1)) End If
Next Match
PremLettre = LeTexte
End Function
Je ne dis pas non. J'aimerais justement pouvoir passer à "la
première école", mais je me retrouve toujours en chicane avec les
Patterns, et je perds patience. Je me dis alors que vaut mieux un
programme "qui marche" que rien du tout.