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 !

nadir****

XLDnaute Occasionnel
Bonjour.

J'ai écrit le code suivant (en pièce jointe) mais il ne fonctionne pas correctement.
Je voudrais éliminer d'un tableau toutes les lignes qui sont à 0 et toutes les colonnes qui sont à 0.
Pourriez vous m'aider à le débugger ?

Merci.

Nadir.

PS, merci à Hasco qui m'a donné une première pour un problème similaire.
Je me suis fortement inspiré de sa solution.
 

Pièces jointes

Re : Debug

Re,

à tester

Code:
Sub SuppligcolZero()
    Dim plage As Range
    Dim i As Long, j As Long
    Dim lignes As Long, colonnes As Long
    Dim Zero As Boolean
    
    Set plage = ActiveCell.CurrentRegion
    
' suppression des colonnes à 0
    lignes = plage.Rows.Count
    colonnes = plage.Columns.Count
    For i = lignes To 1 Step -1
        Zero = True
        For j = 1 To colonnes
            If plage(i, j) <> 0 Then
                Zero = False
                Exit For
            End If
        Next
        If Zero Then plage.Rows(i).Delete xlShiftUp
    Next
' Suppression des lignes à 0
    lignes = plage.Rows.Count
    colonnes = plage.Columns.Count
    
    For i = colonnes To 1 Step -1
        Zero = True
        For j = 1 To lignes
            Zero = True
            If plage(j, i) <> 0 Then
                Zero = False
                Exit For
            End If
        Next
            If Zero Then plage.Columns(i).Delete xlToLeft
    Next
End Sub
 
Re : Debug

Re,

J'ai vu deux choses :

ton code ne fonctionnait pas si la dernière valeur d'une ligne ou d'une colonne était non nulle, il supprimait la ligne ou la colonne quand même

et pour la 2ème partie du code, tu as oublié d'inverser i et j là dedans :

Code:
Plage(i,j)
 
Re : Debug

Avec somme

Code:
Sub SuppligcolZero()

    Dim plage As Range
    Dim i As Long
    Dim li As Long, co As Long
    
    
    Set plage = ActiveCell.CurrentRegion
' suppression des lignes à 0
    co = plage.Columns.Count
    For i = plage.Rows.Count To 1 Step -1
        If WorksheetFunction.Sum(Range(plage(i, 1), plage(i, co))) = 0 Then plage.Rows(i).Delete xlShiftUp
    Next


    Set plage = ActiveCell.CurrentRegion
' Suppression des colonnes à 0
    li = plage.Rows.Count
   For i = plage.Columns.Count To 1 Step -1
        If WorksheetFunction.Sum(Range(plage(1, i), plage(li, i))) = 0 Then plage.Columns(i).Delete xlToLeft
   Next i
   
End Sub
 
- 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
12
Affichages
802
Réponses
4
Affichages
586
Retour