Suppression lignes "vides" par VB

Résolu
Bonjour le forum

J'ai besoin d'une macro qui supprime les lignes "vides" entre L9 et L48 incluses, seulement si la cellule B est vide (
Cells(i, 2)
)
J'ai besoin d'un coup de main une nouvelle fois car j'y arrive sur une feuille, mais pas sur plusieurs.

Voici la macro qui fonctionne sur la feuille EXP1 :
Public Sub EFF1()
Dim i As Integer
For i = 48 To 9 Step -1
If Worksheets("EXP1").Cells(i, 2) = "" Then Worksheets("EXP1").Rows(i).Delete
Next i
End Sub


Ensuite j'ai voulu l'adapter pour qu'en la lançant, elle fasse le boulot sur toutes les feuilles, sauf NON1,NON2,NON3,NON4 :

Private Sub Workbook_SheetActivate(ByVal sh As Object) 'suppression des lignes vides dans les feuilles "EXP"
Dim i As Integer
If InStr("NON1,NON2,NON3,NON4", sh.Name) = 0 Then
If ActiveSheet.Name = sh.Name Then
For i = 48 To 9 Step -1
If Worksheets("EXPx").Cells(i, 2) = "" Then Worksheets("EXPx").Rows(i).Delete
Next i
End If
End If
End Sub

Même le
Private Sub Workbook_SheetActivate(ByVal sh As Object)
me génère une erreur !

Puis-je vous demander de l'aide une nouvelle fois ?
Merci d'avance !

9 réponses

  1. Bonjour

    Essaies ceci

    Const liste = "Feuil2,Feuil5"
    Const lideb = 9
    Const lifin = 48
    
    Public Sub SuppLignes()
    Dim nuf As Long, nbf As Long, li As Long
    nbf = Sheets.Count
    Application.ScreenUpdating = False
    For nuf = 1 To nbf
      If InStr(1, liste, Sheets(nuf).Name) = 0 Then
        For li = lifin To lideb Step -1
          If Sheets(nuf).Cells(li, 2) = "" Then Sheets(nuf).Rows(li).Delete
        Next li
      End If
    Next nuf
    Application.ScreenUpdating = True
    End Sub
    

    Cdlmnt
    0
    1. Bonjour ccm81

      J'obtiens une erreur sur le mot "liste " dans
      If InStr(1, liste, Sheets(nuf).Name) = 0 Then

      En fait dans mon fichier original, les noms de feuilles ont des espaces.
      J'ai essayé :
      Const liste = "'NON 1','Non 2','NON 3,'NON 4'" sans succès.
      Une astuce ?
      Merci bien !
      0
      1. Essaies en enlevant les apostrophes qui ne doivent pas figurer dans les noms d'onglets
        Const liste = "NON 1,Non 2,NON 3,NON 4"
        0
        1. Mallheureusement rejet : liste : "variable non définie" en faisant ainsi ...
          0
          1. Mon exemple
            http://www.cjoint.com/c/EGDqpoTuk3R

            Cdlmnt
            0
            1. En même temps que ton message, j'ai trouvé :
              Il fallait déclarer les 3 constantes sous le
              Public Sub SuppLignes()

              Ca fonctionne impecc.

              Merci beaucoup CCM !
              0
              1. De rien

                Si c'est fini, peux mettre le sujet à résolu (en dessous du titre de ton premier message)

                Cdlmnt
                0
                1. Je continue les tests, j'ai quelques soucis ... à plus (je cherche d'abord ...)
                  0
              2. Effectivement, j'ai un souci ...
                La macro ne s'exécute que sur la feuille activée (mais elle s'exécute correctement)
                La voici :

                Public Sub SuppLignes()
                Const liste = "NON 1,NON 2,NON 3,NON 4"
                Const lideb = 9
                Const lifin = 61
                Dim nuf As Long, nbf As Long, li As Long
                nbf = Sheets.Count
                Application.ScreenUpdating = False
                For nuf = 1 To nbf
                If InStr(1, liste, Sheets(nuf).Name) = 0 Then
                For li = lifin To lideb Step -1
                If Sheets(nuf).Cells(li, 2) = "" Then Sheets(nuf).Rows(li).Delete
                Next li
                End If
                Next nuf
                Application.ScreenUpdating = True
                End Sub


                Puis-je te demander de t'y replonger ?
                D'avance merci (je peux t'envoyer le fichier par MP si tu veux)
                0
                1. As tu mis le code dans un module général (Module 1 par exemple) ?
                  0
                  1. Non je l'ai mis dans ThisWorkBook
                    Mince ! J'essaie et je reply
                    0