Problème de Boucle

Problème de Boucle - VB/VBA/VBS - Programmation

Marsh Posté le 28-01-2010 à 12:52:24    

Bonjour ,
 
J'ai crée un petit programme sous VBA pour faire la moyenne par heure, de valeur prises toutes les 10 minutes.
 
Mon programme calcul bien la moyenne, mais ne veut pas écrire mon résultat dans la cellule et ne veut pas continuer (pb de boucle).
 
Si quelqu'un peut m'aider.
 

Code :
  1. Dim C1 As Single
  2. Dim C2 As Single
  3. Dim C3 As Single
  4. Dim C4 As Single
  5. Dim C5 As Single
  6. Dim C6 As Single
  7. Dim s&, z&, w&, x&, y&
  8. x = 3
  9. w = 9
  10. z = 3
  11. y = 2
  12. Do
  13. If y = 7 Then
  14.     MsgBox "la feuille est finie;"
  15.     y = y + 1
  16.    
  17.     'instruction de fin attendue '
  18. Else
  19.         If IsEmpty(ActiveCell.Value) = x Then
  20.             MsgBox "c'est la fin de la colonne;"
  21.             y = y + 1
  22.             w = w + 1
  23.         Else
  24.             C1 = ActiveSheet.Cells(x, y)
  25.             x = x + 1
  26.             C2 = ActiveSheet.Cells(x, y)
  27.             x = x + 1
  28.             C3 = ActiveSheet.Cells(x, y)
  29.             x = x + 1
  30.             C4 = ActiveSheet.Cells(x, y)
  31.             x = x + 1
  32.             C5 = ActiveSheet.Cells(x, y)
  33.             x = x + 1
  34.             C6 = ActiveSheet.Cells(x, y)
  35.             s = C1 + C2 + C3 + C4 + C5 + C6
  36.            
  37.             If s = 0 Then
  38.                 m = 0
  39.                 MsgBox "la somme vaut 0, remplissage de la feuille"
  40.                 ActiveSheet.Cells(w, z).Value = m
  41.             Else: m = s / 6
  42.                 'remplissage de la feuille'
  43.                 ActiveSheet.Cells(w, z).Value = m
  44.             End If
  45.             z = z + 1
  46.             x = x + 1
  47.         End If
  48. End If
  49. Loop While IsEmpty(ActiveSheet.Cells(x, y).Value)
  50. End Sub


 
 
 
 
Merci d'avance.

Reply

Marsh Posté le 28-01-2010 à 12:52:24   

Reply

Marsh Posté le 29-01-2010 à 08:11:23    

Bonjour,
une formule dans excel devrait suffire à régler ton PB. La formule DECALER devrait pouvoir faire l'affaire.
 
Pour répondre à ta question, en voici une:
 
peux-tu nous expliquer ce que tu demande à VB de faire en écrivant cette ligne?
 
"If IsEmpty(ActiveCell.Value) = x Then"
 
Cordialement
 

Reply

Marsh Posté le 29-01-2010 à 08:26:37    

Par exemple:
 
=SOMME(DECALER(Feuil1!$A$3;6*(COLONNE()-3);LIGNE()-9;6;1))/6
 
en colonne C     ligne 9 de la feuille où tu veux tes résultats, tu étires à droite puis sur 7 lignes

Reply

Marsh Posté le 29-01-2010 à 14:23:59    

Merci,
 
En réalité, je voudrais automatiser le tout, c'est pour cela que j'utilise VBA,  
 
La ligne de code If IsEmpty.......permet de passer à la colonne suivante, j'ai corrigé la ligne en mettant IsEmpty(activesheet.cells(x,y))
 
Pour automatiser le tout, j'ai crée une Userform, ainsi j'espère pouvoir exporter ma macro sur les prochains fichiers reçut et juste ne cliquant, avoir ma nouvelle feuille avec les moyennes par heure?
 
Comment programme t-on la création et le remplissage d'une nouvelle feuille avec les résultats des moyennes sous VBA?
 
Comment je peux transcire  la ligne:
=SOMME(DECALER(Feuil1!$A$3;6*(COLONNE()-3);LIGNE()-9;6;1))/6  
 
en langage VBA?
 
Merci de votre aide,
 
 
 

Reply

Marsh Posté le 29-01-2010 à 17:34:35    

Bonsoir
Sub dodo()
'pour mettre dans la cellule ligne 9  colonne 3 de la feuil2 la moyenne des cellules 3 à 8 de la colonne 1 se trouvant sur feuil1
'adapte le valeurs.........................
With Sheets("feuil1" )
 
Sheets("feuil2" ).Cells(9, 3) = WorksheetFunction.Sum(.Range(.Cells(3, 1), .Cells(8, 1))) / 6
End With
 
End Sub
 
je ne t'écris pas tout pour que tu puisses faire quelque chose par toi-même.
Cordialement

Reply

Sujets relatifs:

Leave a Replay

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