Microsoft 365 Extraire Majuscules - minuscules et inverser avec espace

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous, bon dimanche 🙂

Je ne sais pas faire le code de mon besoin.

Contexte :
A3 = AlexandreTRUC
B3 = ATRUC (résultat Sylvanu)
C3 = TRUC Alexandre (Résultat souhaité)

Dans ce fil : https://excel-downloads.com/threads/extraire-un-texte-en-majuscule-dans-une-cellule.20063859/
Notre sylvanu a concocté une fonction que j'ai mise dans mon fichier test (B3)
Elle ne fonctionne pas tout à fait pour moi car la 1ère lettre (prénom) est aussi une majuscule.
Je n'arrive pas à modifier le code pour obtenir TRUC Alexandre (Résultat souhaité)

Pourriez-vous m'aider svp ?
Je joins le petit fichier test et je continue à bidouiller...
Un grand merci à tous
🙂
 

Pièces jointes

Bonjour Lionel,
Très surement optimisable, cette fonction :
VB:
Function NomMaj(Chaine$)
    Dim P%, Q%, N%
    P = 1
    For N = 1 To Len(Chaine)
        If Mid(Chaine, N, 1) = UCase(Mid(Chaine, N, 1)) And Mid(Chaine, N + 1, 1) = UCase(Mid(Chaine, N + 1, 1)) Then
            P = N: Exit For
        End If
    Next N
    NomMaj = Mid(Chaine, P)
    Q = 1
    For N = 2 To Len(Chaine)
        If Mid(Chaine, N, 1) <> UCase(Mid(Chaine, N, 1)) And Mid(Chaine, N + 1, 1) = UCase(Mid(Chaine, N + 1, 1)) Then
            Q = N: Exit For
        End If
    Next N
    NomMaj = NomMaj & " " & Mid(Chaine, 1, Q)
    If NomMaj = 0 Then NomMaj = ""
End Function
 

Pièces jointes

Très surement optimisable
Bien évidemment ! 😂

VB:
Function NomMaj(Chaine$)
    Dim P%, N%
    P = 1
    For N = 1 To Len(Chaine)
        If Mid(Chaine, N, 1) = UCase(Mid(Chaine, N, 1)) And Mid(Chaine, N + 1, 1) = UCase(Mid(Chaine, N + 1, 1)) Then
            P = N: Exit For
        End If
    Next N
    NomMaj = Mid(Chaine, P) & " " & Mid(Chaine, 1, P - 1)
    If NomMaj = 0 Then NomMaj = ""
End Function
 

Pièces jointes

Bien évidemment ! 😂

VB:
Function NomMaj(Chaine$)
    Dim P%, N%
    P = 1
    For N = 1 To Len(Chaine)
        If Mid(Chaine, N, 1) = UCase(Mid(Chaine, N, 1)) And Mid(Chaine, N + 1, 1) = UCase(Mid(Chaine, N + 1, 1)) Then
            P = N: Exit For
        End If
    Next N
    NomMaj = Mid(Chaine, P) & " " & Mid(Chaine, 1, P - 1)
    If NomMaj = 0 Then NomMaj = ""
End Function
Bjr sylvanu 🙂
Excellent, super top Merci à toi
🙂
 
Bonjour
Avec une matricielle
VB:
=SI(CODE(STXT(A3;2;1))>=97;STXT(A3;EQUIV(VRAI;EXACT(STXT(A3;LIGNE($1:$255);3);MAJUSCULE(STXT(A3;LIGNE($1:$255);3)));0);999)&" "&GAUCHE(A3;EQUIV(VRAI;EXACT(STXT(A3;LIGNE($1:$255);3);MAJUSCULE(STXT(A3;LIGNE($1:$255);3)));0)-1);A3)
 

Pièces jointes

bonjour à tous
c'est assez simple en fait en simplifiant la version de @sylvanu
en se servant simplement de i en sortie de boucle
VB:
Function MAJ(Chaine$)
   dim I&
 For i = 2 To Len(Chaine)
        If Mid(Chaine, i, 1) = UCase(Mid(Chaine, i, 1)) Then Exit For
    Next
    MAJ = Mid(Chaine, i) & " " & Mid(Chaine, 1, i - 1)
End Function
formule "=MAJ(A3)"
à etendre
 
bonjour à tous
c'est assez simple en fait en simplifiant la version de @sylvanu
en se servant simplement de i en sortie de boucle
VB:
Function MAJ(Chaine$)
   dim I&
 For i = 2 To Len(Chaine)
        If Mid(Chaine, i, 1) = UCase(Mid(Chaine, i, 1)) Then Exit For
    Next
    MAJ = Mid(Chaine, i) & " " & Mid(Chaine, 1, i - 1)
End Function
formule "=MAJ(A3)"
à etendre
Excellent aussi...
Merci Patrick
🙂
 
- 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

Discussions similaires

A
Réponses
6
Affichages
1 K
agnes
A
Retour