Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 01/11/2006, 22h28   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juillet 2006
Messages: 44
Par défaut première lettre de chaque mot

Salut a vous tous, encore moi...
j'ai déja essayer avec NomPropre, il met la première lettre en majuscule et ca c'est ok, mais il me remet le mot en entier, mais j'aimerai avoir seulement la Première lettre de chaque mot de la cellule ex :

camion bleu donnerai CB
vélo rouge pale donnerai VRP
auto verte donnerai AV
ect....

en avance merci

Marcmarc
xpxpplus est déconnecté   Réponse avec citation
ANNONCES
Vieux 01/11/2006, 23h22   #2 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Salut,

Je te propose une fonction personnalisée, à coller dans un module vba standard, puis dans excel : insertion /fonction/ personnalisée.

Code:
 Function PremLettre(Texte As String) As String
Dim i%
Dim Str$

    Application.Volatile
    Str = Mid(Texte, 1, 1)
    For i = 2 To Len(Texte)
        If Mid(Texte, i - 1, 1) = " " Then Str = Str & Mid(Texte, i, 1)
    Next i
    PremLettre = Str
End Function
Vois si ça te va.


Edition:
Je pense que ça demande à être affiné pour gérer les cas particuliers (espaces multiples par ex)
Tu nous diras s'il faut aller plus loin.

Fichiers attachés
Type de fichier : xls Premlettre.xls (21,5 Ko, 10 affichages)
__________________

Et un peu de pub perso!

Dernière modification par Luki ; 01/11/2006 à 23h28.
Luki est déconnecté   Réponse avec citation
Vieux 01/11/2006, 23h33   #3 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Re,

Version corrigée pour gérer les espaces multiples:

Code:
Function PremLettre(Texte As String) As String
    Dim i%
    Dim Str$
    
    Application.Volatile
    Str = Mid(Texte, 1, 1)
    For i = 2 To Len(Texte)
        If Mid(Texte, i - 1, 1) = " " And Mid(Texte, i, 1) <> " " Then Str = Str & Mid(Texte, i, 1)
    Next i
    PremLettre = Str
End Function
Bonne soirée
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 02/11/2006, 09h04   #4 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Re,

je viens de relire ton post, alors recorrection pour afficher le résultat en majuscules:
Code:
Function PremLettre(Texte As String) As String
    Dim i%
    Dim Str$
    
    Application.Volatile
    Str = Mid(Texte, 1, 1)
    For i = 2 To Len(Texte)
        If Mid(Texte, i - 1, 1) = " " And Mid(Texte, i, 1) <> " " Then Str = Str & Mid(Texte, i, 1)
    Next i
    PremLettre = UCase(Str)
End Function
A te lire
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 02/11/2006, 10h20   #5 (permalink)
XLDnaute Accro
 
Avatar de nat54
 
Date d'inscription: août 2005
Version Excel : Excel 2000 (PC)
Messages: 1 141
Par défaut Re : première lettre de chaque mot

Bonjour,

Il doit y avoir moyen de le faire avec de 'simples' formules et non en VB
J'ai réussi quand il y a 2 mots, je me suis arrêtée là..
Fichiers attachés
Type de fichier : xls Classeur1.xls (14,0 Ko, 23 affichages)
__________________
"Celui qui croit constamment, réussit forcément" (A.GIROD)
nat54 est déconnecté   Réponse avec citation
Vieux 02/11/2006, 10h31   #6 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Nat,
Ton exemple : !!!!! MDR!!!

C'est sûr que ce doit être possible, avec 10 feuilles xl, 3 PC en réseau, 10 litres café et 3 flacons de collyre! (c'est vrai, je ne suis pas formuliste, ça se voit?). A moins qu'un des super spécialiste trouve une solution plus courte...

Mais pourquoi se priver d'une fonction personnalisée (c'est une formule au final) si ça peut simplifier les choses?

Si c'est pour le défi, d'accord. Sinon,......

Bonne journée à toi.
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 02/11/2006, 10h48   #7 (permalink)
XLDnaute Barbatruc
 
Avatar de Hervé
 
Date d'inscription: février 2005
Localisation: Saint-Etienne
Version Excel : Excel XP (PC)
Messages: 4 454
Par défaut Re : première lettre de chaque mot

bonjour

une autre syntaxe vba, bien moins digeste que la procédure de l'ami luki.

Code:
Public Function premlettre2(cellule As Range) As String
Dim i As Integer

For i = 0 To UBound(Split(cellule, " "))
    premlettre2 = UCase(premlettre2 & Left(Split(cellule, " ")(i), 1))
Next i

End Function
salut
Hervé est déconnecté   Réponse avec citation
Vieux 02/11/2006, 11h01   #8 (permalink)
XLDnaute Accro
 
Avatar de nat54
 
Date d'inscription: août 2005
Version Excel : Excel 2000 (PC)
Messages: 1 141
Par défaut Re : première lettre de chaque mot

Citation:
Envoyé par Luki
Nat,
Ton exemple : !!!!! MDR!!!

C'est sûr que ce doit être possible, avec 10 feuilles xl, 3 PC en réseau, 10 litres café et 3 flacons de collyre! (c'est vrai, je ne suis pas formuliste, ça se voit?). A moins qu'un des super spécialiste trouve une solution plus courte...

Mais pourquoi se priver d'une fonction personnalisée (c'est une formule au final) si ça peut simplifier les choses?

Si c'est pour le défi, d'accord. Sinon,......

