J'ai des données dans une feuille Excel au format suivant:
Code de l'articleDate de livraison 5456987 24.01.2009 5456988 5456989 12.24.2009 5456990 24/12/2009
J'ai stocké les valeurs de DeliveryDate dans un tableau. Je dois prendre une décision sur les bases de la date, puis imprimer le résultat dans une nouvelle feuille. Je dois donc convertir les valeurs en tableau:
Dim current as Date, highest as Date, result() as Date
For Each itemDate in DeliveryDateArray
current = CDate(itemDate)
if current > highest then
highest = current
end if
' some more operations an put dates into result array
Next itemDate
'After activating final sheet...
Range("A1").Resize(UBound(result), 1).Value = Application.Transpose(result)
Malheureusement, la fonction CDate () renvoie l'erreur:
Erreur d'exécution '13':
Incompatibilité de type
Existe-t-il une fonction dans VBA qui peut:
Modifier:
Pour reproduire l'erreur, exécutez simplement myDate = CDate("24.01.2009")
Essayez d'utiliser Replace
pour voir si cela fonctionnera pour vous. Le problème tel que je le vois qui a été mentionné plusieurs fois ci-dessus est que la fonction CDate s'étouffe sur les règles. Vous pouvez utiliser replace pour les remplacer par des barres obliques. Pour répondre à votre question sur une fonction dans vba qui peut analyser n'importe quel format de date, il n'y en a pas, vous avez des options très limitées.
Dim current as Date, highest as Date, result() as Date
For Each itemDate in DeliveryDateArray
Dim tempDate As String
itemDate = IIf(Trim(itemDate) = "", "0", itemDate) 'Added per OP's request.
tempDate = Replace(itemDate, ".", "/")
current = Format(CDate(tempDate),"dd/mm/yyyy")
if current > highest then
highest = current
end if
' some more operations an put dates into result array
Next itemDate
'After activating final sheet...
Range("A1").Resize(UBound(result), 1).Value = Application.Transpose(result)
J'ai utilisé ce code:
ws.Range ("A: A"). FormulaR1C1 = "= DATEVALUE (RC [1])"
la colonne A sera mm/jj/aaaa
RC [1] est la colonne B, la chaîne TEXT, par exemple, 30/01/12, CECI IS NOT DATE TYPE
Il semblerait que l'erreur puisse apparaître sur la ligne de données vide, avez-vous essayé de vous assurer que itemDate n'est pas vide avant d'exécuter la fonction CDate ()? Je pense que cela pourrait être votre problème.