Contraindre le format de sortie d'une date (sus au format anglais)
Résolu
VictorVM1
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
VictorVM1 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
VictorVM1 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Contraindre le format de sortie d'une date (sus au format anglais)
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Format doc - Guide
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je ne vois pas la déclaration de ta variable
je ne vois pas la déclaration de ta variable
dateopti.
Effectivement c'est une piste, dateopti() est défini comme variant. J'ai fait ce choix car à un moment dans mon code je supprime des lignes en utilisant =Null, ce qui ne marche pas en définissant dateopti() comme date.
J'espérai trouver quelque chose qui formaterai ou reformaterai la cellule ou la valeur de l'array au format jj/mm/aaaa
J'espérai trouver quelque chose qui formaterai ou reformaterai la cellule ou la valeur de l'array au format jj/mm/aaaa
Dim dateopti() as variant
'remplissage de dateopti avec des dates
For i = 1 To UBound(dateopti)
Worksheets(Nomfeuille).Range("A" & i) = dateopti(i)
Next i
le premier suspect est donc coupable.
assigner Null ne supprime rien, pourquoi ne pas utiliser une valeur telle que 0 à la place de Null?
tu ne montres pas non plus comment tu assignes des dates à
pour finir, ton code n'utilise probablement aucune date, contrairement à ce que tu imagines.
oublie l'idée de format, c'est une fausse piste: les dates ont des valeurs. le format n'intervient qu'au moment de les afficher: sus aux formats!
assigner Null ne supprime rien, pourquoi ne pas utiliser une valeur telle que 0 à la place de Null?
tu ne montres pas non plus comment tu assignes des dates à
dateopti, c'est probablement incorrect également. je suspecte que tu n'utilises pas une variable de type date pour assigner une valeur à
dateopti.
pour finir, ton code n'utilise probablement aucune date, contrairement à ce que tu imagines.
oublie l'idée de format, c'est une fausse piste: les dates ont des valeurs. le format n'intervient qu'au moment de les afficher: sus aux formats!
Ok bon passons aux choses sérieuses alors :D
J'ai un peu menti; en fait j'ai deux arrays en parallèles. Je sais c'est pas dingue mais pour le moment ça me permet plus de flexibilité je regrouperai tout plus tard.
En gros j'ai plusieurs dates (datesopti()) qui s'appliquent sur une liste de machines (num()) mais pour chaque machine je cherche a récupérer la (ou les) dates la (ou les) plus proche(s) de moi.
Ici ma stratégie consiste à prendre la dernière case la comparer à toutes les cases en partant de la fin et si il y a une machine dont la date est plus lointaine je décale toute les lignes d'un cran vers le début pour "recouvrir" la ligne que je ne veut pas et je supprime la dernière ligne qui fait doublon.
Ensuite je compare l'avant dernière ligne à toutes les autres ect...
Mais la seule façon m'a-t-il semblé de supprimer la dernière case de l'array dateopti() est de le déclarer comme Variant et assigner à la dernière ligne Null.
Voilà j'espère que ça te permettra d'éclaircir un peu le problème
J'ai un peu menti; en fait j'ai deux arrays en parallèles. Je sais c'est pas dingue mais pour le moment ça me permet plus de flexibilité je regrouperai tout plus tard.
En gros j'ai plusieurs dates (datesopti()) qui s'appliquent sur une liste de machines (num()) mais pour chaque machine je cherche a récupérer la (ou les) dates la (ou les) plus proche(s) de moi.
Ici ma stratégie consiste à prendre la dernière case la comparer à toutes les cases en partant de la fin et si il y a une machine dont la date est plus lointaine je décale toute les lignes d'un cran vers le début pour "recouvrir" la ligne que je ne veut pas et je supprime la dernière ligne qui fait doublon.
Ensuite je compare l'avant dernière ligne à toutes les autres ect...
Mais la seule façon m'a-t-il semblé de supprimer la dernière case de l'array dateopti() est de le déclarer comme Variant et assigner à la dernière ligne Null.
Voilà j'espère que ça te permettra d'éclaircir un peu le problème
Dim dateopti() as Variant Dim num() as String Dim date4mois as Date date4mois = DateAdd("d", 120, dateajd) Dim b As Long Dim e As Long Dim k As Long 'Remplissage des tableaux e = Ubound(dateopti) b = e While b >= 0 'première iteration d = e While d >= 0 'seconde iteration If num(b) = num(d) And dateopti(b) < dateopti(d) And dateopti(b) > date4mois And dateopti(d) > date4mois Then For k = d + 1 To e 'Décalage vers le bas num(k-1) = num(k) dateopti(k - 1) = dateopti(k) Next k 'Suppression de la dernière ligne dateopti(e) = Null num(e)="" e = e - 1 'Reduction de la taille max du tableau End If d = d - 1 Wend b = b - 1 Wend For i = 1 To UBound(dateopti) Worksheets(Nomfeuille).Range("A" & i) = dateopti(i) Worksheets(Nomfeuille).Range("B" & i) = dateopti(i) Next i
Concernant l'assignation ça ressemble à ça:
Dim i as Long Dim a as Long Dim date4mois as Date Dim date6mois as Date date4mois = DateAdd("d", 120, dateajd) date6mois = DateAdd("d", 180, dateajd) a = 0 i = 1 While Worksheets(Nomfeuille1).Cells(i, 1) <> "" If date4mois < Worksheets(Nomfeuille1).Cells(i, 17) And Worksheets(Nomfeuille1).Cells(i, 17) < date6mois Then ReDim Preserve nom(a) ReDim Preserve dateopti(a) nom(a) = Worksheets(Nomfeuille1).Cells(i, 1) dateopti(a) = Worksheets(Nomfeuille1).Cells(i, 2) a = a + 1 End If i = i + 1 Wend
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pour moi, le premier suspect est ta déclaration de la variable .