Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[VBA-E] Format date SAP vers Excel

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

Eva_75

XLDnaute Nouveau
Bonjour,

Je suis en train de faire une macro, une des fonction est de changer le format date de SAP (sous la forme jj.mm.aaaa) vers le format date classique reconnu par excel (sous la forme jj/mm/aaaa)

J'ai donc composé ce code :
Code:
Sub test()
 
Dim Annee As Integer, Mois As Integer, Jour As Integer
Dim Cel As Range
 
For Each Cel In Columns("D:D")
If Cel Like "##.##.####" Then
        Annee = Right(Cel, 4)
        Mois = Mid(Cel, 4, 2)
        Jour = Left(Cel, 2)
        Cel = DateSerial(Annee, Mois, Jour)
    End If
Next Cel
 
End Sub

Mais cela bloque à :
If Cell Like "##.##.####" Then

Quelqun saurait comment y remédier ?
 
Re : [VBA-E] Format date SAP vers Excel

Bonjour


Comme cela ca semble etre Ok non?

Sub test()
If ActiveCell Like "??.??.????" Then MsgBox "ok"
End Sub

Sub test2()
's'il faut etre sur qu'on traite des dates , un test de plus
If IsNumeric(Right(ActiveCell, 4)) And ActiveCell Like "??.??.????" Then MsgBox "ok"
End Sub
 
Dernière édition:
Re : [VBA-E] Format date SAP vers Excel

Bonjour,

Si tu sais que la colonne D contient que des dates, tu peux essayer :

Sub test()
For Each Cel In Columns("D😀")
Cel = Application.Substitute(Cel, ".", "/")
Next Cel
End Sub

Ou bien avec le Test de Staple :

Sub test()
For Each Cel In Columns("D😀")
If Cel Like "??.??.????" Then Cel = Application.Substitute(Cel, ".", "/")
Next Cel
End Sub

ou

Sub test()
For Each X In Columns(4).SpecialCells(xlCellTypeConstants, 23)
X.Value = CDate(Application.Substitute(X.Value, ".", "/"))
Next
End Sub


Mais il faut que les jours et les mois soient codés sur 2 digits
 
Dernière édition:
Re : [VBA-E] Format date SAP vers Excel

Re

edit: question: que veut-dire VBA-E, stp ?


Ca semble fonctionner non?
Code:
Sub testII()
Dim Annee As Integer, Mois As Integer, Jour As Integer
Dim Cel As Range
Dim lastrow As Long
lastrow = Range("D65536").End(xlUp).Row
For Each Cel In Range("d1:d" & lastrow)
If IsNumeric(Right(Cel, 4)) And Cel Like "??.??.????" Then
        Annee = Right(Cel, 4)
        Mois = Mid(Cel, 4, 2)
        Jour = Left(Cel, 2)
        Cel = DateSerial(Annee, Mois, Jour)
    End If
Next Cel
 End Sub
edit: bonjour Catrice


->Eve_75: ton fichier contient 65536 lignes à traiter?
 
Dernière édition:
Re : [VBA-E] Format date SAP vers Excel

Re,

Ou bien (toujours, s'il y a que des dates dans la colonne D) :

Sub Test2()
Columns(4).Replace What:=".", Replacement:="/", LookAt:=xlPart
End Sub

Toujours sans boucle :
Sub Test()
Columns(4).TextToColumns Destination:=Columns(4), DataType:=xlDelimited, FieldInfo:=Array(1, 4)
End Sub



Edit : Bonjour Staple
 
Dernière édition:
Re : [VBA-E] Format date SAP vers Excel

bonjour a tous

ma version

Code:
Option Explicit
Sub test()
Dim Cel As Range
For Each Cel In Range("D1:D" & Range("D65536").End(xlUp).Row)
 If IsDate(Replace(Cel.Value, ".", "/")) Then
  Cel.Value = CDate(Replace(Cel.Value, ".", "/"))
 End If
Next Cel
End Sub
 
Re : [VBA-E] Format date SAP vers Excel

Catrice à dit:
Bonjour,
Si tu sais que la colonne D contient que des dates
-> Oui

Catrice à dit:
Sub test()
For Each Cel In Columns("D😀")
Cel = Application.Substitute(Cel, ".", "/")
Next Cel
End Sub
-> Toutes les cellules de la colonne D se transforme en "#NOMBRE"

Catrice à dit:
Ou bien avec le Test de Staple :

Sub test()
For Each Cel In Columns("D😀")
If Cel Like "??.??.????" Then Cel = Application.Substitute(Cel, ".", "/")
Next Cel
End Sub
-> plante à la ligne " If Cel Like "??.??.????" Then "

Catrice à dit:
Sub test()
For Each X In Columns(4).SpecialCells(xlCellTypeConstants, 23)
X.Value = CDate(Application.Substitute(X.Value, ".", "/"))
Next
End Sub
-> Plante à la ligne "X.Value = CDate(Application.Substitute(X.Value, ".", "/"))"

Staple1600 à dit:
question: que veut-dire VBA-E, stp ?
C'est pour dire VBA-Excel, par différence avec Access ou d'autres

YESSSSS ca marche !!! Merci beaucoup, c'est quand meme étonnant que les autres macros marchent chez les autres et pas chez moi... Merci a tous de m'avoir aidé !

Staple1600 à dit:
->Eve_75: ton fichier contient 65536 lignes à traiter?

Non, mais je ne me souviens plus comment nommer toute une plage... Pour une cellule, je nomme "fin_colonne_A" et je met la formule =DECALER(Feuil1!$A$2;NBVAL(yr12!$A:$A)-1;0;1;1)
Mais pour tout une plage je ne me rappelle plus ? 😕

Catrice à dit:
Sub Test2()
Columns(4).Replace What:=".", Replacement:="/", LookAt:=xlPart
End Sub
-> Cela me met la date au format mm/jj/aaaa

Catrice à dit:
Toujours sans boucle :
Sub Test()
Columns(4).TextToColumns Destination:=Columns(4), DataType:=xlDelimited, FieldInfo:=Array(1, 4)
End Sub
-> Test OK !!!! Ca marche


-> Test OK, merci PJ !!!
 
Re : [VBA-E] Format date SAP vers Excel

Re,

Le plantage de solutions que j'ai proposées doit etre lié au données.
Il faudrait voir sur quelle donnée ça plante.
Le format mm/jj/aaaa il suffit de formater la cellule en Vba.
 
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
297
Réponses
6
Affichages
513
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
408
Réponses
4
Affichages
520
Réponses
5
Affichages
780
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…