Macros qui ne fonctionnent plus sans aucun changements sur Excel

Bonjour,

Je passe décidément beaucoup trop de temps sur ce forum à mon gout mais il faut avouer que la communauté est réactive et compétente, alors je reviens !

Je vous explique le problème. Dans le cadre de mon stage j'ai énormément de données à traiter. Pour se faire j'ai commencé à m’intéresser aux macros j'en ai rédigé, avec l'aide de ce forum et de plein d'autres pages internet 4. Mais voilà, depuis vendredi, deux ne fonctionnent plus, ou plutôt, elles fonctionnent, elles tournent à l'infini mais ne produisent aucun effet. C'est plutôt frustrant puisque jusqu'alors elles fonctionnaient parfaitement, et le debogueur ne renvoie aucune erreur.

Je fais donc appel à vous pour trouver l'erreur et m'aider à corriger ça !

Les deux macros on pour objectif de supprimer des lignes.

voici la première :

Sub SuppressionValeursNulles ()
    With Sheets("correction")
     dl = .Cells(Rows.Count, 10).end(xlUp).Row
        For i = dl to 2 Step -1
        If .Cells(i, 10).Value = 0 Then Rows(i).EntireRow.Delete
        Next i 
   End With
End Sub

Le code est pourtant simple, il fonctionnait jusqu'à jeudi, pourtant, depuis vendredi, il tourne de manière ininterrompu sans renvoyer d'erreur.

Un camarade du forum m'avait proposé ce code si :

Sub Plus_De_Vitesse()
     Dim UN

     With Sheets("correction")
          dl = .Cells(Rows.Count, 10).End(xlUp).Row
          Set UN = .Range("A1")     'une cellulle hors la colonne 10

          For i = dl To 2 Step -1
               If .Cells(i, 10).Value = "0" Then Set UN = Union(UN, .Cells(i, 10))    'toutes ces cellulles
          Next i

          If UN.Cells.Count > 1 Then
               Set UN = Intersect(UN, .Columns(10))     'exclude la cellulle A1
               UN.EntireRow.Delete     'tous les autres cellulles
          End If

     End With
End Sub

mais qui me renvoie une erreur 1004.

Pour la deuxième macro, elle vise aussi à supprimer des lignes et pareil, elle a fonctionné correctement jusqu'à jeudi et depuis tourne dans le vide sans renvoyer d'erreur.

Sub SuppressionNuits()
'
' SuppressionHeureNuit Macro
' Supprime les données de 22h à 4h59

    Dim i As Long
With Sheets("correction")

        dl = .Cells(Rows.Count, 7).End(xlUp).Row
    For i = dl To 2 Step -1

    If UCase(Cells(i, 7)) Like 0 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 1 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 2 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 3 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 4 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 22 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 23 Then Rows(i).EntireRow.Delete

Next i
End With

End Sub

J'ai conscience que ces macros ne sont pas les plus optimisées mais j'ai juste besoin d'un programme qui marche, je n'ai pas le temps de me former plus sur VBa même si j'identifie la puissance de l'outil, je le ferai sans doute plus tard.

Bref je suis bloqué pour l'analyse de mes données.

C'est vrai que je pourrai supprimer les lignes à la main, mais l'idée est de créer des boutons dans un tableur Excel automatisé pour que les prochains stagiaires n'aient pas à se coltiner se boulot.

Merci d'avance !

Bonjour,

une autre technique beaucoup plus rapide et efficace consiste à filtrer et effacer les lignes affichées.
Effacer ligne à ligne est très lent

Sub supp0()
    With ActiveSheet
        ' filtrer sur 0
        .Range("$A$1").Resize(Cells(Rows.Count, 10).End(xlUp).Row).AutoFilter Field:=10, Criteria1:="0"
        On Error Resume Next
        ' supprimer lignes visibles
        Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase").Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
        On Error GoTo 0
        ' afficher tout
        If .AutoFilterMode And .FilterMode Then .ShowAllData
    End With
End Sub

A toi de mettre le filtre qui va bien, je vois qu'il change à la fin.
Tu peux utiliser l'enregistreur de macro pour sa mise en place
eric

9classeur3.xlsm (14.26 Ko)

De rien...

Bonsoir …

Elle ne devait pas être efficace car il faut aussi un . devant Rows(i)…

point c'est Tout n'est-ce pas Eriiic (salut) !

Sans celui-ci, les lignes sont supprimées dans la feuille active au lancement de la macro et si on y a une événementielle, bonjour les dégats avec une boucle qui ne la boucle pas !

Salut Ordonc,

bien vu

Bonjour

A toutes et à tous, merci de votre implication, j'ai oublié que j'avais ouvert ce topic.

Par la magie de VBA, les macros se sont remises à fonctionner (je n'ai vraiment aucune idée de pourquoi et du comment).

Encore merci et à bientôt

Ugo

Rechercher des sujets similaires à "macros qui fonctionnent aucun changements"