Fonction Excel : première lettre en majuscule [Fermé]

Signaler
Messages postés
1
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
14 janvier 2010
-
 Abdel -
Bonjour,

je cherche à créer une fonction Excel, basée sur la Fonction NOMPROPRE, mais avec des conditions.
En effet, je veux que toutes les premières lettres des mots soient en majuscule, sauf les mots suivants : "a, an, and, for, from, of, or, the, to". Et... ben je n'y arrive pas avec la fonction SI.

Quelqu'un aurait une idée?
Merci!!
A voir également:

3 réponses

Salut,

Voici une macro a copier coller dans un module de ton fichier pour avoir une nouvelle fonction de disponible dans Excel.
Ensuite tu peux utiliser la formule de la manière suivante : =PhraseMaj(A2;"sur sous en de du des et au aux")
ou =PhraseMaj(A3;"a, an, and, for, from, of, or, the, to")

Voici la fonction à copier coller :
-------------------------------
Option Explicit
'Abdel Elg
'23/01/2010

Function PhraseMaj(Phrase As String, Optional Except As String) As String
Dim s As String
Dim tabMots() As String
Dim i As Integer

Except = " " & Trim(Except) & " "
tabMots = Split(Phrase, " ")

For i = 0 To UBound(tabMots)
s = Trim(tabMots(i))
If InStr(1, Except, s, vbTextCompare) = True Then 'en minuscules
PhraseMaj = PhraseMaj & " " & LCase(s)
Else 'Nom Propre
PhraseMaj = PhraseMaj & " " & UCase(Left(s, 1)) & LCase(Mid(s, 2))
End If
Next i
PhraseMaj = Trim(PhraseMaj)
End Function

-------------------------------
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Désolé j'ai une petite erreur dans la fonction VBA. Voici la bonne version :

Option Explicit
'Abdel Elg
'23/01/2010

Function PhraseMaj(Phrase As String, Optional Except As String) As String
Dim s As String
Dim tabMots() As String
Dim i As Integer

Except = " " & Trim(Except) & " "
tabMots = Split(Phrase, " ")

For i = 0 To UBound(tabMots)
s = Trim(tabMots(i))
If InStr(1, Except, " " & s & " ", vbTextCompare) > 0 Then 'en minuscules
PhraseMaj = PhraseMaj & " " & LCase(s)
Else 'Nom Propre
PhraseMaj = PhraseMaj & " " & UCase(Left(s, 1)) & LCase(Mid(s, 2))
End If
Next i
PhraseMaj = Trim(PhraseMaj)
End Function
Dernière version de la fonction.
Celle ci gère les Majuscules des premiers mots meme en exception. De plus elle met en minuscule l' et d' mais met la 1ère lettre suivante en Maj.


Option Explicit
Option Compare Text
'Abdel Elg
'23/01/2010

Function PhraseMaj(Phrase As String, Optional Except As String) As String
Dim s As String
Dim tabMots() As String
Dim i As Integer

Except = " " & Trim(Except) & " "
tabMots = Split(Phrase, " ")

For i = 0 To UBound(tabMots)
s = Trim(tabMots(i))
If i > 0 And InStr(1, Except, " " & s & " ", vbTextCompare) > 0 Then 'en minuscules sauf le premier mot de la phrase
PhraseMaj = PhraseMaj & " " & LCase(s)
Else 'Nom Propre
If Left(s, 2) = "l'" Or Left(s, 2) = "d'" Then
If i > 0 Then
PhraseMaj = PhraseMaj & " " & LCase(Left(s, 1)) & "'" & UCase(Mid(s, 3, 1)) & LCase(Mid(s, 4))
Else
PhraseMaj = PhraseMaj & " " & UCase(Left(s, 3)) & LCase(Mid(s, 4))
End If
Else
PhraseMaj = PhraseMaj & " " & UCase(Left(s, 1)) & LCase(Mid(s, 2))
End If
End If
Next i
PhraseMaj = Trim(PhraseMaj)
End Function