Proble execution boucle do while

Fermé
seblg29 Messages postés 19 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 31 janvier 2019 - Modifié par NHenry le 24/10/2015 à 13:04
NHenry Messages postés 15214 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 16 avril 2025 - 30 oct. 2015 à 11:55
Bonjour,

J'ai quelque souci sur un de mes scripts..

Je souhaite calculer une somme sur des lignes différentes (colonne 5) qui sont toutes oranges (la couleur orange servant de limite pour ce calcul de somme), et ensuite reporter le résultat de ce calcul en colonne 8 sur la première ligne orange.

Cependant lorsque les lignes ne sont pas oranges, ou sur les lignes oranges suivant la première, mon code me renvoi des 0. Je ne vois pas comment lui dire de ne rien renvoyer.

Voici mon code pour que vous y voyez plus claire :

For j = 12 To i
    ligneini = j
    compt = 0

    Do While Worksheets(feuille).Cells(j, 5).Interior.Color = 49407
    compt = compt + Worksheets(feuille).Cells(j, 5).Value
        If Worksheets(feuille).Cells(j, 5).Interior.Color <> 49407 Then
            Exit Do
        End If
    j = j + 1
    Loop

    Worksheets(feuille).Cells(ligneini, 8).Value = compt
    Worksheets(feuille).Cells(ligneini, 9).Value = Application.Average(Range(Cells(ligneini, 3), Cells(j - 1, 3)))

Next

End Sub





EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

NHenry Messages postés 15214 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 16 avril 2025 363
24 oct. 2015 à 13:40
Penses toujours à mettre "Option Explicit" en haut de ton code (première ligne du fichier).

Essayes de faire du pas à pas (F8), et espionne les valeurs des variables (Shift+F9), tu peux aussi mettre des points d'arrêt (F9).
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
26 oct. 2015 à 06:31
Bonjour

Si les cellules orange sont issues d'une mise en forme conditionnelles, il faut
raisonner sur la formule de mise en couleur et non sur la couleur
0
Bonjour,

Merci pour vos commentaires,
J'ai déjà essayé le mode pas à pas.
Mon problème intervient au niveau de la boucle if.

Do While Worksheets(feuille).Cells(j, 5).Interior.Color = 49407
compt = compt + Worksheets(feuille).Cells(j, 5).Value
If Worksheets(feuille).Cells(j, 5).Interior.Color <> 49407 Then
Exit Do
End If
j = j + 1
Loop

Il faudrait que lorsque la couleur de ma cellule est orange (code 49407), on "passe" au j + 1. Or ici, mon instruction me renvoi des 0 sur toutes les lignes "non orange"...

Cordialement,

Sébastien Le Guillou
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
26 oct. 2015 à 09:49
Excuse moi de t'avoir dérangé en essayant de t'aider
0
NHenry Messages postés 15214 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 16 avril 2025 363
30 oct. 2015 à 11:55
Do while test d'abord si la condition est vraie.
Donc si la case n'est pas orange lors du premier tour, il ne passe pas dans la boucle.

Tu peux mettre la condition à la fin :
Do
...
Loop While ...
0

Discussions similaires