• Initiateur de la discussion Initiateur de la discussion Turbo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Turbo

Guest
Comme indiqué dans le titre, j'ai un bouton qui active une macro qui " est sensé " me récupérer les initiales d'une personne dont le nom et le prénom sont contenue dans deux cellules différentes.

J'ai integrer une fonction qui " normalement " devrait me retourner les initiales du prénom ( si il est composé ).

Ex :

NOM -------------------- PRENOM---------------INITIALE
Dupont------------------Marie-Pierre-------------MPD

Je vous joins juste les codes, les fichiers en eux mêmes vous sont inutiles :

Code:
Private Sub Initiale_Click()
    
    Dim Prenom, Initiale As String
    Prenom = Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 16).Value
    MsgBox (Prenom)
    GetInitiale (Prenom)
    MsgBox (Prenom)
    Initiale = Prenom & Left(Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 2).Value, 1)
    Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 29).Value = Initiale
    
End Sub

Function GetInitiale(strChaine As String) As String

    Dim i As Integer
    Dim temp() As String
    temp = Split(strChaine, "-")
    strChaine = Left(strChaine, 1)
    For i = 1 To UBound(temp)
        strChaine = strChaine & Left(temp(i), 1)
    Next i
    
End Function

La fonction GetInitiale originale pompée du net, mais qui ne fait pas ce que je recherche également :

Code:
Function GetInitiale(strChaine As String) As String
Dim i As Integer
Dim temp() As String
temp = Split(strChaine, "-")
For i = 0 To UBound(temp)
  GetInitiale = GetInitiale & Left(temp(i), 1)
Next i
End Function

A chaque fois, ca me retourne le prénom en entier, et je ne comprends pas pourquoi ...

Merci de bien vouloir m'éclairer une nouvelle fois 🙄
 
Dernière modification par un modérateur:
Re : Fonction Initiale

Re


Au fait

Ils sont comment des prénoms dans tes cellules

Jean-Marie DUPONT ?

ou

Jean Marie DUPONT?

Lol apparement, c'est pas avec mon fichier 🙂

Ils doivent être de la forme ( comme indiqué dans mon premier message sur ce topic ) :

NOM---------PRENOM----------INITIALE
DUPONT----Jean-Marie----------JMD

Valeur que je cherche a écrire avec mon programme

Donc :

NOM---------PRENOM----------INITIALE
DUPONT----Jean Marie----------JD
 
Dernière modification par un modérateur:
Re : Fonction Initiale

RE

Quelle est ta version d'Excel?

En plus propre
Code:
Function Initiale(S)
'Groupes de discussion : microsoft.public.fr.excel
'De : Frédéric Sigonneau
'Date : Sat, 29 Nov 2003 01:12:12 +0100
'Local : Sam 29 nov 2003 01:12
'Objet : Re: extraire des initiales
Dim i&, j&, tmp$
  For i = LBound(Split(S)) To UBound(Split(S))
    tmp = Split(S)(i)
    If InStr(1, tmp, "-") > 0 Then
      For j = LBound(Split(tmp, "-")) To UBound(Split(tmp, "-"))
        Initiale = Initiale & Left(Split(tmp, "-")(j), 1)
      Next j
      End If
  Next
End Function
Code:
Sub en_plus_propre()
Dim Initiales As String
Initiales = Left(Range("A1").Text, 1) & " " & Initiale(Range("A1").Text)
MsgBox Initiales
End Sub
 
Re : Fonction Initiale

Je crois que personne ne comprend ce que je demande

Je pense pourtant l'avoir dit plusieurs fois :

A chaque fois, ca me retourne le prénom en entier, et je ne comprends pas pourquoi ...

Merci de bien vouloir m'éclairer une nouvelle fois 🙄

En faite, j'aimerai comprendre pourquoi mes fonctions GetInitiale ne marchent pas...
Pas " pomper " celle d'un autre ( même si a la base la fonction vient du net )


Je resume donc ma demande :

Je ne comprends pas pourquoi mes fonctions n'arrivent pas a retourner le résultat que je demande...
Les explications, et les données se trouvent dans mon premier message de ce topic.

