Date convertie en texte dans second feuillet

Bonjour forum,

Ça fait déjà un bon moment que je travaille sur une macro mais là j'accroche sur un détail que je suis sûr que vous avez la réponse.

Partant d'un feuillet (appelons-le "WW"), on retrouve des dates (en format date compris par Excel) que je voudrais transformer sous format texte: YYYY:MM:DD:hhmm dans un second feuillet ("final"). J'ai bien tenté de passer par l'enregistreur de macro mais le résultat n'est pas satisfaisant puisque cette dernière donne la formule (qui amène au résultat) au lieu de simplement le résultat attendu. Voici le code:

For i = 2 To 11
If ThisWorkbook.Sheets("WW").Cells(i, 1).Value = "" Then
        ThisWorkbook.Sheets("Final").Range("J" & i).Value = "Absent"
        ThisWorkbook.Sheets("Final").Range("K" & i).Value = "Absent"
    Else
        Range("J" & i).Select
        ActiveCell.FormulaR1C1 = "=TEXT(WW!RC[-9],""YYYY:MM:DD:hhmm"")"
        Range("K" & i).Select
        ActiveCell.FormulaR1C1 = "=TEXT(WW!RC[-9],""YYYY:MM:DD:hhmm"")"

End If
Next
End Sub

J'ai aussi joint un fichier en exemple.

Votre aide est fort appréciée.

Emil

Bonjour Emil

Emil a écrit :

J'ai bien tenté de passer par l'enregistreur de macro mais le résultat n'est pas satisfaisant puisque cette dernière donne la formule (qui amène au résultat) au lieu de simplement le résultat attendu.

Normal, ton code inscrit une formule "FormulaR1C1" et non une valeur "Value"

Voici le code corrigé et optimisé avec variables déclarées

Sub Macro2()
  Dim DLig As Long, Lig As Long
  Dim ShtS As Worksheet
  ' Définir la feuille source
  Set ShtS = ThisWorkbook.Sheets("WW")
  ' Calculer al dernière ligne du tableau
  DLig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
  ' Avec la feuille Final
  With ThisWorkbook.Sheets("Final")
    ' Pour chaque ligne de la feuille source
    For Lig = 2 To DLig
      ' Inscrire la valeur souhaitée
      If ShtS.Range("A" & Lig).Value = "" Then
        .Range("J" & Lig).Value = "Absent"
        .Range("K" & Lig).Value = "Absent"
      Else
        .Range("J" & Lig).Value = Format(ShtS.Range("A" & Lig), "YYYY:MM:DD:hhmm")
        .Range("K" & Lig).Value = Format(ShtS.Range("B" & Lig), "YYYY:MM:DD:hhmm")
      End If
    Next
  End With
  ' Libérer les variables objet
  Set ShtS = Nothing
End Sub

A+

Bonjour Bruno,

tout est excellent et les commentaires sont très instructifs. J'ai testé le tout avec un autre fichier et tout fonctionne parfaitement.

Un gros merci!

Emil

Rechercher des sujets similaires à "date convertie texte second feuillet"