Afficher Initials du prénom

Bonjour,

Dans un fichier, je voudrais afficher les initials du prénom sachant que dans le lot j'ai des prénoms composés.

Ex : Laurent => L

Jean-Paul => JP

Marie Louise => ML

Je sais afficher la première lettre d'un nom (left(A)), mais comment faire pour les prénoms composés ???

Merci d'avance,

Coco

Bonjour

Code à placer dans un module de ton classeur

Public Function Initiale(vCell As String) As String
Dim I As Byte
Dim vCar As String
'Réinitialise la valeur de la cellule "hôte" à vide
Initiale = ""
'Utilisation de la fonction NOMPROPRE d'excel, pour mettre les caractères en Majuscule/Minuscule
vCell = Application.Proper(vCell)
'Définition de la boucle, en foncion du nombre de caractères de la chaîne passée
For I = 1 To Len(vCell)
   'Prend un caractère de la chaîne, position en fonction de la valeur I
   vCar = Mid(vCell, I, 1)
   'Test pour savoir si le caractère est une majuscule
   Select Case Asc(vCar)
   Case 65 To 90
      'Caractère ASC compris le A ... Z
      'Rajout du Caractère dans la cellule "hôte"
      Initiale = Initiale + vCar
   End Select
Next I
End Function

L'utilisation dans la cellule, A1 contenant la donnée Jean-Pau

=Initiale(A1)

@+Jean-Marie

RE...

cela fonctionne aussi en utilisant "A" ... "Z"

Public Function Initiale(vCell As String) As String
Dim I As Byte
Dim vCar As String
'Réinitialise la valeur de la cellule "hôte" à vide
Initiale = ""
'Utilisation de la fonction NOMPROPRE d'excel, pour mettre les caractères en Majuscule/Minuscule
vCell = Application.Proper(vCell)
'Définition de la boucle, en foncion du nombre de caractères de la chaîne passée
For I = 1 To Len(vCell)
   'Prend un caractère de la chaîne, position en fonction de la valeur I
   vCar = Mid(vCell, I, 1)
   'Test pour savoir si le caractère est une majuscule
   Select Case vCar
   Case "A" To "Z"
      'Caractère ASC compris le A ... Z
      'Rajout du Caractère dans la cellule "hôte"
      Initiale = Initiale + vCar
   End Select
Next I
End Function

@+Jean-Marie

Bonjour

La même chose avec une formule (qui s'incrémente normalement)

=SI(NON(ESTERREUR(GAUCHE(A1;1)&STXT(A1;CHERCHE(CAR(45);A1)+1;1)));GAUCHE(A1;1)&STXT(A1;CHERCHE(CAR(45);A1)+1;1);SI(NON(ESTERREUR(GAUCHE(A1;1)&STXT(A1;CHERCHE(" ";A1)+1;1)));GAUCHE(A1;1)&STXT(A1;CHERCHE(" ";A1)+1;1);GAUCHE(A1;1)))

Cordialement,

Amadéus

Super ! Merci!

Par contre, je ne sais pas ce qu'est un modile d'Excel ... C'est un module ?

Merci de ton aide,

Coco

Oups ... je vient de me relire ......

Je voulais dire : je ne sais pas ce qu'est un module ? est-une macro ?

Merci

Sorry ... c'est lundi!

Coco

Merci pour la formule,

Par contre, j'ai Excel en anglais.

Comment puis-je traduire "&TXT" ?

Merci,

Coco

Re...

Voici le fichier, avec le code dans le module VBA

https://www.excel-pratique.com/~files/doc/InitialeVBA.xls

@+Jean-Marie

Merci Jean-Marie.

Je me sens super nulle ... en fait, je découvre les macros grace à internet.

C'est pas gagné!

Comment je fais pour que ta fonction fonctionne dans mon fichier ?

Merci d'vance,

Coco

Re...

Dans la première zone en haut sur la gauche, tu as la fênetre "projet", tu dois voir le classeur initiale et ton classeur si il est ouvert.

1) Copie toutes les lignes de la function

2) Sélectionne ton classeur dans la partie projet, puis clique sur le menu Insertion/Module.

3) Dans la nouvelle fenêtre colle simplement le code copier

4) Quitte l'éditeur VBA (menu Fichier/Fermer et retourner à Excel)

5) Ferme le classeur InitialeVBA.xls

6) Place ta formule dans la cellule

=Initiale(...)

7) Enregistre

Voilà

@+Jean-Marie

Rechercher des sujets similaires à "afficher initials prenom"