[VBA] Suppression lignes avec critère dans cellule

PLE

XLDnaute Nouveau
Bonjour

J'ai besoin de supprimer dans une feuille DATA
les lignes complètes dont la valeur dans la colonne AF (avec entête)
est supérieur à (valeur + 1) que je rentre sur Feuil DATA en cellule AG1
et
inférieur à la valeur en Feuil DATA cellule AH1



merci de m'écrire le code complet de SUB à END SUB

Merci de votre aide
 

VDAVID

XLDnaute Impliqué
Re : [VBA] Suppression lignes avec critère dans cellule

Bonjour PLE,

A tester dans un module ou dans le projet de ta feuille:

Code:
Sub SupprLng()

    Dim i As Long
    
    With Sheets("DATA")
    
        For i = .Range("AF65536").End(xlUp).Row To 2 Step -1
        
            If .Range("AF" & i).Value > .Range("AG1").Value + 1 And .Range("AF" & i).Value < .Range("AH1").Value Then
                
                .Rows(i).Delete
                
            End If
            
        Next i
        
    End With
    
End Sub

Bonne journée!
 

VDAVID

XLDnaute Impliqué
Re : [VBA] Suppression lignes avec critère dans cellule

Re,

les lignes complètes dont la valeur dans la colonne AF (avec entête)
est supérieur à (valeur + 1) que je rentre sur Feuil DATA en cellule AG1
et
inférieur à la valeur en Feuil DATA cellule AH1

Le problème ici c'est que la valeur en AG1 est de 4 et en AH1 est de 0 or une valeur ne peut pas être supérieure à 4 (+1) et inférieure à 0 en même temps ! S'il faut supprimer toutes les valeurs comprises entre 4(+1) et 0 il faut que la condition soit:

Code:
If .Range("AF" & i).Value < .Range("AG1").Value + 1 And .Range("AF" & i).Value > .Range("AH1").Value Then


Plutôt que:

Code:
If .Range("AF" & i).Value > .Range("AG1").Value + 1 And .Range("AF" & i).Value < .Range("AH1").Value Then

De plus, le nom de la feuille n'est pas "DATA" et au vue du nombre de données il est judicieux de rajouter un Application.ScreenUpdating = False pour accélerer le temps de traitement.

Le code:

Code:
Application.ScreenUpdating = False

    Dim i As Long
    
    With Sheets("Lieferung_TLB")
    
        For i = .Range("AF65536").End(xlUp).Row To 2 Step -1
        
            If .Range("AF" & i).Value < .Range("AG1").Value + 1 And .Range("AF" & i).Value > .Range("AH1").Value Then
                
                .Rows(i).Delete
                
            End If
            
        Next i
        
    End With
    
Application.ScreenUpdating = True
 

Discussions similaires

Réponses
7
Affichages
183

Statistiques des forums

Discussions
312 201
Messages
2 086 175
Membres
103 152
dernier inscrit
Karibu