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