Bonne journée à toi.
Oui c'était un pti défi ...
J'aurais jamais trouvé ta fonction par exemple.
d'ailleurs je ne la comprends pô..

et puis masquer les colonnes ca existe
__________________
"Celui qui croit constamment, réussit forcément" (A.GIROD)
nat54 est déconnecté   Réponse avec citation
Vieux 02/11/2006, 11h09   #9 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Salut Hervé,

J'imaginais (et j'attendais!) bien que quelqu'un allait trouver plus court!

Bravo!
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 02/11/2006, 14h36   #10 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Pour Nat, qui comprends pô.... ( et ceusses qui veulent)

En Pj, les deux dernières fonctions proposées avec explications de texte en commentaires.

Merci Hervé, jai découvert "split" que je ne connaissais pas.

Bonne journée
Fichiers attachés
Type de fichier : xls ExplicationsPourNat.xls (27,0 Ko, 25 affichages)
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 02/11/2006, 15h02   #11 (permalink)
XLDnaute Accro
 
Avatar de nat54
 
Date d'inscription: août 2005
Version Excel : Excel 2000 (PC)
Messages: 1 141
Par défaut Re : première lettre de chaque mot

Merci bien
__________________
"Celui qui croit constamment, réussit forcément" (A.GIROD)
nat54 est déconnecté   Réponse avec citation
Vieux 02/11/2006, 15h12   #12 (permalink)
XLDnaute Barbatruc
 
Avatar de Hervé
 
Date d'inscription: février 2005
Localisation: Saint-Etienne
Version Excel : Excel XP (PC)
Messages: 4 454
Par défaut Re : première lettre de chaque mot

re

merci luki pour l'exemple.

faut que j'arrete de minimiser les codes, ca devient incompréhensible.

donc, le meme code un peu plus etoffé :

Code:
Function PREM_LETTRES2(cellule As Range) As String
Dim tablo, element
Dim texte As String

'crée un tablo variant comportant toutes les sous chaines de la valeur de
'cellule séparées par un espace
tablo = Split(cellule, " ")

'boucle sur chaque élément du tablo
For Each element In tablo
    'extrait le premier caractere à gauche de cette élément
    'et concatene avec le texte
    texte = texte & Left(element, 1)
Next element

'renvoi du texte à la fonction
PREM_LETTRES2 = UCase(texte)
End Function
salut
Hervé est déconnecté   Réponse avec citation
Vieux 15/12/2006, 16h46   #13 (permalink)
XLDnaute Nouveau
 
Avatar de jipi06
 
Date d'inscription: septembre 2006
Localisation: Nice
Version Excel : Excel 2003 (PC)
Messages: 27
Par défaut Re : première lettre de chaque mot

Bonjour à tous, je reprends ce fil car j'ai un problème voisin mais un peu plus complexe :
j'ai une colonne A avec des adresses de ce type :
3 RUE DE LA POISSONNERIE

J'applique dessus une formule type NomPropre() : résultat en colonne B
3 Rue De La Poissonnerie

En fait je veux obtenir :
3 Rue de la Poissonerie


Merci à tous de votre aide.

A+
jipi06 est déconnecté   Réponse avec citation
Vieux 17/12/2006, 23h45   #14 (permalink)
XLDnaute Accro
 
Avatar de Luki
 
Date d'inscription: février 2005
Version Excel : Excel 2000 (PC)
Messages: 1 103
Envoyer un message via MSN à Luki
Par défaut Re : première lettre de chaque mot

Salut Jipi,

auras tu toujours " de la " dans ton adresse ou aussi "rue DU bac" ou encore " Rue Neuve" ou "Grande Rue" ?

A te lire
__________________

Et un peu de pub perso!
Luki est déconnecté   Réponse avec citation
Vieux 18/12/2006, 11h17   #15 (permalink)
XLDnaute Barbatruc
 
Avatar de Hervé
 
Date d'inscription: février 2005
Localisation: Saint-Etienne
Version Excel : Excel XP (PC)
Messages: 4 454
Par défaut Re : première lettre de chaque mot

bonjour

on pourrais imaginer faire un tableau des mots à exclure, exemple en piece jointe.

Code:
Sub Bouton1_QuandClic()
Dim c As Range
Dim i As Byte
Dim tablo, aexclur

aexclur = Array("de", "du", "la", "des")

For Each c In Range("a1:a" & Range("a65536").End(xlUp).Row)
    tablo = Split(c, " ")
    For i = 1 To UBound(tablo)
        If Not IsError(Application.Match(tablo(i), aexclur, 0)) Then
           tablo(i) = LCase(tablo(i))
        Else
            tablo(i) = Application.Proper(tablo(i))
        End If
    Next i
    c.Offset(0, 1) = Join(tablo, " ")
Next c

End Sub
salut
Fichiers attachés
Type de fichier : zip Classeur3.zip (7,9 Ko, 6 affichages)
Hervé est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Inputbox...... premiere lettre en maj Evelynetfrancois Forum Excel 5 27/02/2006 01h39
tt mettre en minuscule sauf la première lettre so Forum Excel 4 17/08/2005 13h22
récupérer la première lettre dans un textbox daniel Forum Excel 5 28/03/2005 17h36
TextBox et renvois premiere lettre en Maj Riri Forum Excel Downloads - Archives 2 01/06/2004 23h28
première lettre d'un mot en majuscule dans une textbox ? Syl Forum Excel Downloads - Archives 11 18/08/2003 10h26


Fuseau horaire GMT +2. Il est actuellement 00h46.


(C) 2006 Excel Downloads