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

Résolu/Fermé
francois8484 - 21 juin 2022 à 15:28
 francois8484 - 21 juin 2022 à 16:27
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
A voir également:

2 réponses

ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
Modifié le 21 juin 2022 à 16:22
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
ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
21 juin 2022 à 16:24
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
francois8484
21 juin 2022 à 16:27
Merci beaucoup pour votre aide. Un grand merci
Cordialement

François
0