Suppression de ligne si une cellule = 0
steph_gdp
Messages postés
35
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à faire ceci:
si M2=0 alors supprimer ligne 11
si N2=0 alors supprimer ligne 12
si O2=0 alors supprimer ligne 13
si P2=0 alors supprimer ligne 14
....
etc jusqu'a :
si AC2=0 alors supprimer ligne 27
soit 17 suppression de ligne possible sur un bouton macro
Quelqu'un serait t'il succeptible de réaliser cela pour moi?
Merci
Je cherche à faire ceci:
si M2=0 alors supprimer ligne 11
si N2=0 alors supprimer ligne 12
si O2=0 alors supprimer ligne 13
si P2=0 alors supprimer ligne 14
....
etc jusqu'a :
si AC2=0 alors supprimer ligne 27
soit 17 suppression de ligne possible sur un bouton macro
Quelqu'un serait t'il succeptible de réaliser cela pour moi?
Merci
A voir également:
- Vba supprimer ligne si cellule contient
- Supprimer rond bleu whatsapp - Guide
- Partager photos en ligne - Guide
- Supprimer page word - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
4 réponses
Bonjour
Alt F11 pour ouverture editeur VBA
Insertion
Module
Dans le module mettre le code suivant
Sub Efface()
For n = 1 To 17
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
Fermer l'éditeur
Créer le bouton et mettre dans son code le nom de la macro
Cdlmnt
Alt F11 pour ouverture editeur VBA
Insertion
Module
Dans le module mettre le code suivant
Sub Efface()
For n = 1 To 17
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
Fermer l'éditeur
Créer le bouton et mettre dans son code le nom de la macro
Cdlmnt
bin, essaies un peu de coder et si si tu y arrives pas, quelqu'un t'aideras
C'est pas vrai de lire des trucs comme ca
C'est pas vrai de lire des trucs comme ca
desolé via55 je comprends pas trop les macros,
1/ si je commence a P2 jusqu'a AF2 je change quel valeur?
2/si par la suite je dois supprimer une ligne supplementaire de 11 à 28, soit P2 jusqu'a AG2 je change quel valeur?
Merci de ta comprehension :)
1/ si je commence a P2 jusqu'a AF2 je change quel valeur?
2/si par la suite je dois supprimer une ligne supplementaire de 11 à 28, soit P2 jusqu'a AG2 je change quel valeur?
Merci de ta comprehension :)
Bonjour
J'adapte la macro pour des cas variables Remplacer la précédente par :
Sub efface()
d = InputBox("Colonne de départ")
f = InputBox("Colonne de fin")
a = Range(d & "2").Column
b = Range(f & "2").Column
x = 11 + b - a
For n = b To a Step -1
If Cells(2, n).Value = 0 Then
Rows(x).Select:
Selection.Delete Shift:=xlUp
End If
x = x - 1
Next n
End Sub
:Il suffit de rentrer P et AF ou AG lorsque te sera demandé les colonnes de debut et de fin, la macro fait le reste
Les lignes à effacer commencent en ligne 11 comme voulu , c'est la ligne x = 11 + b - a dans la macro
Si tu veux changer cette ligne de départ il faut modifier le 11 dans la macro
Me dire si tout fonctionne comme tu veux
Cdlmnt
J'adapte la macro pour des cas variables Remplacer la précédente par :
Sub efface()
d = InputBox("Colonne de départ")
f = InputBox("Colonne de fin")
a = Range(d & "2").Column
b = Range(f & "2").Column
x = 11 + b - a
For n = b To a Step -1
If Cells(2, n).Value = 0 Then
Rows(x).Select:
Selection.Delete Shift:=xlUp
End If
x = x - 1
Next n
End Sub
:Il suffit de rentrer P et AF ou AG lorsque te sera demandé les colonnes de debut et de fin, la macro fait le reste
Les lignes à effacer commencent en ligne 11 comme voulu , c'est la ligne x = 11 + b - a dans la macro
Si tu veux changer cette ligne de départ il faut modifier le 11 dans la macro
Me dire si tout fonctionne comme tu veux
Cdlmnt
oui ca va, ca fonctionne mais comme j'ai rajouter des choses sur ma page avec une partie a supprimer en haut et une partie en bas j'ai du creer 2 macros comme ceci :
y'a t'il moyen de fussionner les 2 en 1?
1ere macro:
Sub Efface()
For n = 18 To 1 Step -1
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
2eme macro:
ub Efface2()
For n = 19 To 1 Step -1
y = n + 30
x = n + 67
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
merci
y'a t'il moyen de fussionner les 2 en 1?
1ere macro:
Sub Efface()
For n = 18 To 1 Step -1
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
2eme macro:
ub Efface2()
For n = 19 To 1 Step -1
y = n + 30
x = n + 67
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
merci
Si tu veux que les 2 macros s'executent l'une apres l'autre :
Sub Efface()
For n = 18 To 1 Step -1
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
For n = 19 To 1 Step -1
y = n + 30
x = n + 67
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
Sub Efface()
For n = 18 To 1 Step -1
y = n + 12
x = n + 10
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
For n = 19 To 1 Step -1
y = n + 30
x = n + 67
If Cells(2, y) = 0 Then
Rows(x).Select
Selection.Delete Shift:=xlUp
End If
Next n
End Sub
bonjour,
une alternative pour éviter cette histoire de remonter les lignes et en réduisant le nombre de boucles aux seules valeurs zéro et sans select-selection
une alternative pour éviter cette histoire de remonter les lignes et en réduisant le nombre de boucles aux seules valeurs zéro et sans select-selection
Option Explicit
Sub supprimer_si_zero()
Dim Nbre_z As Byte, Col As Byte, Cptr As Byte, Ligne As Byte, Supprim As String
Application.ScreenUpdating = False
Nbre_z = Application.CountIf(Range("M2:AC2"), 0)
Col = 12
For Cptr = 1 To Nbre_z
Col = Rows(2).Find(0, Cells(2, Col), xlValues).Column
Ligne = Col - 2
Supprim = Supprim & Ligne & ":" & Ligne & ","
Next
Supprim = Left(Supprim, Len(Supprim) - 1)
Range(Supprim).EntireRow.Delete
End Sub
les macros de suppression de lignes nécessitent une boucle à l'envers, en partant de la dernière ligne vers la première, afin de ne pas louper des lignes entre deux.
Il vaudrait mieux donc faire Cordialement.
Y'a t'il autre chose a remplacer mise a part For n = 17 To 1 Step -1 en reprenant la programmation de via55?
merci
Je rentre et je découvre le message
Oui Chossete a raison il faut partir de la fin
Je viens d'essayer ça fonctionne parfaitement sii les indications que tu as données au début n'ont pas changé colonne M à AC et suppression de 11 à 27,
Sinon évidement il faut changer les valeurs dans la macro
A suivre