Microsoft 365 éclatement d'une cellule

Maël30

XLDnaute Nouveau
chère communauté
je cherche à séparer une cellule en plusieurs colonnes

en partant d'une cellule comme ci dessous:
17/08/21 03:08 | Prevision | Commercial | 1313 COLIS
27/02/22 02:02 | Prevision Ferme | Client | 1039 COLIS

pouvoir obtenir comme ci dessous:
17/08/21
03:08​
PrevisionCommercial1313 COLIS
27/02/2022​
02:02Prevision FermeClient1039 COLIS

vous trouverez ci joint le fichier.
Existe t'il une formule pour obtenir ce résultat?

merci de votre aide,
Mmf
 

Pièces jointes

  • exemple.xlsx
    15.1 KB · Affichages: 9

patricktoulon

XLDnaute Barbatruc
bonjour
sinon en vba tu te fait une petite fonction de rien du tout
VB:
Sub test()'juste pour tester
    MsgBox join(stringToArray(CStr([A1].Value)))
End Sub

Function stringToArray(str As String)
   Dim i&, dat$
   str = Replace(str, Chr(10), "|")
    For i = Len(str) To 8 Step -1
        Debug.Print Mid(str, i - 7, 8)
        dat = Trim(Mid(str, i - 7, 8))
        If IsDate(dat) Then
            If Format(dat, "dd/mm/yy") = dat Then str = Replace(str, dat, dat & "|")
        End If
    Next
    str = Replace(Replace(str, " |", "|"), "| ", "|") & String(100, "|")
    stringToArray = Split(str, "|")
End Function
en suite dans ta feuille "transformé"
tu selection x cellules(meme plus qu'il n'en faut si tu veux)
et tu lui met cette formule
=stringToArray(intial!A1)
que tu valide en matriciel (CTRL+MAJ+ENTER) si tu est dans office inférieur a 365

et voila
demo.gif
 

Staple1600

XLDnaute Barbatruc
Bonjour patricktoulon

Je préfère aller au plus simple: une fonction native d'Excel
le demandeur évoquait une formule
Je propose donc une formule

Ou plutôt deux formules
en B1
=SUBSTITUE(A1;CAR(10);"|")
puis en C1
=FRACTIONNER.TEXTE(B1;"|";;VRAI)

Pour ce qui est de la date et de l'heure, je sais les lire quand elles sont dans une seule et même cellule ;)
 

Staple1600

XLDnaute Barbatruc
Re

Pour séparer heure et date, une petite adaptation
en B1
=SUBSTITUE(A1;CAR(10);" | ")
en C1
=FRACTIONNER.TEXTE(SUBSTITUE(B1;"|";"");CAR(32);;VRAI)

Dans tous les cas, je priorise ;)
D'abord les formules Excel avant de sortir le VBA ;)
(Surtout si l'utilisateur final n'est pas trop à l'aise avec le VBA)
 

Maël30

XLDnaute Nouveau
bonjour à tous,
Je tenais déjà à vous remercier pour votre grande aide.
Ma demande évolue quelque peu car la case n'est pas uniformément complétée. Elle peut être sous 3 formes
1°)
29/12/22 03:12 | Prevision | 850 UVC
2°)
07/10/22 10:10 | Prevision | 313 UVC
16/11/22 09:11 | Reservation | 418 UVC
3°)
23/08/22 01:08 | Prevision | 292 UVC
23/11/22 03:11 | Reservation | 248 UVC
12/01/23 09:01 | Prevision Ferme | 313 UVC

Est ce qu'il serait possible d'avoir un rendu comme ci dessous tenant compte de ces 3 formes possibles
Historique Qte PrevDate PrévisionPrevisionDate RéservationReservationDate Prévision FermePrévision ferme
29/12/22 03:12 | Prevision | 850 UVC
29/12/2022​
850​
07/10/22 10:10 | Prevision | 313 UVC
16/11/22 09:11 | Reservation | 418 UVC
07/10/2022​
313​
16/11/2022​
418​
23/08/22 01:08 | Prevision | 292 UVC
23/11/22 03:11 | Reservation | 248 UVC
12/01/23 09:01 | Prevision Ferme | 313 UVC
23/08/2022​
292​
23/11/2022​
248​
12/01/2023​
313​

vous trouverez le fichier source ci joint.
Merci encore par avance de votre grande aide,

Mmf
 

Pièces jointes

  • test2.xlsx
    17 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

J'ai ouvert votre fichier et ... bon ben elle veut qu'on reparte de zéro.
Aucune des méthodes employées plus haut n'a été utilisée.
Alors se sera sans moi, car vous prendre par la main dès que vous aurez une nouvelle colonne qui s'ajoutera, sans que vous ayez rien appris entre temps, n'est pas le but que je poursuis ici.
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 950
Membres
103 404
dernier inscrit
sultan87