XL 2013 suppression de ligne en fonction de cellules vide dans trois colonnes

lagodille

XLDnaute Occasionnel
Bonjour à tous,

j'ai besoin de supprimer les lignes entre la ligne 16 et l ligne 200 et dont les colonnes A, D, et G sont vides et j'ai fait cela

Sub sup_CelVide()
Dim celvide As Variant
Sheets("DEVIS").Select
For Each celvide In Range("A16:A200" & Range("D" & Range("G" & Rows.Count).End(xlUp).Row))
If celvide = "" And celvide.Offset(0, 3) = "" And celvide.Offset(0, 6) = "" Then
Rows(celvide.Row).EntireRow.Delete
End If
Next celvide
End Sub


Mais cela ne fonctionne pas pourquoi ?

merci d'avance
 

patty58

XLDnaute Occasionnel
Bonjour Iago, bonjour à tous

Essaie cela :

VB:
Sub sup_CelVide()
Sheets("DEVIS").Select
For i = 200 To 16 Step -1
    If Cells(i, 1) = "" And Cells(i, 4) = "" And Cells(i, 7) = "" Then
        Rows(i).EntireRow.Delete
    End If
Next
End Sub

Dis-moi si cela t'aide
Bonne soirée
 

patty58

XLDnaute Occasionnel
Bonjour
Cela marche chez moi.
Tu ne me dis pas quelle est le type d'erreur.
D'autre part, avec un extrait de ton fichier, je pourrais peut-être t'aider plus efficacement.
Merci pour moi et donc, pour toi.
Bonne journée
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une autre façon de faire (sans boucle)
Tout comme chez patty58, mon code fonctionne (puisque je l'ai testé avant de le poster)
VB:
Sub sup_CelVide_TER()
Dim rng As Range, F As Worksheet: Set F = Sheets("DEVIS")
Application.ScreenUpdating = False
Set rng = F.Cells(16, "A").Resize(F.Cells(Rows.Count, "G").End(3).Row - 15, 7)
    With rng.Offset(, 8).Resize(, 1)
        .FormulaR1C1 = "=IF(COUNTA(RC[-8],RC[-5],RC[-2])=0,""$"",0)"
        .Value = .Value
        .SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
    End With
F.Columns(9).Delete
End Sub
Evidemment, il fonctionne sur mon fichier exemple tel que je l'ai construit ;)
A défaut d'avoir vu le fichier exemple du demandeur (*)

(*) allégé et anonymisé dans les règles de l'art ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :) ,

Pour saluer et faire plaisir à @Staple1600, une suppression en une seule instruction donc sans boucle 😋
Testé sur le classeur joint. Cliquez sur le bouton Hop!

VB:
Sub sup_CelVide()
   With Sheets("Devis").Rows("16:200")
      On Error Resume Next
      Intersect(.Columns("a:a").SpecialCells(xlCellTypeBlanks).EntireRow, _
         .Columns("d:d").SpecialCells(xlCellTypeBlanks).EntireRow, _
         .Columns("g:g").SpecialCells(xlCellTypeBlanks).EntireRow).Delete
   End With
End Sub
 

Pièces jointes

  • lagodille- Suppr ligne condition- v1.xlsm
    34.8 KB · Affichages: 9

Staple1600

XLDnaute Barbatruc
Bonjour mapomme

Merci pour les endives
(Ca me donne des idées pour ce midi ;)
endives-jambon béchamel)

NB: Tu devrais renommer ta macro pour éviter le risque bien connu
de "Quand je lance ta macro, j'ai une erreur..."
;)
je dis cela pour les téméraires qui ferait un copier/coller dans le fichier exemple du demandeur où se niche déjà la macro originale ;)
 

Staple1600

XLDnaute Barbatruc
Re

mapomme
J'ai stapelisé ton code
Puis je l'ai essayé
VB:
Sub sup_mapomme()
With Sheets("Devis").Rows("16:200")
On Error Resume Next
Intersect(.Columns(1).SpecialCells(4).EntireRow, .Columns(4).SpecialCells(4).EntireRow, .Columns(7).SpecialCells(4).EntireRow).Delete
End With
End Sub
Toi tu fais dans le radical-socialiste
Moi, je fais dans le socialiste
Précisions: ces considérations politiques ne sont là que pour la blague et aucun animal n'a été blessé pendant l'exécution des macros. ;)

En clair, mon code ne supprime les lignes que si les cellules des colonnes A,D et G sont vides sur celles-ci
Toi si toute la ligne est vide, elle est supprimée.
 
J

JEREMIE.DS@92

Guest
Bonjour Patty,

Désolé mais cela ne fonctionne pas :(
Est-ce que ce n'est pas plus simple de filtrer sur ton tableau sur [vide] -filtre textuel- et ensuite de choisir Onglet Accueil->groupe Rechercher et remplacer, commande Atteindre. Ensuite tu cliques sur cellules visibles seulement. Ils sont sélectionnés, tu choisis Supprimer dans le groupe cellules.
 

Discussions similaires

Réponses
7
Affichages
292