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

Suppression de lignes dans une plage sous condition.

  • Initiateur de la discussion Initiateur de la discussion Flop
  • 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 !

Flop

XLDnaute Occasionnel
Bonjour à tous et bon week end à ceux qui ne travaillent pas !

je cherche à faire 2 macros que j'explique dans le fichier.

il s'agit de supprimer des lignes dans une plage avec des conditions. j'espere avoir été clair dans le fichier, car depuis ce matin je me bagarre avec des macros, mais j'arrive à rien faire de probant.

merci d'avance.

PS : le fichier est trop gros de qq KO meme en ZIP, je le mets ailleurs :

senduit | Share easily.
 
Re : Suppression de lignes dans une plage sous condition.

Salut Flop,

Je ne sais pas par chez toi, mais chez moi ça fait flop-flop 😉

Félicitation pour ton explication, nikel chrome

Voilà ton fichier avec le code

A+
 

Pièces jointes

Re : Suppression de lignes dans une plage sous condition.

chez moi aussi ca flop-flop 🙂

concernant l'explication, c'est bcq plus simple quand c'est clair, si on veux de l'aide..

autre question pour acceller le traitement de la macro ?

ce qui donne la valeur #N/A est une rechercheV, comment faire le temps de l'execution de la macro pour bloquer le recalcul, car à chaque fois que je supprimer une ligne, il m'indique dans la barre d'etat recalcul 10%.. merci

j'ai trouvé ca avec l'enregistreur de macro

Code:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 07/06/2008 par Flop
'

'
    With Application
        .Calculation = xlManual
        .MaxChange = 0.001
        .CalculateBeforeSave = False
    End With
    ActiveWorkbook.PrecisionAsDisplayed = False
End Sub
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 07/06/2008 par Flop
'

'
    With Application
        .Calculation = xlAutomatic
        .MaxChange = 0.001
    End With
    ActiveWorkbook.PrecisionAsDisplayed = False
    Range("H15").Select
End Sub
 
Dernière édition:
Re : Suppression de lignes dans une plage sous condition.

bon ca marche presque, mais il y a encore un truc qui ne fonctionne pas comme je voudrais, comme quoi je me suis mal exprimé.. il ne faut jamais supprimer la ligne qui comporte 1 dans la plage (C65: fin de colonne C)

j'ai modifié un peu ton code pour tenir compte de la phrase du dessus, ca marche dans l'exemple mais pas dans mon vrai fichier.. je cherche pourquoi..
 
Dernière édition:
Re : Suppression de lignes dans une plage sous condition.

Re,

Alors ça donne :
Code:
Sub Macro1()
  Dim DerLig As Long, Lig As Long
  ' Pour accélérer le traitement
  Application.ScreenUpdating = False
 [COLOR=blue][B] Application.Calculation = xlManual
[/B][/COLOR]  With Sheets("Original")
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    For Lig = DerLig To 66 Step -1
      ' Vérifier qu'il n'y ait pas école dans la colonne C
      If InStr(1, .Range("C" & Lig), "ecole", vbTextCompare) = 0 Then
        If [COLOR=blue][B].Range("C" & Lig) <> 1[/B][/COLOR] And IsError(.Range("D" & Lig)) Then
          .Rows(Lig).EntireRow.Delete
        End If
      End If
    Next Lig
  End With
  Application.ScreenUpdating = True
  [COLOR=blue][B]Application.Calculation = xlAutomatic[/B][/COLOR]
End Sub

Et pour l'autre
Code:
Sub Macro2()
  Dim DerLig As Long, Lig As Long
  Application.ScreenUpdating = False
  [B][COLOR=blue]Application.Calculation = xlManual[/COLOR][/B]

  With Sheets("Original")
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    For Lig = DerLig To 66 Step -1
      ' Vérifier qu'il n'y ait pas école dans la colonne C
      If InStr(1, .Range("C" & Lig), "ecole", vbTextCompare) = 0 Then
        If .Range("C" & Lig) <> 1 And IsError(.Range("D" & Lig)) Then
          .Rows(Lig).EntireRow.Delete
        End If
      End If
    Next Lig
  End With
  Application.ScreenUpdating = True
  [COLOR=blue][B]Application.Calculation = xlAutomatic[/B][/COLOR]
