Supprimer lignes dans une variable tableau

Hi,

J'ai une "base de données" dont je dois prendre seulement certaines lignes. Pour le moment j'applique un bête un conditionnel sous la forme :

        For i = derligneretard To 2 Step -1
            If Tableau(i, 5) = Tableau(i - 1, 5) And Tableau(i, 11) = Tableau(i - 1, 11) Then
                Rows(i).EntireRow.Delete shift:=xlUp
            End If
        Next i

(dans cet exemple on vire les lignes en cas de doublons sur les colonnes 5 et 11).

Ça dégage "physiquement" la ligne de la feuille excel, ça marche bien (à la fin j'ai un tableau avec plein de lignes en moins et sans ligne vide) mais c'est loin d'être optimisé, et je préférerais modifier mes variables tableau pour gagner en temps d’exécution.

J'imagine que c'est possible avec l'utilisation de Redim Preserve (après une transposition vu qu'on ne peut redimensionner que la dernière dimension si j'ai bonne mémoire), mais quid de la commande pour virer une ligne dans une variable tableau ?

Bonjour,

Merci de joindre un fichier à ta demande avec sa procédure.

Cdlt.

Bonjour,

Si tu veux gagner du temps à l'exécution, il suffit de stocker tes lignes à supprimer dans une variable objet Range et d'effectuer une suppression globale, comme ceci :

    For i = 2 To derligneretard
        If tableau(i, 5) = tableau(i - 1, 5) And tableau(i, 11) = tableau(i - 1, 11) Then
            If lignes_supp Is Nothing Then Set lignes_supp = Rows(i) _
            Else Set lignes_supp = Union(lignes_supp, Rows(i))
        End If
    Next i
    lignes_supp.Delete

NB : la propriété ".entirerow" est inutile car la propriété ".rows(i)" correspond déjà à la ligne entière.

@thev : Ça c'est malin, et effectivement ça fait gagner du temps. Mais je pense que tout opérer sur un objet tableau doit être encore plus rapide. En attendant j'exploite ton code

Par contre tu as juste mis un Delete au moment de dégager les lignes, pas besoin d'ajouter shift:=xlUp derrière ?

@ci-joint une "mini base de données" à titre illustratif.

225kit-test-copie.xlsx (8.77 Ko)

Par contre tu as juste mis un Delete au moment de dégager les lignes, pas besoin d'ajouter shift:=xlUp derrière ?

Cette option est celle prise par défaut.

Rechercher des sujets similaires à "supprimer lignes variable tableau"