Suppression lignes "vides" par VB

Résolu
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   -  
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   -
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 !

A voir également:

9 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
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
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
Mallheureusement rejet : liste : "variable non définie" en faisant ainsi ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 11033 Statut Membre 2 433
 
Mon exemple
http://www.cjoint.com/c/EGDqpoTuk3R

Cdlmnt
0
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
De rien

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

Cdlmnt
0
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
Je continue les tests, j'ai quelques soucis ... à plus (je cherche d'abord ...)
0
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
As tu mis le code dans un module général (Module 1 par exemple) ?
0
touroul Messages postés 521 Date d'inscription   Statut Membre Dernière intervention   16
 
Non je l'ai mis dans ThisWorkBook
Mince ! J'essaie et je reply
0