MaLoNeurons
XLDnaute Nouveau
Bonjour,
J'ai pas mal cherché, en vain, sur les forums excel, une macro permettant de supprimer les lignes vides d'une plage dans un tableau sans supprimer les lignes de la feuille pour ne pas supprimer les données des tableaux adjacents Désolé je n'ai pas pu faire moins obscur comme explication. Je me suis donc lancé avec mes humbles connaissances dans l'écriture d'un code qui fonctionne, mais je suis sûr qu'il y a moyen de l'alléger et de l'accélerer. Voici le code en question :
Sub SuppLigneVides()
Dim Plage As Range
Application.ScreenUpdating = False
'determination de la taille de la plage
With ActiveSheet.Range("M319")
derLI = .Row + .Rows.Count - 1
End With
'boucle de test de la plage
For i = 3 To derLI
xtest = 0
X = i
NBVIDE = 0
'test si premiere ligne VIDE
Set Plage = Range("M" & X & "" & X)
NBVIDE = WorksheetFunction.CountBlank(Plage)
If NBVIDE = 4 Then X = X + 1
' boucle interne pour vérifier si les lignes suivantes sont vides
Do While X <> i And NBVIDE = 4
xtest = 1
' Si les 4 cellules en colonne MNOP de la ligne X sont vides
' alors la plage est vide
Set Plage = Range("M" & X & "" & X)
NBVIDE = WorksheetFunction.CountBlank(Plage)
If NBVIDE = 4 Then X = X + 1
' arrêter le test s'il arrive en bout de plage
If X > derLI Then
X = derLI
Exit Do
End If
Loop
' si ligne i vide --> valeurs de cellules = valeurs de cellule de
' la prochaine ligne X non vide
If xtest = 1 Then
Sheets("Feuil2").Range("M" & i & "" & i).Value = Sheets("Feuil2").Range("M" & X & "" & X).Value
' effacement de la ligne X une fois recopiée en i
Set Plage = Range("M" & X & "" & X)
Plage.ClearContents
xtest = 0
End If
Next i
Application.ScreenUpdating = True
End Sub
'Merci !!!
J'ai pas mal cherché, en vain, sur les forums excel, une macro permettant de supprimer les lignes vides d'une plage dans un tableau sans supprimer les lignes de la feuille pour ne pas supprimer les données des tableaux adjacents Désolé je n'ai pas pu faire moins obscur comme explication. Je me suis donc lancé avec mes humbles connaissances dans l'écriture d'un code qui fonctionne, mais je suis sûr qu'il y a moyen de l'alléger et de l'accélerer. Voici le code en question :
Sub SuppLigneVides()
Dim Plage As Range
Application.ScreenUpdating = False
'determination de la taille de la plage
With ActiveSheet.Range("M319")
derLI = .Row + .Rows.Count - 1
End With
'boucle de test de la plage
For i = 3 To derLI
xtest = 0
X = i
NBVIDE = 0
'test si premiere ligne VIDE
Set Plage = Range("M" & X & "" & X)
NBVIDE = WorksheetFunction.CountBlank(Plage)
If NBVIDE = 4 Then X = X + 1
' boucle interne pour vérifier si les lignes suivantes sont vides
Do While X <> i And NBVIDE = 4
xtest = 1
' Si les 4 cellules en colonne MNOP de la ligne X sont vides
' alors la plage est vide
Set Plage = Range("M" & X & "" & X)
NBVIDE = WorksheetFunction.CountBlank(Plage)
If NBVIDE = 4 Then X = X + 1
' arrêter le test s'il arrive en bout de plage
If X > derLI Then
X = derLI
Exit Do
End If
Loop
' si ligne i vide --> valeurs de cellules = valeurs de cellule de
' la prochaine ligne X non vide
If xtest = 1 Then
Sheets("Feuil2").Range("M" & i & "" & i).Value = Sheets("Feuil2").Range("M" & X & "" & X).Value
' effacement de la ligne X une fois recopiée en i
Set Plage = Range("M" & X & "" & X)
Plage.ClearContents
xtest = 0
End If
Next i
Application.ScreenUpdating = True
End Sub
'Merci !!!