Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fonction Initiale

  • 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

Finalement pour pas que vous vous embettiez a reconstituer un fichier excel comme le mien pour vos tests, je vous joins le fichier Excel en question :
 

Pièces jointes

Re : Fonction Initiale

Merci du lien et de ta fonction Staple1600 😉

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 )
 
Re : Fonction Initiale

Désolé pour le triple post.

Je up, car je pense pas que ma question soit bien compliquée pour les pro-vbaistes qui arpentent ce forum, et que j'aurai un peu besoin d'explication 😀

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 😉
 
Re : Fonction Initiale

Essai cela!
Function GetInitiale(strChaine)

Dim i As Integer
Dim temp
temp = InStr(1, strChaine, "-")
s = Left(strChaine, 1)
GetInitiale = s & Mid(strChaine, temp + 1, 1)
'For i = 1 To UBound(temp)
'GetInitiale = strChaine & Left(temp(0), 1)
'Next i
 
Re : Fonction Initiale

Merci de ta fonction sousou 😉

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 ?!?

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(ByRef Prenom As String)
    Dim i As Integer
    Dim temp() As String
    temp = Split(Prenom, "-")
    Prenom = ""
    For i = 0 To UBound(temp)
           Prenom = Prenom & Left(temp(i), 1)
    Next i

End Function

Voici le fichier, y'a juste a cliquer sur le bouton "Initiale =>" pour executer ce bout de programme.

Merci 😛
 

Pièces jointes

Re : Fonction Initiale

Bonjour


Ca marche mieux comme ça non
Code:
Function GetInitiale(ByRef Prenom As String)
    Dim i As Integer
    Dim temp() As String
    temp = Split(Prenom, "-")
    Prenom = ""
    For i = 0 To UBound(temp)
           Prenom = Prenom & Left(temp(i), 1)
    Next i
[B] GetInitiale = Prenom[/B]
End Function
 
Dernière édition:
Re : Fonction Initiale

Merci encore Staple1600 ( ton avatar est mieu au faite ^^ )

Mais malheuresement, ca ne change absolument rien a mon programme...

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

Non plus Staple1600, ca c'est la fonction originale comme je l'ai deja montré plus haut 😉


Edit : Vive les éditions, ca a crée une nouvelle réponse 😡
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…