modification code actualisation

sofiacasandra2016

XLDnaute Nouveau
Bonjour à tous,
dans le fichier ci-joint j'ai deux codes que j'ai trouvé dans ce forum et j'ai essayé d'appliquer la même chose pour une autre fichier personnel.
le problème apparaît lorsque je clique sur la feuille recap qui doit faire l'actualisation de l'onglet ODA Matos pour supprimer les lignes vides ou égale à zero mais comme vous pouvez remarque une fois j'appuie sur le feuille recap un message de bug sort et des lignes qui doivent être supprimé dans la feuille ODA Matos ne sont pas effacés

Merci d'avance pour votre assistance
 

Pièces jointes

  • RECAPITULATIF.xlsm
    119.5 KB · Affichages: 26

Lone-wolf

XLDnaute Barbatruc
Bonjour sofiacasandra :)

Supprime les lignes après LS = 0 et met ceci à la place, en déclarant avant
Dim derlig As Long, i as Long

'Supprimer ligne si colonnes H ou D vides
On Error Resume Next
Application.ScreenUpdating = False

With Sheets("ODA MATOS")
derlig = .Cells(Rows.Count, 4).End(xlUp).Row
For i = derlig To 8 Step -1
If .Cells(i, 4).Value = 0 Or IsEmpty(.Cells(i, 4)) Then
.Cells(i, 4).EntireRow.Delete shift:=xlUp
ElseIf .Cells(i, 8).Value = 0 Or IsEmpty(.Cells(i, 8)) Then
.Cells(i, 8).EntireRow.Delete shift:=xlUp
End If
Next i
End With
 
Dernière édition:

sofiacasandra2016

XLDnaute Nouveau
Bonjour Lonewolf,
merci beaucoup pour la rectification ça marche :) pouvez vous m'expliquer si c'est possible c'était quoi le problème ??
autre chose supposant que ce code je veux l'appliquer sur d'autres feuille (appelée : MANIP) et non pas seulement une,
je la rajoute sur cette ligne : With Sheets("ODA MATOS", "MANIP") comme ça ?

Merci encore une autre fois

Cordialement
Sofia
 

sofiacasandra2016

XLDnaute Nouveau
re,
si c'est comme ça ça n'a pas fonctionné pour moi ??


Dim derlig As Long, i As Long

On Error Resume Next
Application.ScreenUpdating = False

nom = Array("ODA MATOS", "MANIP")

For i = 1 To Sheets.Count
If Sheets(i).Name <> nom Then
Exit For
If Sheets(i).Name = nom Then
With Sheets(i)
derlig = .Cells(Rows.Count, 4).End(xlUp).Row
For i = derlig To 8 Step -1
If .Cells(i, 4).Value = 0 Or IsEmpty(.Cells(i, 4)) Then
.Cells(i, 4).EntireRow.Delete shift:=xlUp
ElseIf .Cells(i, 8).Value = 0 Or IsEmpty(.Cells(i, 8)) Then
.Cells(i, 8).EntireRow.Delete shift:=xlUp
End If
Next i


End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

Désolé pour le quack. Je ne sais pas pourquoi en mettant Array ça ne marche pas. Mais tu peux faire comme ceci 2 méthodes
Avec Sub test, il faut faire attention que tu aie bien "Feuil1", "Feuil2","Feuil3","Feuil4" comme en image, sinon c'est la cata.

vba_project.gif


VB:
Sub test()
For i = 1 To Sheets.Count
  If Sheets(i).Name <> "Ma Feuille" Then
'Le code
End If
Next
End Sub

Sub test2()
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Sheets
  If ws.Name <> "Ma Feuille" Then
'Le code
End If
Next ws
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

VB:
Sub test()
    For Each ws In ActiveWorkbook.Sheets
        If ws.Name = "ODA MATOS" Or ws.Name = "Manip" Then

            With ws
                derlig = .Cells(Rows.Count, 4).End(xlUp).Row
                For i = derlig To 8 Step -1
                    If .Cells(i, 4).Value = 0 Or IsEmpty(.Cells(i, 4)) Then
                        .Cells(i, 4).EntireRow.Delete shift:=xlUp
                    ElseIf .Cells(i, 8).Value = 0 Or IsEmpty(.Cells(i, 8)) Then
                        .Cells(i, 8).EntireRow.Delete shift:=xlUp
                    End If
                Next i
            End With
        Else
            Exit For
        End If
    Next ws
End Sub
 

Discussions similaires

Réponses
8
Affichages
648
Réponses
41
Affichages
4 K

Statistiques des forums

Discussions
312 175
Messages
2 085 952
Membres
103 058
dernier inscrit
florentLP