Excel Mac : Changer ordre des mots au sein d'une même cellul

Résolu
francois8484 -  
 francois8484 -
Bonjour,

Je dois changer l'ordre des noms et prénoms en supprimant la virgule mais en gardant le slash, sans doute l'exemple sera plus parlant :

Actuellement j'ai en A1 = CAGE, JOHN / MARTIELLO, DAVIDE / UGOLETTI, PAOLO
Je souhaiterai en A1 : JOHN CAGE / DAVIDE MARTIELLO / PAOLO UGOLETTI

Après plusieurs recherches, je n'ai pas trouvé de résultats probant, donc si quelqu'un à une idée je l'en remercie grandement.

Bien à vous
François

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Avec une fonction personnalisée (macro)
    Option Explicit
    
    Public Function InverseOrdre(ByVal s As String)
    Dim rv As Long, rs As Long, ss As String
    rs = InStr(1, s, "/")
    If rs = 0 Then
      rv = InStr(1, s, ",")
      InverseOrdre = Right(s, Len(s) - rv - 1) & "," & Left(s, rv - 1)
    Else
      ss = Left(s, rs - 1)
      rv = InStr(1, ss, ",")
      InverseOrdre = Right(ss, Len(ss) - rv - 1) & "," & Left(ss, rv - 1) & " / " & InverseOrdre(Right(s, Len(s) - rs))
    End If
    End Function
    

    https://www.cjoint.com/c/LFvov1lfurB
    Alt-F11 pour accéder au code (dans Module 1)

    Cdlmnt
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Oups, j'ai oublié de supprimer les virgules
    Public Function InverseOrdre(ByVal s As String)
    Dim rv As Long, rs As Long, ss As String
    rs = InStr(1, s, "/")
    If rs = 0 Then
      rv = InStr(1, s, ",")
      InverseOrdre = Right(s, Len(s) - rv - 1) & Left(s, rv - 1)
    Else
      ss = Left(s, rs - 1)
      rv = InStr(1, ss, ",")
      InverseOrdre = Right(ss, Len(ss) - rv - 1) & Left(ss, rv - 1) & " / " & InverseOrdre(Right(s, Len(s) - rs))
    End If
    End Function

    Cdlmnt
    0
    1. francois8484
       
      Merci beaucoup pour votre aide. Un grand merci
      Cordialement

      François
      0