Proble execution boucle do while

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

  1. Modérateur
    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).
    1. Contributeur
      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
      1. 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
        1. Contributeur
          Excuse moi de t'avoir dérangé en essayant de t'aider
        2. Modérateur
          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 ...