Supprimer plusieurs ligne par macro

Résolu
jof.27 Messages postés 80 Statut Membre -  
jof.27 Messages postés 80 Statut Membre -
Bonjour,
je cherche une seconde macro qui supprime les lignes a partir de la ligne 14 jusqu'à la ligne où dans la colonne H il y a la valeur la plus proche de -180; puis en faire une seconde supprimant les lignes à partir de la colonne H indiquant un nombre supérieur a 540 jusqu'à la fin.
mon tableau s'étant sur 10 colonnes et un nombre de lignes supérieur a 12000.
pour plus de renseignement ou avoir le fichier. demandez moi, j'espère m'être bien exprimé.
merci d'avance.
cdlt

13 réponses

Résumé de la discussion

Une macro Excel est proposée pour supprimer des lignes à partir de la 14e ligne jusqu'à celle où la valeur en colonne H est proche de -180, puis supprimer celles où H dépasse 540. Des solutions VBA ont été présentées, notamment une approche utilisant une colonne intermédiaire ou un filtre automatique pour identifier les lignes à supprimer et les effacer. Certaines propositions préconisent de copier-coller les valeurs pour éviter de perdre les formules, ou d’appliquer l’opération sur une copie du fichier afin de limiter les risques. En cas de très grandes bases, la vitesse d'exécution et la gestion des références peuvent être problématiques, ce qui implique d'adapter les colonnes ciblées et d’évaluer les alternatives.

Bobot (l'IA à votre service)
  1. WeaponEDGE
     
    Bonjour jof.27,

    Voilà une petite Macro qui devrait résoudre ton problème

    Sub Suppr_Inf180_Sup540()
    NB_Debut = Sheets(1).Cells(65536, 8).End(xlUp).End(xlUp).Row + 1
    Nb_Ligne = Sheets(1).Cells(65536, 8).End(xlUp).Row
        
    For i = NB_Debut To Nb_Ligne
        Valeur = Sheets(1).Cells(i, 8)
        
        If Valeur < -180 Then
            GoTo Fin
        Else
            Range(Rows(NB_Debut), Rows(i - 1)).Select
            Selection.Delete
            Exit For
        End If
    Fin:
    Next i
    
    Sheets(1).Cells(NB_Debut, 1).FormulaR1C1 = "=R[-10]C[7]-R[-10]C[6]"
    Sheets(1).Cells(NB_Debut, 12) = ""
    
    Nb_Ligne = Sheets(1).Cells(65536, 8).End(xlUp).Row
    
    For i = NB_Debut To Nb_Ligne
        Valeur = Sheets(1).Cells(i, 8)
        
        If Valeur > 540 Then
            Range(Rows(i), Rows(Nb_Ligne)).Select
            Selection.Delete
            Exit For
        End If
    Next i
    End Sub
    1
    1. jof.27 Messages postés 80 Statut Membre
       
      la macro fonctionne que pour tout ce qui est supérieur a 540 mais pour ce qui est inférieur a -180 elle ne marche pas.
      merci pour le temps que tu passes pour essayer de résoudre mon problème
      0
    2. jof.27 Messages postés 80 Statut Membre
       
      problème sur cette ligne apparemment
      Range(Rows(NB_Debut), Rows(i - 1)).Select
      merci de votre aide
      0
    3. WeaponEDGE
       
      C'est bizarre ça fonctionnait quand je la'i testé ?
      J'ai remarqué que les montants étaient classé dans l'ordre croissant en colonne H,
      C'est toujours le cas, ou parfois les montants sont mélangés ?

      Qu'est ce qui ce passe avec la ligne il fait un débug ?
      0
    4. jof.27 Messages postés 80 Statut Membre
       
      oui c'est toujours le cas. en fait devait y avoir un bug puisque je viens de la refaire elle a fonctionner seulement elle supprime que les valeurs supérieur a 540.
      mais cela me suffit ca va alléger mon fichier déja.
      merci beaucoup je vais partir sur une autre macro afin d'accomplir mon but final de faire des somme de la colonne L.
      merci beaucoup.
      0