Reconnaissance du format date macro excel
Résolu
Bonjour,
Alors voilà, j'ai créé une base de données qui importe des formulaires, mais j'ai le format de chaque colonne contenant des dates n'est plus reconnu. Ma demonstration a simplement consisté à soustraire 2 dates, ou faire un networdays sur 2 dates, et le résultat est le même: "#VALUE!". C'est assez embêtant sachant que j'ai besoin de faire une macro filtre sur les date...
J'ai donc essayé de rajouté une macro de convertion de format:
Sub convertir()
Dim Lig As Long, Drlig As Long
With Sheets("BDD")
Drlig = .Range("BD" & Rows.Count).End(xlUp).Row
For Lig = 4 To Drlig
If IsNumeric(.Cells(Lig, 56)) Then
.Cells(Lig, 56) = CDbl(.Cells(Lig, 56))
End If
If IsNumeric(.Cells(Lig, 60)) Then
.Cells(Lig, 60) = CDbl(.Cells(Lig, 60))
End If
If IsNumeric(.Cells(Lig, 5)) Then
.Cells(Lig, 5) = CDbl(.Cells(Lig, 5))
End If
Next
.Columns("BH:BH").NumberFormat = "0.00%"
.Columns("BD:BD").NumberFormat = "0.00%"
.Columns("BC:BC").NumberFormat = "0.00"
.Columns("BE:BE").NumberFormat = "0.00"
.Columns("E:E").NumberFormat = "d/M/yy"
End With
End Sub
Sans succès, le format ne veut toujours être reconnu... :(
Si quelqu'un a une astuce pour régler ce problème, celà m'aiderait beaucoup!
Merci.
--
Cordialement,
L. L.
Alors voilà, j'ai créé une base de données qui importe des formulaires, mais j'ai le format de chaque colonne contenant des dates n'est plus reconnu. Ma demonstration a simplement consisté à soustraire 2 dates, ou faire un networdays sur 2 dates, et le résultat est le même: "#VALUE!". C'est assez embêtant sachant que j'ai besoin de faire une macro filtre sur les date...
J'ai donc essayé de rajouté une macro de convertion de format:
Sub convertir()
Dim Lig As Long, Drlig As Long
With Sheets("BDD")
Drlig = .Range("BD" & Rows.Count).End(xlUp).Row
For Lig = 4 To Drlig
If IsNumeric(.Cells(Lig, 56)) Then
.Cells(Lig, 56) = CDbl(.Cells(Lig, 56))
End If
If IsNumeric(.Cells(Lig, 60)) Then
.Cells(Lig, 60) = CDbl(.Cells(Lig, 60))
End If
If IsNumeric(.Cells(Lig, 5)) Then
.Cells(Lig, 5) = CDbl(.Cells(Lig, 5))
End If
Next
.Columns("BH:BH").NumberFormat = "0.00%"
.Columns("BD:BD").NumberFormat = "0.00%"
.Columns("BC:BC").NumberFormat = "0.00"
.Columns("BE:BE").NumberFormat = "0.00"
.Columns("E:E").NumberFormat = "d/M/yy"
End With
End Sub
Sans succès, le format ne veut toujours être reconnu... :(
Si quelqu'un a une astuce pour régler ce problème, celà m'aiderait beaucoup!
Merci.
--
Cordialement,
L. L.
2 réponses
-
Bon, j'ai finallement trouvé la solution, je vais donc l'expliquer, ça pourrait servir à d'autres.
A la place de:
If IsNumeric(.Cells(Lig, 5)) Then
.Cells(Lig, 5) = CDbl(.Cells(Lig, 5))
End If
Mettre plutôt:
If IsDate(.Cells(Lig, 5)) Then
.Cells(Lig, 5) = CDate(.Cells(Lig, 5))
End If
Et voilà le format est reconnu!
-
J'oubliai: J'ai mis en gras les lignes du code spécifique à la colonne date, le reste du code concerne d'autre colonne et fonctionne normalement.