Do For Next décrémenter

Bonjour à tous ,

Petite prise de tête du jour je ne comprend pas pourquoi je sature la mémoire de mon pc avec ce script qui tourne en boucle.....

        For I = 1 To UBound(T, 2)
            If (T(2, I) <> "") Then
                .Cells(I, 1).Value = T(1, I)
                .Cells(I, 2).Value = Replace(T(2, I), Chr(13), "")
                '.Cells(I, 3).FormulaLocal = "=NB.SI.ENS(FReponses!I:I;B" & I & ";FReponses!C:C;A" & I & ")"
                '.Cells(I, 3).Value = WorksheetFunction.COUNTIFS(FReponses!I:I;B" & I & ";FReponses!C:C;A" & I & ")

             ElseIf I <> 1 Then
             I = I - 1
              End If
              Next I

Le I+1 marche mais pas le I=I-1 , je ne comprend pas

Le but est de simplement ne pas ecrire la ligne si la cellule 2 est vide

En vous remerciant par avance

Bonjour,

Le problème vient du fait que si (T(2, I) <> "") est faux alors tu déclenches une boucle infinie. Si T(2, I) = "" alors i - 1 puis next donc i+1 au final i ne change pas et refais le même calcul soit T(2, I) = "". Si la valeur de T(2, I) ne varie pas pendant l’exécution il continue de boucler en effectuant exactement la même opérations;

Je ne sais pas si j'ai réussi à être clair.

Cordialement

Oui parfaitement je comprend ma bourde , du coup je vois pas comment faire qu'il ne s'incrémente pas et passe tous de même

Bonjour,

ça à l'air un peu foireux : Je ne peux pas être catégorique car avec juste une rondelle du saucisson j'ai un peu de mal à apprécier mais je suspecte la situation suivante :

i = 2 'pourquoi pas...
'blabla
ElseIf I <> 1 Then 'Ah ça c'est pour moi...
i = i - 1 'donc  i = 1
Next 'For i... comme i = 1 au prochain tour i passera à 2 et on recommence....

[EDIT] Bien vu Vince !

A+

Merci beaucoup je suis partis sur une mauvaise base donc comment faire simplement un tableau en inscrivant que les lignes ou il y'a du contenus

(Merci galopin01)

Je ne comprend pas trop ce que tu veux faire, l'hypothèse est que tu souhaites ne pas incrémenter afin de pas avoir de ligne vide dans ton résultat ? Si c'est le cas l'idée serait de faire de cette manière.

For I = 1 To UBound(T, 2)
    If (T(2, I) <> "") Then
        j = j +1
            .Cells(j, 1).Value = T(1, I)
                .Cells(j, 2).Value = Replace(T(2, I), Chr(13), "")
         end if
Next I

Cordialement

Bonjour,

si tu ne veux écrire que les lignes qui contiennent quelque chose:

Dim ligExport
ligExport = 1
For I = 1 To UBound(T, 2)
If (T(2, I) <> "") Then
    .Cells(ligExport, 1).Value = T(1, I)
    .Cells(ligExport, 2).Value = Replace(T(2, I), Chr(13), "")
    '.Cells(I, 3).FormulaLocal = "=NB.SI.ENS(FReponses!I:I;B" & I & ";FReponses!C:C;A" & I & ")"
    '.Cells(I, 3).Value = WorksheetFunction.COUNTIFS(FReponses!I:I;B" & I & ";FReponses!C:C;A" & I & ")
    ligExport = ligExport + 1
End If
Next I

Je suis entrain de me dire que ça reprend l'idée de vince

En clair tu ne lies pas la ligne sur laquelle tu écris avec ta variable, car elles ne seront pas synchronisées, dans ce cas, tu enregistres le numéro de la ligne sur lequel tu écris dans une variable, et tu l'incrémentes quand tu écris sur la ligne en question

Merci beaucoup à vous ça marche au poil

je m'en sortais pas donc encore mille merci

De rien

merci d'avoir passé le sujet résolu

Rechercher des sujets similaires à "next decrementer"