Ma macro ne fonction pas

bonjour je tatone sur vba au secour SVP

'suprime ligne vide et perime feuil protege
Public Sub Workbook_open()
Dim i As Integer, DerniereLigne As Integer
Dim lig As Long
 ActiveSheet.Unprotect
DerniereLigne = Range("C65536").End(xlUp).Row
For i = DerniereLigne To 1 Step -1
    If Worksheets("MATRICE").Cells(i, 3) = "" Then Worksheets("MATRICE").Rows(i).Delete
Next i
For lig = [E65536].End(xlUp).Row To 1 Step -1
        If IsDate(Cells(lig, 5)) And Cells(lig, 5) < Date Then Rows(lig).Delete
    Next lig
 ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End Sub

j' ai une macro dans un classeur qui dois a l'ouverture du fichier ote la protection de la feuil "MATRICE" et supprime les lignes vide et supprime les lignes dont la date est périmé et protégé la feuil en fin de macro

Bonjour,

La feuille Matrice est elle la première feuille active à l'ouverture du classeur, sinon, il faudrait peut-être l'activer

Bonjour M12 et merci pour ton intérêt

oui je te confire la feuil "MATRICE" est la première feuil active

gouloom a écrit :

bonjour je tatone sur vba au secour SVP

'suprime ligne vide et perime feuil protege
Public Sub Workbook_open()
Dim i As Integer, DerniereLigne As Integer
Dim lig As Long
 ActiveSheet.Unprotect
DerniereLigne = Range("C65536").End(xlUp).Row
For i = DerniereLigne To 1 Step -1
    If Worksheets("MATRICE").Cells(i, 3) = "" Then Worksheets("MATRICE").Rows(i).Delete
Next i
For lig = [E65536].End(xlUp).Row To 1 Step -1
        If IsDate(Cells(lig, 5)) And Cells(lig, 5) < Date Then Rows(lig).Delete
    Next lig
 ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End Sub

j' ai une macro dans un classeur qui dois a l'ouverture du fichier ote la protection de la feuil "MATRICE" et supprime les lignes vide et supprime les lignes dont la date est périmé et protégé la feuil en fin de macro

hello quelqu'un aurait une solution pour me corriger je me tire les cheveux svp merci d'avance

Bonsoir,

ci-dessous proposition de code

Private Sub Workbook_Open()
    Dim xl As Excel.Application
    Dim ligne As Range, lignes_à_supprimer As Range

    Set xl = Application
    With Sheets("MATRICE")
        .Unprotect
        For Each ligne In .UsedRange.Rows
            If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") = Empty _
            Or (IsDate(ligne.Columns("E")) And ligne.Columns("E") < Date) Then
                If lignes_à_supprimer Is Nothing Then Set lignes_à_supprimer = ligne.EntireRow _
                Else Set lignes_à_supprimer = Union(lignes_à_supprimer, ligne.EntireRow)
            End If
        Next ligne
        lignes_à_supprimer.Delete
        .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
    End With
End Sub

bonjour

merci beaucoup pour ton aide quant je l’exécute j 'ai le message suivant

Variable objet non définie (Erreur 91)

Bonjour,

Petit ajustement s'il ne trouve pas de lignes à supprimer

Private Sub Workbook_Open()
    Dim xl As Excel.Application
    Dim ligne As Range, lignes_à_supprimer As Range
    Dim date_i As Date

    Set xl = Application
    With Sheets("MATRICE")
        .Unprotect
        For Each ligne In .UsedRange.Rows
            If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") = Empty _
            Or (IsDate(ligne.Columns("E")) And ligne.Columns("E") < Date) Then
                If lignes_à_supprimer Is Nothing Then Set lignes_à_supprimer = ligne.EntireRow _
                Else Set lignes_à_supprimer = Union(lignes_à_supprimer, ligne.EntireRow)
            End If
        Next ligne
        If Not lignes_à_supprimer Is Nothing Then lignes_à_supprimer.Delete
        .Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
    End With
End Sub

bonsoir un grand merci pour ton soutien

la suppression de la ligne d'ont la est périmé ne fonctionne pas

Bonjour,

Vérifie que la date périmée de ta ligne est bien reconnue par Excel comme une date et non comme du texte.

Si elle est bien reconnue comme date, elle doit être alignée à droite ou si tu change en nombre, le format de la cellule qui la contient, il doit s'afficher un nombre qui représente le nombre de jours depuis 1900 ou 1904.

bonjour et tout d'abord encore merci pour ton aide

j' utilise un userform pour travailler dans ma feuil matrice je te joint mon fichirer


les dates renseigner par l'userforme ne son pas reconnu comme des dates que faire !!!??

12purge.xlsm (37.54 Ko)

Bonsoir,

il suffit d'ajouter une fonction de conversion et de saisir l'heure comme ceci : 16:30 et non 16H30

    Cells(derligne, 2) = CDate(TextBox2.Value)
    Cells(derligne, 3) = CDate(TextBox3.Value)

Hello merci beaucoup tout fonction comme je le souhaite !

Rechercher des sujets similaires à "macro fonction pas"