End Sub

Essaye ça 😉

A+
 
Re : Suppression de lignes dans une plage sous condition.

Merci bcq, la macro 1 fonctionne impeccablement, la macro 2 marche aussi mais j'ai du modifié 2/3 trucs pour adapter.. merci bcq pour ton boulot !
 
Re : Suppression de lignes dans une plage sous condition.

@ BrunoM45

comment rajouter une boucle pour changer :

3 feuilles nomées original 1, original 2, original 3

Code:
With Sheets("Original")

j'ai essayer ceci mais sans succés
Code:
Sub Macro1()
  Dim DerLig As Long, Lig As Long
  ' Pour accélérer le traitement
  Application.ScreenUpdating = False
  Application.Calculation = xlManual
[COLOR="Red"]For sh = 1 To 3[/COLOR]
[COLOR="Red"]With Sheets("Original" & sh)[/COLOR]
'  With Sheets("Original")
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    For Lig = DerLig To 66 Step -1
      ' Vérifier qu'il n'y ait pas école dans la colonne C
      If InStr(1, .Range("C" & Lig), "ecole", vbTextCompare) = 0 Then
        If .Range("C" & Lig) <> 1 And IsError(.Range("D" & Lig)) Then
          .Rows(Lig).EntireRow.Delete
        End If
      End If
    Next Lig
  End With
  Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic
[COLOR="Red"]Next sh[/COLOR]
End Sub

merci d'avance.
 
Re : Suppression de lignes dans une plage sous condition.

Re,

@ BrunoM45
comment rajouter une boucle pour changer : 3 feuilles nomées original 1, original 2, original 3
j'ai essayer ceci mais sans succés

Pourtant tu n'étais pas loin 😉
Code:
Sub Macro1()
  Dim DerLig As Long, [B][COLOR=blue]Sh as Integer[/COLOR][/B], Lig As Long
  ' Pour accélérer le traitement
  Application.ScreenUpdating = False
  Application.Calculation = xlManual
[COLOR=red]For sh = 1 To 3[/COLOR]
[COLOR=red]With Sheets[COLOR=blue][B]("Original "[/B][/COLOR] & sh) [/COLOR][COLOR=blue]' Un espace à la fin de Original[/COLOR]
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    For Lig = DerLig To 66 Step -1
      ' Vérifier qu'il n'y ait pas école dans la colonne C
      If InStr(1, .Range("C" & Lig), "ecole", vbTextCompare) = 0 Then
        If .Range("C" & Lig) <> 1 And IsError(.Range("D" & Lig)) Then
          .Rows(Lig).EntireRow.Delete
        End If
      End If
    Next Lig
  End With
  Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic
[COLOR=red]Next sh[/COLOR]
End Sub

Voilà 🙂
 
Dernière modification par un modérateur:
Re : Suppression de lignes dans une plage sous condition.

Flop,

Tu est en Option Explicit
Tu dois obligatoirement déclarer tes variables

Donc, première ligne rajouter "Sh as Integer"

A+
 
Re : Suppression de lignes dans une plage sous condition.

je l'ai mis en premiere ligne juste sous sub et il me dit :

erreur de compilation :

instruction incorrecte à l'exterieur d'un bloc de type..

le message change c'est déja pas mal !
---------------------------------------------------------------
edit:

il me manquait le DIM devant SH as integer
 
Dernière édition:
- 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

M
Réponses
5
Affichages
884
MarinaF
M
A
Réponses
9
Affichages
1 K
arnaudguerin
A
T
Réponses
6
Affichages
3 K
Tino0733
T
D
Réponses
5
Affichages
4 K
davids petrucci
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…