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

Boucle FOR auto-adaptable

Creepy

XLDnaute Accro
Bonjour à tous,

J'ai une petite question pas bien compliquée, mais qui me pose souvent probleme. Voici mon code :


Ma boucle recherche la dernière ligne de mon tableau. Mais pendant la procédure j'efface des lignes, ce qui fait que la fin de mon tableau change.

quelle est le moyen le plus 'propre' de changer la fin de mon tableau ?

Parce que là, à la fin de ma macro, j'ai une 40aines de lignes toutes bleues (le code ne s'adapte pas à la fin du tableau, garde la fin de départ.

Merci d'avance

++

Creepy
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

essaies de boucler à l'envers pour voir (c'est toujours plus facile quand tu supprimes des lignes

For A = Range('A4').End(xlDown).Row To 4 Step -1

et dans ce cas retire le A=A-1

Bon courage
 

dg62

XLDnaute Barbatruc
Bonjour creepy, pascal76


Code:
Private Sub dede()
Dim A As Integer
Fin=Range('A4'Â'Â').End(xlDown).Row
A=4
do until A=Fin
If (Range('B' & A).Value = 'NA' Or Range('B' & A).Value = '-' Or Range('B' & A).Value = '0'Â'Â') And (Range('C' & A).Value = 'NA' Or Range('C' & A).Value = '-' Or Range('C' & A).Value = '0'Â'Â') And (Range('D' & A).Value = 'NA' Or Range('D' & A).Value = '-' Or Range('D' & A).Value = '0'Â'Â') Then
Range('N' & A).EntireRow.Delete
fin = fin-1
A=A+1
End If
If Range('B' & A).Value = '' Then
Range('A' & A & ':Y' & A).Font.Bold = True
Range('A' & A & ':Y' & A).Interior.ColorIndex = 37
End If
loop
End Sub

non testé


Désolé mais ça marche pas !

Message édité par: dg62, à: 19/04/2005 10:11

Message édité par: dg62, à: 19/04/2005 10:27
 

Hervé

XLDnaute Barbatruc
Bonjour

Je pense qu'il vaut mieux boucler en partant de la fin :

Code:
Public Sub vev()
Dim i As Integer, j As Integer

For i = Range('a65536').End(xlUp).Row To 4 Step -1
    For j = 2 To 4
        If Cells(i, j) = 'NA' Or _
           Cells(i, j) = '-' Or _
           Cells(i, j) = '0' Then
           Rows(i).Delete
        End If
    Next j
    If Cells(i, 2) = '' Then
        Range(Cells(i, 1), Cells(i, 25)).Font.Bold = True
        Range(Cells(i, 1), Cells(i, 25)).Interior.ColorIndex = 37
    End If
Next i
End Sub

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