programmer la periode d'analyse

programmer la periode d'analyse - VB/VBA/VBS - Programmation

Marsh Posté le 10-11-2005 à 11:19:13    

Bonjour,
Je fais une analyse statistique, et pour pouvoir faire des reporting mensuel ou annuel… j’aimerais dire à mon programme de commencer cette analyse à une date que j’aurais définie et de s’arrêter à la date que je souhaite…
J’ai jamais utilisé le vb avant je galère un peu…
merci

Reply

Marsh Posté le 10-11-2005 à 11:19:13   

Reply

Marsh Posté le 15-11-2005 à 10:20:22    

j'étais peut etre pas claire.
mon tableau est le suivant
date défaut
24.10.05 fonctionnel
24.10.05 fonctionnel
24.10.05 fonctionnel
24.10.05 fonctionnel
24.10.05 assemblage
24.10.05 fonctionnel
24.10.05 fonctionnel
25.10.05 étanchéité
25.10.05 fonctionnel
25.10.05 fonctionnel
25.10.05 fonctionnel
25.10.05 fonctionnel
25.10.05 fonctionnel
26.10.05 fonctionnel
26.10.05 fonctionnel
26.10.05 fonctionnel
26.10.05 assemblage
26.10.05 fonctionnel
27.10.05 assemblage
sur un autre tableau je viens préciser la date de debut et la date de fin d'analyse.
date debut date fin défaut  
24.10.05 26.10.05 assemblage 0
  dimensionnel 0
  esthétique 0
  étanchéité 0
  fonctionnel 0
 
le programme que j'ai mis est le suivant:
 
    Do Until Sheets("Feuil1" ).Cells(i, 13).Date = Cells(3, 24).Date
'cells (i,13) correspond à la date sur mon 1 er tableau et la (3,24)celle de la fin d'analyse que je vais preciser ici..
   
  Do While Cells(i, 13).Date = Cells(3, 23).Date
 'la (3,24) correspont à la date de debut...
    If Cells(i, 16).Text = "assemblage" Then
    Cells(3, 26).Value = Cells(3, 26).Value + Cells(i, 14).Value
    End If
     
     If Cells(i, 16).Text = "dimentionnel" Then
    Cells(4, 26).Value = Cells(4, 26).Value + Cells(i, 14).Value
    End If
      If Cells(i, 16).Text = "esthétique" Then
    Cells(5, 26).Value = Cells(5, 26).Value + Cells(i, 14).Value
    End If
    If Cells(i, 16).Text = "étanchéité" Then
    Cells(6, 26).Value = Cells(6, 26).Value + Cells(i, 14).Value
    End If
    If Cells(i, 16).Text = "fonctionnel" Then
    Cells(7, 26).Value = Cells(7, 26).Value + Cells(i, 14).Value
    End If
   i = i + 1
 
  Loop
 
i = i + 1
 Loop
 
je pense que c'est mon ".date" qui marche pas je sais pas quoi mettre.
merci d'avance.

Reply

Marsh Posté le 15-11-2005 à 10:34:30    

Au lieu de

Cells(i, 13).Date

utiliser

Cells(i, 13)
ou
 
Cells(i, 13).Value
 
ou encore
 
Format(Cells(i, 13), "yyyymmdd" )

Le formatage ci-dessus permet d'ignorer les heures, minutes, et secondes, qui peuvent être gênantes dans les comparaisons.

Reply

Marsh Posté le 15-11-2005 à 11:12:12    

merci  
ça marche pas  
y en a aucune qui marcheles 2 premiere j avais deja essayé mais la dernière il me dit erreur de syntaxe

Reply

Marsh Posté le 15-11-2005 à 12:13:57    

Le formatage ne marche pas si le champ contenant la date n'est pas au format date, ce qui est peut-être le cas.
Un autre problème peut venir de la variable "i" qui ne serait pas initialisée.
Un autre problème peut être causé par l'emplacement des cellules qui se trouveraient sur des feuilles différentes. Dans ce cas, il faudrait peut-être la feuille concéernée non seulement pour i, 1", mais peut-être aussi pour 3,24.
Enfin, sur les lignes où il y a des comparaisons, il faut bien sûr changer les deux membres de la comparaison, et pas uniquement un seul.
 
Je pense que les lignes suivantes ne devraient pas donner d'erreur de syntaxe :

Code :
  1. i = 1
  2. Do Until Sheets("Feuil1" ).Cells(i, 13) = Cells(3, 24)

Et si les dates sont dans des champs dates, les lignes suivantes devraient aussi passer :

Code :
  1. i = 1
  2. Do Until Format(Sheets("Feuil1" ).Cells(i, 13), "yyyymmdd" ) = Format(Cells(3, 24), "yyyymmdd" )

Le problème peut aussi venir de champs nuls. Il faut tester petit bout par petit avec des MsgBox(Cells(3, 24)), MsgBox(Sheets("Feuil1" ).Cells(i, 13)), etc.

Reply

Marsh Posté le 15-11-2005 à 14:06:39    

si, la variable i est initialisée, et  les dates sont des champs date aussi, et c'est sur la meme feuille mon programme marchait bien avant de rajouter la condition sur les dates!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed