Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Boucle For ne s'exécute pas comme une boucle et boucle infinie

Stéphane_1

XLDnaute Nouveau
Bonjour,

Dans mon programme je peut créer jusqu'à 2 lignes à partir d'une, et des valeurs sont modifiées dans les 3 lignes. J'ai demandé au programme de s'assurer que ces valeurs n'étaient pas égale à 0 et de supprimer la ligne si c'était le cas. Sauf qu'après être passé sur les conditions au lieu de recommencer pour i =1 et i = 2 il passe directement à la suite. C'est arrivé après que j'ai ajouté I = I - 1, et retirer cette ligne n'a évidemment rien changé. Quand la boucle s'exécutait "correctement" c'était une boucle infinie, je ne sais pas pourquoi.

Voici mon code :

For I = 0 To I > 2

If ActiveCell.Offset(I, -1).Value = 0 Then

Rows(ActiveCell.Row + I).EntireRow.Delete
I = I - 1

ElseIf ActiveCell.Offset(I, 0).Value = 0 Then

Rows(ActiveCell.Row + I).EntireRow.Delete
I = I - 1

End If

Next I

PS :

Merci d'avance pour vos réponses
 
Dernière édition:
Solution
C'est bon, j'ai résolus la boucle infini en commençant par I = 2 et aves Step -1. Ma boucle finale donne ça :
VB:
For I = 2 To 0 Step -1
            
    If ActiveCell.Offset(I, -1).Value = 0 Or ActiveCell.Offset(I, 0).Value = 0 Then
                
        Rows(ActiveCell.Row + I).EntireRow.Delete
                
    End If
            
Next I

Stéphane_1

XLDnaute Nouveau
C'est bon, j'ai résolus la boucle infini en commençant par I = 2 et aves Step -1. Ma boucle finale donne ça :
VB:
For I = 2 To 0 Step -1
            
    If ActiveCell.Offset(I, -1).Value = 0 Or ActiveCell.Offset(I, 0).Value = 0 Then
                
        Rows(ActiveCell.Row + I).EntireRow.Delete
                
    End If
            
Next I
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…