XL 2010 Correction macro supprimant les lignes avec '' 0 '' en début de tableau

Acritas

XLDnaute Nouveau
Bonjour tout le monde !

En colonne B de mon tableau, j'ai une variable qui est le chiffre ''0''(Zéro) j'ai trouvé sur le forum une macro que j'ai adaptée et ça semble marcher

Je cherche comment faire pour qu'elle n'agisse pas s'il n'y a aucun chiffre ''0''(Zéro) dans la colonne B

--> pour le moment, lorsque le chiffre ''0'' n'est pas dans une des cellules de la colonne B, elle (la macro) déplace ma colonne B vers la colonne C, et la remplace par une colonne contenant les autres données de la colonne B actuelle déjà présentes dans le tableau

Voici la macro :

VB:
Sub supp_ligne_zero_formule()

    ActiveSheet.Unprotect "motdepasse"

Application.ScreenUpdating = False

Columns("B:B").Insert Shift:=xlToRight

Range("B16:B" & [C65536].End(xlUp).Row).Value = Range("C16:C" & [C65536].End(xlUp).Row).Value

With Range("B16:B" & [B65536].End(xlUp).Row)

    .Replace What:="0", Replacement:="", LookAt:=xlWhole

    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End With

Columns("B:B").Delete Shift:=xlToLeft

Application.ScreenUpdating = True

 ActiveSheet.Protect "motdepasse", True, True, True

End Sub

Autres précisions :

1- je place la macro dans la feuille elle-même
2- le code doit s'exécuter malgré la présence d'un mot de passe
3- je suis en Excel 2010
4- le ''0'' résulte de formules importée par un "=" (égal) issue d'une autre feuille du classeur

Merci beaucoup de votre aide !
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour,

Sans fichier, un code pourrait être lent en fonction du nombre de lignes à traiter.
La boucle commence par la dernière ligne.
VB:
Sub supp_ligne_zero_formule()
   Dim dl As Long, i As Long
   Me.Unprotect "motdepasse"

   Application.ScreenUpdating = False
   Application.Calculation = xlManual

   dl = Range("C" & Rows.Count).End(xlUp).Row
   For i = dl To 16 Step -1
      If Range("C" & i).Value = 0 Then Rows(i).Delete 'supprime aussi cellule vide
   Next i

   Application.Calculation = xlAutomatic
   Application.ScreenUpdating = True

   Me.Protect "motdepasse", True, True, True

End Sub
 

Acritas

XLDnaute Nouveau
Bonjour,

Sans fichier, un code pourrait être lent en fonction du nombre de lignes à traiter.
La boucle commence par la dernière ligne.
VB:
Sub supp_ligne_zero_formule()
   Dim dl As Long, i As Long
   Me.Unprotect "motdepasse"

   Application.ScreenUpdating = False
   Application.Calculation = xlManual

   dl = Range("C" & Rows.Count).End(xlUp).Row
   For i = dl To 16 Step -1
      If Range("C" & i).Value = 0 Then Rows(i).Delete 'supprime aussi cellule vide
   Next i

   Application.Calculation = xlAutomatic
   Application.ScreenUpdating = True

   Me.Protect "motdepasse", True, True, True

End Sub
Merci bien !
je regarde et te reviens
 

Discussions similaires

Réponses
2
Affichages
147
Réponses
0
Affichages
147
Réponses
1
Affichages
164

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 072
dernier inscrit
Remithesix