VBA - Pb test date personalise

  • Initiateur de la discussion simyrom
  • Date de début
S

simyrom

Guest
Bonjour le forum,
J’ai un problème de date en VBA.
Je télécharge un tableau de données par une Webquerry. Ce tableau contient normallement des mesures pour chaque heure de la journée. Le hic est que parfois une date est manquante (avec toutes les données correspondantes). Je voudrais donc faire un test du type:

Dim j As Integer
For j = Range("XXX").Row To Range("XXX").Row Step -1
'hic' If la date de la cellule (j+1, 4) n’est pas égale a la date de la cellule (j, 4) - 1 heure Then
Cells(j + 1, 1).EntireRow.insert
'hic' Cells(j + 1, 4).Value = Cells(j + 2, 4).Value + 1 heure
Range(Cells(j + 1, 5), Cells(j + 1, 20)).Interior.ColorIndex = 5
End If
Next

Sachant que plusieurs heures consecutives peuvent manquer et que la date importée est au format personnalisé (format choisit par le site Internet): dd/mm/yyyy hh:mm

Je ne sais pas gérer ces dates au format “VBA” car elles prennent en compte la date et l’heure. J’ai fait de nombeux essais avec des functions date et time mais sans success.

Ex:
22/06/2003 12:00 1004 0.2 7
22/06/2003 11:00 Ligne insérée
22/06/2003 10:00 1003.8 0.6 7
22/06/2003 09:00 1004.2 1 7
22/06/2003 08:00 1001.2 4.6 7

Pour information, je vous joins une de mes macros qui marche avec des dates séparées (1 colonne pour le mois, 1 pour le jour et 1 pour l’heure). Chose que je veux éviter afin de pouvoir réaliser plus facilement des graphiques annuelles. Comme je suis débutant en VBA et que cette macro a été realise grace a la consultation de differents sites Internet, elle est très lourde.

J'espere que mes explications sont assez claires.
Merci d’avance.
Romain.
 

Pièces jointes

  • Sub_atempt4.zip
    5.2 KB · Affichages: 20
Z

zon

Guest
Re,


Romain, pour recupérer la date d'aprés ce que j'ai compris il existe Year,
Month, Day et Hour pour récupérer l'année le mois le jour et l'heure d'une date....

admettons que tu n'es que dates de juin on compare juste le jour

If Day(cells(j+1, 4))= Day(cells(j, 4)) then
....
if hour(cells(j+1, 4)=hour(cells(j,4))-1 then ' on compare l'heure comprise entre 0 et 23

.....



A+++
 
S

simyrom

Guest
Merci Zon,
je viens te tester ma macro avec ton code et ca marche. De plus, j'ai resolu mon second probleme qui etait de pouvoir inserer une ligne et remplir la date quand une date etait manquante. Maintenant, il faut que je teste la macro dans toutes les situations et que je complete avec le changement de jour.

Sub soluce()
Dim j As Integer
For j = Range("B65536").End(xlUp).Offset(-1, 0).Row _
To Range("B65536").End(xlUp).End(xlUp).Offset(2, 0).Row Step -1
If Not (Hour(Cells(j - 1, 2)) = Hour(Cells(j, 2)) + 1) Then
Cells(j, 1).EntireRow.insert
Range(Cells(j, 5), Cells(j, 20)).Interior.ColorIndex = 15
Range(Cells(j + 1, 2), Cells(j + 2, 2)).AutoFill Destination:=Range(Cells(j + 2, 2), Cells(j, 2)), Type:=xlFillDefault
End If
Next
End Sub

En tout cas, un grand merci. En 10 min, tu m'as evite une autre journee de prise de tete sur l'aide sommaire en anglais d'Excel VBA.
Thanks, take care, A+
Romain
 

Discussions similaires

Statistiques des forums

Discussions
314 654
Messages
2 111 598
Membres
111 215
dernier inscrit
fateh