Boucle FOR auto-adaptable

  • Initiateur de la discussion Initiateur de la discussion Creepy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Creepy

XLDnaute Accro
Bonjour à tous,

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

Private Sub dede()
Dim A As Integer
For A = 4 To Range('A4').End(xlDown).Row
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
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
Next
End Sub

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
899
Réponses
4
Affichages
721
Réponses
15
Affichages
762
Retour