Conversion format date en texte en conservant un format de d

Bonjour,

J'ai un petit soucis au niveau de mon format de date, j'aimerais transformer mon format de date en texte/standard tout en gardant une écriture sous la forme : "yyyy-mm-dd"

Sub Traitement()

 Dim derligne As Long
 Dim x As Range 'cellule affichant le coefficient multiplicateur 100
 Dim taille As Range '1ère ligne contenant le symbole % dans les en-tête
 Dim colonne As Integer 'n° de la colonne à modifier
 Dim lignefin As Integer 'n° de la dernière ligne
 Dim ws As Worksheet

 On Error Resume Next 'si la feuille n'existe pas !
 Application.DisplayAlerts = False: Sheets("traitement").Delete: Application.DisplayAlerts = True
 On Error GoTo 0 'plus de gestionnaire d'erreurs
 Worksheets("PO - PB").Copy After:=Worksheets("base donnee") 'création de la feuille
 ActiveSheet.Name = "traitement" 'nom de la feuille'
 Sheets("base donnee").Range("A1:DX1").Copy Sheets("traitement").Range("A1:DX1")
 ActiveSheet.AutoFilterMode = False 'desactiver les filtres'
 ActiveWindow.FreezePanes = False 'désactiver les volets'
 ligne = Range("A" & Rows.Count).End(xlUp).Row
 colomne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
 With Sheets("traitement")
      Set x = Range("A" & ligne + 10)
           x.Value = 100

          Set taille = .Range("A2:DX100")
          For Each cell In taille

              If cell.HasFormula = True Then
              cell.EntireColumn.Rows("2:775").Select
              selection.Copy
              selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

              [b]'detecter date et la mettre en texte + bon format
              ElseIf IsDate(cell) Then
              cell.EntireColumn.Rows("2:761").Select
              selection.NumberFormat = "@"
              selection.NumberFormat = "yyyy-mm-dd"[/b]

             ElseIf InStr(1, cell.Text, "€") > 0 Then
              cell.EntireColumn.Rows("2:761").Select
              selection.NumberFormat = "0.00"  'pour 2 décimales
              selection.Copy
              selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

             ElseIf InStr(1, cell.Text, "%") > 0 Then
               colonne = cell.Column
               lignefin = cell.End(xlDown).Row
               x.Copy
               Range(Cells(1, colonne), Cells(lignefin, colonne)).PasteSpecial _
               Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=True
                   For i = 2 To lignefin
                     If CStr(Cells(i, colonne)) = "Erreur 2015" Then Cells(i, colonne) = ""
                   Next i
               selection.NumberFormat = "0.00"
               selection.Copy
              selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

             End If
            Next
     End With

  ActiveSheet.UsedRange.Replace What:="/", Replacement:="", LookAt:=xlWhole
  ActiveSheet.UsedRange.Replace What:="#REF!", Replacement:="", LookAt:=xlWhole
  ActiveSheet.UsedRange.Replace What:="#VALEUR!", Replacement:="", LookAt:=xlWhole

         'For Each ws In Worksheets
         'Application.DisplayAlerts = False
         'If ws.Name <> "traitement" Then ws.Delete
         'Next
          'Application.DisplayAlerts = True

'ActiveWorkbook.SaveAs Filename:="Traitement", FileFormat:=xlCSV, CreateBackup:=False, local:=True

 End Sub

Voici ma macro, j'arrive à le transformer mais à la fin, le format de ma cellule est personnalisé, et moi je voudrais texte/standard...

Je vous remercie par avance

Julien

58suivi.xlsx (33.13 Ko)

Hello jujudeo

Désolé j'ai pas le courage de faire la modification directement dans ton code, mais pour faire ce que tu souhaites:

Range("A1").NumberFormat = "@"
Range("A1") = Format(Range("A1"), "yyyy-mm-dd)

après si tu veux boucler sur x lignes

Dim numLigne as Integer
For numLigne = 1 to 999
Range("A" & numLigne).NumberFormat = "@"
Range("A" & numLigne) = Format(Range("A" & numLigne), "yyyy-mm-dd")
next numLigne

EDIT pour d'autres membres, car moi je comprend pas:

Excel confond les jours et les mois, quelqu'un a déjà eu ce soucis?

Une date 01/12/2016 est convertie en 2016-01-12

Voilà donc une version modifiée

'------- une seule fois
Dim jour%, mois%, annee%
'------- à avoir pour chaque cellule à modifier
Range("A1").NumberFormat = "@"
jour = Day(Range("A1"))
mois = Month(Range("A1"))
annee = Year(Range("A1"))
Range("A1") = Format(DateSerial(annee, mois, jour), "yyyy/mm/dd")

le soucis c'est quoi moi j'aimerais l'appliquer pas à une colonne précise mais a la colonne entière qui est sélectionnée par la fonction isdate, donc j'aimerais l'appliquer à ma sélection

Pour la date, c'est moi qui désire ce style de date

Voilà un code qui fonctionne pour ta première colonne, suffira de l'adapter pour les autres

ElseIf IsDate(cell) Then
              cell.EntireColumn.Rows("2:761").Select
              Selection.NumberFormat = "@"
              Dim jour%, mois%, annee%, plage As Range
              Set plage = cell.EntireColumn.Rows("2:761")
              For Each cellule In plage
                If IsDate(cellule.Value) And cellule.Value <> "" Then
                    jour = Day(cellule)
                    mois = Month(cellule)
                    annee = Year(cellule)
                    cellule.Value = Format(DateSerial(annee, mois, jour), "yyyy/mm/dd")
                End If
              Next cellule
Elseif etc.......

sa marche, merci beaucoup

pour une conversion tu peux essayer ceci :

dim date1, texte

date1 = Date

texte= CStr(date1) ou texte = CStr(Date)

c'est tout

Cordialement

Rechercher des sujets similaires à "conversion format date texte conservant"