Suppression zero sur plusieurs colonnes

Bonjour à tous

Je viens vers vous après plusieurs heures de recherches infructueuses, je débute en VBA et j'ai le problème suivant :

J'extrais d'une base de données plusieurs colonnes d'informations, sur la plupart d'entres-elles j'obtiens des zéros sur chaque ligne et j'aimerais supprimer les lignes où je n'ai que des zéro.

voici le code que j'ai réalisé mais il n'est pas optimisé et il y a sans doute une meilleure manière de faire

Sub Test()

Dim i As Long

Application.ScreenUpdating = False

i = 65000

Do While Range("B" & i) = 0

If Range("C" & i) = 0 And Range("D" & i) = 0 ...jusque I Then

Rows(i).EntireRow.Delete

i = i - 1

End If

i = i + 1

Loop

End Sub

Je vous remercie d'avance pour votre aide

Bonjour,

Sub Test()
    Dim i As Long, n As Long
    Application.ScreenUpdating = False
    With ActiveSheet
        n = .Cells(.Rows.Count, 2).End(xlUp).Row
        For i = 1 To n
            If WorksheetFunction.Sum(.Cells(i, 2).Resize(, 8)) = 0 Then _
             .Cells(i, 2).ClearContents
        Next i
        .Range("B1:B" & n).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub

En l'absence de fichier, sous réserve que les colonne B à I contiennent des valeurs numériques...

Si la ligne 1 est une ligne d'en-tête, faire partir la boucle de 2 et non de 1 (sinon la ligne 1 sera supprimée !)

Si macro lancée à partir d'une autre feuille (bouton...) remplacer activesheet par la désignation de la feuille.

Cordialement.

ça fonctionne magnifiquement bien je vous remercie, néanmoins j'ai du mal a comprendre la plupart du code. Je me forme sur un tuto venant d'openclassroom mais cela reste les bases, pourriez vous m'aiguiller vers un tuto pour les confirmés ? Mon projet s'annonce compliqué et je ne vais pas venir poster ici à chaque fois que je rencontre un problème.

Encore merci

Je me souviens avoir émis quelque critique sur OpenClassRoom sur un autre sujet il y a peu de temps.

Non pas sur les explications, qui sont excellentes, mais sur quelques à côtés. En particulier 2 éléments :

D'abord dire que l'on n'a pas besoin de désigner la feuille dans une expression parce que l'on s'y trouve et qu'elle est la feuille active, ce qui incite le débutant à ne pas qualifier ses expressions s'il n'y est pas expressément obligé, soit à produire un code approximatif et nécessairement plus lent.

Ensuite le choix des premiers exemples sur les méthodes Select et Activate, ce que je considère inciter à les utiliser alors qu'il est toujours préférable de s'en dispenser si ce n'est pas l'objectif unique de l'action...

En ce qui concerne la procédure de suppression, elle est assez simple. Plutôt que de les supprimer une à une, on vise à les supprimer d'un seul coup, en créant sur la colonne B des cellules vides que l'on peut regrouper avec la méthode SpecialCells afin de procéder à la suppression des lignes de ces cellules.

On va donc opérer une boucle sur toutes les lignes (comme on ne supprime pas individuellement, il n'est pas utile de parcourir en partant du bas), et on va tester le critère de suppression sur chaque ligne.

La condition est que 8 cellules contiennent la valeur 0. Si c'est le cas, leur somme sera égale à zéro. Tester la somme sera très légèrement plus rapide que parcourir les 8 cellules à chaque fois. Ce que l'on fait en utilisant la fonction Excel (il n'y a pas de fonction Somme en VBA).

Si la condition est vérifiée, on efface la cellule en B. Dans la mesure où l'on intervient sur la feuille d'une façon qui modifierait l'affichage, on inhibe préalablement ce dernier pour que le déroulement soit plus rapide.

En matière de tutos, tu as les cours des sites spécialisés dont celui-ci. Pour être en mesure de mieux utiliser les outils qu'offre VBA, je conseillerais volontiers d' avoir une vue précise des différents types de modules et de leur utilisation, des types de procédures et leur portée, les variables, les tableaux, les boucles, les instructions spécifiques. Cela fait quelques chapitres importants que l'on ne digère pas du premier coup mais qu'il est indispensable d'approfondir...

Cordialement.

Rechercher des sujets similaires à "suppression zero colonnes"