Merci a vous 😉


Mais ce n'est pas ce que je recherche ^^

J'espère que ce coup ci, vous comprendez mieu :

Pourquoi ma fonction ne change pas la valeur de mon paramètre ?!?


Prenom ne change toujours pas de valeur après être passer dans ma fonction 🙁

Comme pour gagner du temps certains ont la facheuse tendance de ne pas relire (lire même des fois ) les messages postés en amont je vais récapituler les codes que j'ai testé, et je cherche a comprendre pourquoi il ne font pas ce que je demande, et non de nouveaux codes

Je vous remet donc les codes dont je ne parviens pas a comprendre pourquoi ils ne font pas ce que je leurs demande... ( Puisque certains ne lisent que le dernier message avant de répondre ... )

Code:
Private Sub Initiale_Click()
    
    Dim Prenom, Initiale As String
    Prenom = Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 16).Value
    MsgBox (Prenom)
    GetInitiale (Prenom)
    MsgBox (Prenom)
    Initiale = Prenom & Left(Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 2).Value, 1)
    Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 29).Value = Initiale
    
End Sub

Code:
Function GetInitiale(strChaine As String) As String

    Dim i As Integer
    Dim temp() As String
    temp = Split(strChaine, "-")
    strChaine = Left(strChaine, 1)
    For i = 1 To UBound(temp)
        strChaine = strChaine & Left(temp(i), 1)
    Next i
    
End Function

La fonction GetInitiale originale pompée du net, mais qui ne fait pas ce que je recherche également :

Code:
Function GetInitiale(strChaine As String) As String
Dim i As Integer
Dim temp() As String
temp = Split(strChaine, "-")
For i = 0 To UBound(temp)
  GetInitiale = GetInitiale & Left(temp(i), 1)
Next i
End Function

Pour Staple1600

Et les explications de mon problème :

NOM---------PRENOM----------INITIALE
DUPONT----Jean-Marie----------JMD

Valeur que je cherche a écrire avec mon programme

Donc :

NOM---------PRENOM----------INITIALE
DUPONT----Jean Marie----------JD


J'espère avoir tout résumé.
Je vous rejoins une nouvelle fois le fichier pour que vous fassiez vos tests :

PS : Je suis sur Excel 2003
 

Pièces jointes

Re : Fonction Initiale

Re


C'est sur qu'en t'énervant , on va encore plus avoir envie d'essayer de t'aider.

Bon courage (lol)


PS: Sans TES codes, j'obtiens le résultat escompté (pour NOM Prénom-Composé ainis que pour NOM PrénomESPACEComposé)
mais bon ....
 
Dernière édition:
Re : Fonction Initiale

Finalement je suis parvenue a trouver la réponse, je vous fait part du code que j'ai réussi a faire fonctionner :

Code:
Private Sub Initiale_Click()

    Dim Prenom, Initiale[COLOR="Magenta"], PC[/COLOR] As String
    Prenom = Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 16).Value
    [COLOR="Magenta"]PC =[/COLOR] GetInitiale(Prenom)
    Initiale = [COLOR="Magenta"]PC[/COLOR] & Left(Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 2).Value, 1)
    Workbooks("Formulaire heures modif 08.xls").Sheets("Mensuel").Cells(3, 29).Value = Initiale

End Sub

Code:
Function GetInitiale([COLOR="Magenta"]ByVal[/COLOR] strChaine As String) As String

    Dim i As Integer
    Dim temp() As String
    temp = Split(strChaine, "-")
    If strChaine = temp(0) Then
        temp = Split(strChaine, " ")
        For i = 0 To UBound(temp)
            GetInitiale = GetInitiale & Left(temp(i), 1)
        Next i
    Else
        For i = 0 To UBound(temp)
            GetInitiale = GetInitiale & Left(temp(i), 1)
        Next i
    End If

End Function

Ce qu'il a fallut que je rajoute ou modifie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
323
Réponses
5
Affichages
910
Réponses
3
Affichages
922
Réponses
4
Affichages
733
Retour