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

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


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

Je m'énerve pas, je souligne certains points que certains ne voient pas ...

Merci de votre aide, même si personne ne peut m'aider apparement ...

Et merci pour les codes.
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…