Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - pb de date + heure

R

Romain

Guest
Bonjour le forum,
Je me suis aide du fichier telechargeable sur les heures (DatesetHeures_CMC.zip) pour trouver une formulation pour travailler avec des dates du type m/d/yyyy h:mm sachant que le mois est en A, le jour en B, l'annee est celle en cours, l'heure en C et les minutes = 0.
Pour l'instant, j'ai essaye cela mais ca bloque:

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
i = Cells(1, 2).Value
j = Cells(1, 3).Value
k = Cells(1, 4).Value
l = Year(Date)
Cells(1, 5) = "=DATE(l,i,j)+TIME(k,0,0)"
Cells(1, 5).NumberFormat = "m/d/yyyy h:mm"

Cela revient a un probleme de variable. Les variables seront utiles car il faudra que j'arrange le code pour un tableau entier.
Si qq'un a une solution ou une explication....
Merci d'avance
Romain
 
S

sylsyl

Guest
Salut Romain,

je n'ai jamais utilise des fonctions elaborees pour les dates mais si ce que tu as poste est tel qu'il est dans ta macro, je ne vois pas ou le mois est lu.

Cell "A1" -> cell(1,1)

Si c'est ca tu donne une valeur "Null" ou "" (et non "0") a un integer... et ca c'est generalement un probleme (enfin je pense car ca m'est jamais arrive).

Si tu t'es trompe dans ton post, je ne sais pas d'ou viens l'erreur.

Un bon moyen de l'identifier est de mettre un point (bordeau) au debut du sub ou dans le sub. Execute ligne par ligne avec F8, et lit les valeur de i, j,j,l au fur et a mesure juste en placant le curseur de ta souris sur les variables (sans cliquer).

J'espere t'avoir aider au sinon.. .. tant pis.

A++, Sylsyl.
 
R

Romain

Guest
Bonjour Sylsyl,
En effet, je me suis trompe. Pas dans ma macro mais dans mon explication:
Les mois sont lus en B
Les jours en C
Les heures en D
Les min et sec =0
L'annee est celle en cours
Merci pour ta vigilance
A+
Romain
 
S

sylsyl

Guest
Salut Romain,

tu m'excuseras mais j'ai rien trouve de plus rafine que ca...

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
i = Cells(1, 2).Value
j = Cells(1, 3).Value
k = Cells(1, 4).Value
l = Year(Date)
Cells(1, 5) = i & " / " & j & " / " & l & " " & k & ":00"
Cells(1, 5).NumberFormat = "m/d/yyyy h:mm"
End Sub

Il faut garder le NumberFormat pour la mise en page.

Les nombreux espaces sont ajoutes expres, lorsque le format est incompatible (mois >12), ils apparaissent dans la cellule et tu vois tout de suite qu'il y a un pb, au sinon c'est bourrin mais ca marche !!

A++, Sylsyl.
 
R

Romain

Guest
Re-salut Sylsyl,
Ta solution convient parfaitement a mon application. J'ai seulement enleve les espaces car les infos concernant les mois, jours et heures viennent d'un site Internet ou elles sont utilisees aussi pour une date (donc il ne peut pas y avoir d'erreur).
C'est dingue comment les solutions paraissent simples quand on les a sous les yeux.
Merci et bon WE.
A+
Romain
 

Discussions similaires

Réponses
4
Affichages
356
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…