XL 2013 Suppression lignes à condition

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 !

aminovsky

XLDnaute Nouveau
Bonjour à tous,
je cherche à rectifier le code ci-dessous pour me permettre de supprimer les lignes si la colonne H de la feuille "MATRIX" est vide ou égale à Zero.

VB:
Sub Suppression()
Dim oda, f, ln, nCol
oda = Array(Sheets("MATRIX"))
For Each f In oda
    If f.Name = "MATRIX" Then
        nCol = "H"
    Else
        nCol = "D"
    End If
    For ln = f.Range(nCol & Rows.Count).End(xlUp).Row - 4 To 7 Step -1

        If IsError(f.Range(nCol & ln)) Or IsEmpty(f.Range(nCol & ln)) Then
            f.Rows(ln).Delete shift:=xlUp
        End If
    Next ln
Next f
End sub
 
Bonjour Aminovsky, bonjour le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim M As Worksheet 'déclare la variable M (onglet Matrix)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim PAF As Range 'déclare la variable PAF (Plage À Effacer)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Set M = Worksheets("MATRIX") 'définit l'onglet M
DL = M.Range("H" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne H de l'onglet M
TV = M.Range("H7:H" & DL - 4) 'définit le tableau des valeurs TV
Set PAF = M.Range("A1") 'initialise la plage PAF (A1 ou n'importe quelle autre cellule)
For I = 1 To UBound(TV) 'boucle sur toutes les lignes I du tableau des valeurs TV
    'attention quand I vaut 1 cela correspond à la ligne 7 (I+6)
    If TV(I, 1) = 0 Or TV(I, 1) = "" Then 'condition : si la valeur en ligne I de TV est nulle ou vide
        Set PAF = IIf(PAF.Cells.Count = 1, M.Rows(I + 6), Application.Union(PAF, M.Rows(I + 6))) 'redéfinit la plage PAF
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
PAF.Delete 'efface la plage PAF
End Sub
 
Bonjour aminovsky,
Salut cher Robert 🙂

J'ai peut-être simplifié à l'extrême (mais sans fichier, on ne peut pas savoir 🙄)
Il me semble que je ne testerais pas la dernière cellule non-vide en colonne H, précisément!? Je ne sais pas non plus pourquoi 'Row -4' ??
VB:
Sub Suppression()
Dim ln
With Sheets("MATRIX")
  For ln = .Range("H" & Rows.Count).End(xlUp).Row To 7 Step -1
  If .Range("H" & ln) = 0 Or IsEmpty(.Range("H" & ln)) Then .Rows(ln).Delete
  Next ln
End With
End Sub
 
Bonjour Robert, Modeste, le Forum
vous trouverez ci-joint le code dans la feuille RECAP, le code se trouve en bas comme ceci:

VB:
'Supprimer ligne si colonnes H ou D vides
Dim oda, f, ln, nCol
oda = Array(Sheets("ODA MENS"), Sheets("ODA HOR"), _
            Sheets("CAP Congés (MENS)"), Sheets("CAP Congés (HOR)"))
For Each f In oda
    If f.Name = "ODA MENS" Or f.Name = "ODA HOR" Then
        nCol = "H"
    Else
        nCol = "D"
    End If
    For ln = f.Range(nCol & Rows.Count).End(xlUp).Row - 4 To 7 Step -1

        If IsError(f.Range(nCol & ln)) Or IsEmpty(f.Range(nCol & ln)) Then
            f.Rows(ln).Delete shift:=xlUp
        End If
    Next ln
Next f

au fait je voudrais supprimer les lignes si la colonne H de la feuille04 est vide ou égale à Zero. (la même chose pour la feuille05)
Puis supprimer les lignes si la colonne D de la feuille06 est vide ou égale à Zero. (la même chose pour la feuille07)

Merci
 
Re,

Ce qui est surprenant, c'est qu'avec tout le code présent dans ton fichier, tu aies besoin d'aide pour quelque chose d'aussi basique 😕
Il n'y a qu'un fifrelin à modifier dans ton code, pour qu'il fonctionne et la solution figure tant dans le code de Robert que dans le mien: remplace ton If IsError(f.Range(nCol & ln)) Or ... par If f.Range(nCol & ln) = 0 Or ...

Le code devant figurer dans un module standard.
 
- 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
312
Réponses
5
Affichages
704
Réponses
4
Affichages
580
Retour