Double actions concomittantes
Bonjour,
Je souhaiterai traiter des centaines de lignes de la Feuille 1 vers la Feuille 2
Dans la Feuille 1 chaque ligne est de type csv
Est-il possible de faire une double actions dans des cellules se trouvant dans Feuille 2 ?
Je m'explique, 2 actions concomitantes s'effectueraient en A2 et A3 (réarrangement et formatage)
Dans la cellule A1 de la Feuille 1 on a 1,"Mar 1, 2022 07:08:24","Mar 1, 2022 08:25:26"
Dans la Feuille 2 je souhaiterai avoir en A1 --> 1 en A2 --> 01/03/2022 07:08:24 en A3 --> 01/03/2022 08:25:26
Autrement dit, peut-on imbriquer CHERCHE + SUBSTITUE à cette formule ?
=CNUM(STXT('Feuille 1'!A1;5;CHERCHE(",";'Feuille 1'!A1)-CHERCHE(" ";'Feuille 1'!A1)-1)&"/"&RECHERCHEV(GAUCHE('Feuille 1'!A1;3);Références!$A$1:Références!$B$12;2;0)&"/"&STXT('Feuille 1'!A1;8;5)&" "&DROITE('Feuille 1'!A1;8))
Voir fichier joint
Merci
Bonjour :
La fonction ci-dessous donne les résultats suivants :
Vos données en Feuil 1
Dans votre Feuil2. Le résultat de la fonction donne une véritable date. Si la date est incohérente, aucune valeur n'apparaît dans la cellule.
Il faut passer votre tableau de références en tableau structuré baptisé "t_Mois"
Option Explicit
Function SplitChaine(ByVal ChaineAtraiter As String, ByVal Position As Integer) As Variant
Dim I As Integer
Dim AireMois As Range, AireNumeros As Range
Dim TabChaine As Variant, TabMois As Variant, TabJour As Variant, MoisEnCours As Integer, JourEnCours As Variant
Set AireMois = Range("t_Mois[Mois]"): Set AireNumeros = Range("t_Mois[Numéro]")
TabChaine = Split(ChaineAtraiter, ",""")
Select Case Position
Case 1
SplitChaine = TabChaine(0)
Case 2
TabMois = Split(TabChaine(1), ",")
For I = 1 To AireMois.Count
If InStr(1, TabMois(0), AireMois(I), vbTextCompare) > 0 Then
MoisEnCours = AireNumeros(I)
End If
Next I
TabJour = Split(TabMois(0), " ")
JourEnCours = Mid(Trim(TabJour(1)), 1, Len(Trim(TabJour(1))))
If IsDate(CDate(Format(CStr(JourEnCours), "00") & "/" & Format(CStr(MoisEnCours), "00") & "/" & Mid(Trim(TabMois(1)), 1, Len(Trim(TabMois(1))) - 1))) Then
SplitChaine = Format(CDate(Format(CStr(JourEnCours), "00") & "/" & Format(CStr(MoisEnCours), "00") & "/" & Mid(Trim(TabMois(1)), 1, Len(Trim(TabMois(1))) - 1)), "dd/mm/yyyy hh:mm:ss")
Else
SplitChaine = 0
End If
Case 3
TabMois = Split(TabChaine(2), ",")
For I = 1 To AireMois.Count
If InStr(1, TabMois(0), AireMois(I), vbTextCompare) > 0 Then
MoisEnCours = AireNumeros(I)
End If
Next I
TabJour = Split(TabMois(0), " ")
JourEnCours = Mid(Trim(TabJour(1)), 1, Len(Trim(TabJour(1))))
If IsDate(CDate(Format(CStr(JourEnCours), "00") & "/" & Format(CStr(MoisEnCours), "00") & "/" & Mid(Trim(TabMois(1)), 1, Len(Trim(TabMois(1))) - 1))) Then
SplitChaine = Format(CDate(Format(CStr(JourEnCours), "00") & "/" & Format(CStr(MoisEnCours), "00") & "/" & Mid(Trim(TabMois(1)), 1, Len(Trim(TabMois(1))) - 1)), "dd/mm/yyyy hh:mm:ss")
Else
SplitChaine = 0
End If
End Select
Set AireMois = Nothing: Set AireNumeros = Nothing
End Function
Bonjour,
Merci de ton aide mais je ne suis pas du tout à l'aise avec les macros.