whiLe qui ne s'arrete pas help

sihamelm

XLDnaute Nouveau
Bonjour,
j'ai une fichier avec plusieurs feuil contenant l'historique des quantités transportées
J'ai voulu faire un programme pour que je puisse avoir la quantité mensuelle mais l boucle ne s'arrete pas pourtant je l'ai testé sur un petit tableau ça a marché
ps: c la premiere fois que j'écris sur ce forum :s je ne sais pas comment mettre le code
Dim quantites As Long
Dim i As Integer
Dim j As Integer
i = 3
j = 4
quantites = 0

While IsEmpty(Cells(j, 4)) = False
quantites = quantites + Cells(j, 8).Value
While Month(Cells(j, 4).Value) = Month(Cells(j + 1, 4).Value)
quantites = quantites + Cells(j + 1, 8).Value
j = j + 1


Wend

Cells(i, 21).Value = Month(Cells(j, 4).Value)
Cells(i, 22).Value = quantites
i = i + 1
quantites = 0
j = j + 1

Wend
 

Fred0o

XLDnaute Barbatruc
Re : whiLe qui ne s'arrete pas help

Bonjour sihamelm et bienvenue sur le forum.

J'ai testé ton code sur un fichier test et il a bien fonctionné. Maintenant, pour savoir ce qui ne va pas dans ton cas réel, il faudrait que tu postes ton fichier (en enlevant les données sensibles). Pour celà, tu vas dans "Aller en mode avancé" en bas à droite puis "Gérer les pièces jointes".

Pour le code, il te faut utiliser les balises [CODE ] Ton Code [/CODE ] sans les espaces.

Ensuite, je t'invite cordialement à lire la Lien supprimé.

A+
 

sihamelm

XLDnaute Nouveau
Re : whiLe qui ne s'arrete pas help

Merci pour la réponse oui ça marche pour certaines feuils et d'autres non
voila
 

Pièces jointes

  • Classeur1.xlsm
    133.4 KB · Affichages: 42
  • Classeur1.xlsm
    133.4 KB · Affichages: 43
  • Classeur1.xlsm
    133.4 KB · Affichages: 48

mutzik

XLDnaute Barbatruc
Re : whiLe qui ne s'arrete pas help

bonsoir

nul besoin de macro
en J4
=SOMMEPROD((MOIS($D$4:$D$40000)=(LIGNE()-3))*($E$4:$E$40000))
tu peux ensuite tirer cette ligne vers le bas pour avoir les 12 mois de l'année
 

Fred0o

XLDnaute Barbatruc
Re : whiLe qui ne s'arrete pas help

Re-bonsoir sihamelm,

Voici le code à utiliser. J'ai rajouté une condition qui teste si le mois de j+1 est vide ou non. En effet, lorsqu'une cellule est vide, EXCEL considère que le mois = 12. Dans le cas de la feuille que tu as mise en exemple, le dernier mois étant 12, il validait systématiquement la condition, jusqu'à ce qu'on soit en débordement de capacité pour la variable j déclarée en integer, c'est à dire 32567.

VB:
Sub consom()
    Dim quantites As Long
    Dim i As Integer
    Dim j As Integer
    i = 3
    j = 4
    quantites = 0
    While Not IsEmpty(Cells(j, 4))
        quantites = quantites + Cells(j, 8).Value
        While Not IsEmpty(Cells(j + 1, 4).Value) And Month(Cells(j, 4).Value) = Month(Cells(j + 1, 4).Value)
            quantites = quantites + Cells(j + 1, 8).Value
            j = j + 1
        Wend
        Cells(i, 21).Value = Month(Cells(j, 4).Value)
        Cells(i, 22).Value = quantites
        i = i + 1
        quantites = 0
        j = j + 1
    Wend
End Sub

A+
 

sihamelm

XLDnaute Nouveau
Re : whiLe qui ne s'arrete pas help

Rebonsoir
Merci fredoo ça marche surtout qu'il fallé bouclé sur plusieurs feuils
qu'on je récupère la date et je la mes dans la cellule
Code:
Cells(i, 21).Value = Month(Cells(j, 4).Value)
c'est affiché en # vu que la cellule n'est pas de format DATE Y a-t-il un moyen pour changer le format sur le code??
Merci
 

Discussions similaires

Réponses
4
Affichages
362

Statistiques des forums

Discussions
314 222
Messages
2 107 469
Membres
109 836
dernier inscrit
SophieL16