séparer une chaîne de caractère avec une Majuscule comme séparateur

  • Initiateur de la discussion Initiateur de la discussion taito
  • 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 !

taito

XLDnaute Nouveau
Bonjour 🙂

je voulais savoir si c'est possible de séparer une chaîne de caractère avec une Majuscule comme séparateur
Exemple: JosephKeller -> Joseph Keller

Voila exactement le type de donnée que j'ai dans mon Excel

George PapanicolaouNew York University
Joseph HarrisHarvard University
Steven KleimanHarvard University
Boris GnedenkoLomonosov Moscow State University

Prenom NomUniversité

Merci pour votre assistance.
 
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Bonsoir taito, bienvenue sur XLD,

Voyez le fichier joint avec cette fonction VBA placée dans un module standard (Alt+F11) :

Code:
Function SepareMajuscule$(t$) '$ => As String
Dim s, i%, j% '% => As Integer
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then
      t = Left(t, j - 1) & " " & Mid(t, j)
      j = j + 1
    End If
  Next j
  s(i) = t
Next i
SepareMajuscule = Join(s)
End Function
A+
 

Pièces jointes

Dernière édition:
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Bonjour gilbert_RGI,

Ton idée est bonne mais pourquoi ne pas utiliser la matrice-vecteur créée par Split :

Code:
Function SepareMajuscule(t$)
Dim s, i%, j%
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then
      t = Left(t, j - 1) & " " & Mid(t, j)
      j = j + 1
    End If
  Next j
  s(i) = t
Next i
SepareMajuscule = Split(Join(s)) 'matrice-vecteur horizontal
End Function
Fichier (2).

Evidemment il ne faut pas de prénoms ou noms composés...

A+
 

Pièces jointes

Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Juste pour montrer une autre façon de faire 😱

je ne conteste pas ta façon ( + compliquée pour celui qui ne maitrise pas les tableaux) ce qui peut être le cas pour un nouvel arrivant.

Cordialement
 
Re : séparer une chaîne de caractère avec une Majuscule comme séparateur

Re,

Il y a juste à connaître la fonction Split, très utilisée en VBA, sinon c'est l'occasion de s'y mettre.

Si la majuscule qui sépare le nom de l'université est toujours unique dans le texte c'est simple :

Code:
Function SepareMajuscule(t$)
Dim s, i%, j%
s = Split(t)
For i = 0 To UBound(s)
  t = s(i)
  For j = 2 To Len(t)
    If Mid(t, j, 1) = UCase(Mid(t, j, 1)) Then _
      t = Left(t, j - 1) & Chr(1) & Mid(t, j): Exit For
  Next j
  s(i) = t
Next i
SepareMajuscule = Split(Join(s), Chr(1)) 'matrice-vecteur horizontal
End Function
Fichier (3).

Plus de problème avec les prénoms ou noms composés.

A+
 

Pièces jointes

Dernière édition:
- 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

Retour