XL 2010 Supprimer des lignes rapidement en vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lolobala

XLDnaute Nouveau
Bonjour,

Je suis a la recherche d'une méthode rapide en vba pour supprimer plusieurs lignes.
J'ai essayé la boucle (en partant de la fin) mais c'est beaucoup trop long.
J'ai essayé le filtre avec un critère mais c'est encore trop long
Dans l'exemple en pj, il y a plus de 3000 lignes mais j'en aurai beaucoup plus dans la réalité.

N'ayant pas beaucoup de connaissance en vba, j'ai parcouru quelques forums mais je n'ai pas trouvé d'autres solutions...
Merci pour votre retour

Laurent
 

Pièces jointes

Solution
Bonjour,

VB:
'Définition des constantes pour fixer la plage de données à traiter
Const nPremLig As Integer = 4
Const sPremCol As String = "B"
Const sDerCol As String = "AB"

Sub SupprLig()

Dim tablo As Variant
Dim nDerLig, nLigInc As Integer

'Désactivation de l'update visuel et du calcul automatique pour la performance
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Recherche de la dernière ligne de la plage de données à traiter
nDerLig = Feuil5.Range(sPremCol & Rows.Count).End(xlUp).Row
'Export des données de la feuille vers un Array
tablo = Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol & nDerLig).Value
'On nettoie la feuille
Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol &...
Bonjour,

Une idée comme ça :
1) placer les données du tableau dans un Array VBA
2) ClearContents la feuille
3) réinsérer uniquement les lignes de l'array intéressantes

Bonne journée,

Merci pour votre réponse,

J'avais lu cette possibilité mais comme mes connaissances sont plus que limités, je n'ai pas essayé...
Est-ce que vous auriez un exemple ou un début de programme pour m'aider ?

Laurent
 
Bonjour,

J'ai lu cette solution de sur le forum mais je n'arrive pas à l'adapter à ma situation et je ne comprends pas son fonctionnement.
Est-ce que quelqu'un peut m'aider s'il vous plait ?


Merci pour votre aide,

Laurent
 
Bonjour,

VB:
'Définition des constantes pour fixer la plage de données à traiter
Const nPremLig As Integer = 4
Const sPremCol As String = "B"
Const sDerCol As String = "AB"

Sub SupprLig()

Dim tablo As Variant
Dim nDerLig, nLigInc As Integer

'Désactivation de l'update visuel et du calcul automatique pour la performance
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Recherche de la dernière ligne de la plage de données à traiter
nDerLig = Feuil5.Range(sPremCol & Rows.Count).End(xlUp).Row
'Export des données de la feuille vers un Array
tablo = Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol & nDerLig).Value
'On nettoie la feuille
Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol & nDerLig).ClearContents

'Pour chaque ligne du tableau (LBound = première ligne et UBound = dernière ligne du tableau )
For nLig = LBound(tablo) To UBound(tablo)
    'Sur la ligne observée, on cherche dans la dernière colonne de l'Array (l'équivalent de la colonne AB) si il y a la valeur "A supprimer"
    If tablo(nLig, UBound(tablo, 2)) <> "A supprimer" Then
        'Si la valeur en AB n'est pas "A supprimer", on exporte la ligne de l'Array dans la feuille Excel à la dernière ligne remplie +1
        For nCol = LBound(tablo, 2) To UBound(tablo, 2)
            Feuil5.Cells(nLigInc + nPremLig, nCol + Asc(sPremCol) - 65) = tablo(nLig, nCol)
        Next nCol
        'Augmentation de l'incrément de suivi de ligne Excel à remplir (distinction entre nLig qui boucle sur les lignes de l'array et nLigInc qui indique la ligne de la feuille Excel à remplir)
        nLigInc = nLigInc + 1
    End If
Next nLig

'Réactivation de l'update visuel et du calcul automatique
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Bonne journée,
 
Bonjour,

VB:
'Définition des constantes pour fixer la plage de données à traiter
Const nPremLig As Integer = 4
Const sPremCol As String = "B"
Const sDerCol As String = "AB"

Sub SupprLig()

Dim tablo As Variant
Dim nDerLig, nLigInc As Integer

'Désactivation de l'update visuel et du calcul automatique pour la performance
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Recherche de la dernière ligne de la plage de données à traiter
nDerLig = Feuil5.Range(sPremCol & Rows.Count).End(xlUp).Row
'Export des données de la feuille vers un Array
tablo = Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol & nDerLig).Value
'On nettoie la feuille
Feuil5.Range(sPremCol & nPremLig & ":" & sDerCol & nDerLig).ClearContents

'Pour chaque ligne du tableau (LBound = première ligne et UBound = dernière ligne du tableau )
For nLig = LBound(tablo) To UBound(tablo)
    'Sur la ligne observée, on cherche dans la dernière colonne de l'Array (l'équivalent de la colonne AB) si il y a la valeur "A supprimer"
    If tablo(nLig, UBound(tablo, 2)) <> "A supprimer" Then
        'Si la valeur en AB n'est pas "A supprimer", on exporte la ligne de l'Array dans la feuille Excel à la dernière ligne remplie +1
        For nCol = LBound(tablo, 2) To UBound(tablo, 2)
            Feuil5.Cells(nLigInc + nPremLig, nCol + Asc(sPremCol) - 65) = tablo(nLig, nCol)
        Next nCol
        'Augmentation de l'incrément de suivi de ligne Excel à remplir (distinction entre nLig qui boucle sur les lignes de l'array et nLigInc qui indique la ligne de la feuille Excel à remplir)
        nLigInc = nLigInc + 1
    End If
Next nLig

'Réactivation de l'update visuel et du calcul automatique
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Bonne journée,

Merci infiniment xUpsilon

ça marche super bien, c'est rapide et les explications sont bien détaillées !
Bonne journée et encore merci pour ton aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour