Suppression lignes "vides" par VB
Résolu
touroul
Messages postés
518
Statut
Membre
-
touroul Messages postés 518 Statut Membre -
touroul Messages postés 518 Statut Membre -
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 (
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 :
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 :
Même le
Puis-je vous demander de l'aide une nouvelle fois ?
Merci d'avance !
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:
- Suppression lignes "vides" par VB
- Forcer suppression fichier - Guide
- Vb - Télécharger - Langages
- Suppression compte gmail - Guide
- Comment supprimer les pages vides sur word - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
9 réponses
Bonjour
Essaies ceci
Cdlmnt
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
Bonjour ccm81
J'obtiens une erreur sur le mot "liste " dans
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 !
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 !
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"
Const liste = "NON 1,Non 2,NON 3,NON 4"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En même temps que ton message, j'ai trouvé :
Il fallait déclarer les 3 constantes sous le
Ca fonctionne impecc.
Merci beaucoup CCM !
Il fallait déclarer les 3 constantes sous le
Public Sub SuppLignes()
Ca fonctionne impecc.
Merci beaucoup CCM !
De rien
Si c'est fini, peux mettre le sujet à résolu (en dessous du titre de ton premier message)
Cdlmnt
Si c'est fini, peux mettre le sujet à résolu (en dessous du titre de ton premier message)
Cdlmnt
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 :
Puis-je te demander de t'y replonger ?
D'avance merci (je peux t'envoyer le fichier par MP si tu veux)
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)