Supprimer certaines lignes dans un tableau

maclem

XLDnaute Nouveau
Bonsoir le forum
Voila j'ai un petit soucie je cherche a supprimé toutes les lignes dans mon tableau dont la valeur marge n'est pas négative et gardé juste celle qui sont en couleur comme pourrais je faire.
merci d'avance pour votre aide
 

Pièces jointes

  • Valeur marge.xlsx
    10.4 KB · Affichages: 55

DoubleZero

XLDnaute Barbatruc
Re : Supprimer certaines lignes dans un tableau

Bonjour à toutes et à tous,

Bienvenue sur XLD, maclem !

... je cherche a supprimé toutes les lignes dans mon tableau dont la valeur marge n'est pas négative et gardé juste celle qui sont en couleur...
Les valeurs négatives étant colorées, je ne comprends pas la demande :confused:.

Quelles lignes doivent réellement être supprimées ?

A bientôt :)
 

Robert

XLDnaute Barbatruc
Re : Supprimer certaines lignes dans un tableau

Bonsoir Maclem et bienvenu, bonsoir DoubleZéro, bonsoir le forum,

Peut-ête comme ça :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim x As Integer 'décalre la variable i (Incrément)

With Sheets("Feuil1") 'prend en compte la variable "Feuil1"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne de la colonne 7 (G)
    For i = dl To 8 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 8
        If .Cells(i, 7) > 0 Then .Rows(i).Delete 'si la cellule est positive, supprime la ligne
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub
 
Dernière édition:

maclem

XLDnaute Nouveau
Re : Supprimer certaines lignes dans un tableau

-RESOLUE- DoubleZero pas la peine de vous excusé c'est déja super sympa de prendre de votre temps pour me répondre
par contre j'ai un autre PB car je voudrais pourvoir appliqué la formule sur plusieurs tableau dont en pièce jointe celui que j'aurais a traité quotidiennent
pourriez vous me mettre votre code car j'ai essayé en modifiant le votre mais je n'y arrive pas
a s'avoir que c'est pour le classeur nommé StockCompare et la colonne a prendre en compte serai la G
merci d'avance

Encore merci
 

Pièces jointes

  • STK COMP.xls
    127.5 KB · Affichages: 77
Dernière édition:

Robert

XLDnaute Barbatruc
Re : Supprimer certaines lignes dans un tableau

Bonjour le fil, bonjour le forum,

Je fait l'effort de commenter le plus souvent possible les codes que je propose pour permettre à l'utilisateur de le comprendre et donc de le modifier... Voici le code de ton dernier fichier exemple :
Code:
    ActiveWindow.SmallScroll Down:=-6
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Application.WindowState = xlMinimized

Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim x As Integer 'décalre la variable i (Incrément)
With Sheets("StockCompare") 'prend en compte la variable "StockCompare"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne de la colonne 13 (G)
    For i = dl To 14 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 14
        Debug.Print .Cells(dl, 7).Value
        If .Cells(i, 7) > 0 Then .Rows(i).Delete 'si la cellule est positive, supprime la ligne
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "StockCompare"
End Sub
Les quatre premières lignes hors procédure font planter :
Code:
    ActiveWindow.SmallScroll Down:=-6
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Application.WindowState = xlMinimized
Je sais pas d'où tu les sors ? Il suffit des les supprimer !
Ensuite dans ton premier exemple la première ligne de données commençait à la ligne 14 alors que dans ce dernier elle commence à la ligne 3
il suffit donc de modifier :
For i = dl To 14 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 14
par :
For i = dl To 3 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 3
le code final :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim x As Integer 'décalre la variable i (Incrément)

With Sheets("StockCompare") 'prend en compte la variable "StockCompare"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne de la colonne 13 (G)
    For i = dl To 3 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 3
        If .Cells(i, 7) > 0 Then .Rows(i).Delete 'si la cellule est positive, supprime la ligne
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "StockCompare"
End Sub
Tu remarqueras que j'ai aussi supprimé la ligne Debug.Print... car elle ne m'avait servi que pour vérifier les données et j'avais oublié de la supprimer la première fois. Elle n'a pas d'intérêt pour l'exécution de la tâche que tu demandes...
 

maclem

XLDnaute Nouveau
Re : Supprimer certaines lignes dans un tableau

Bonjour le fil, bonjour le forum,

Je fait l'effort de commenter le plus souvent possible les codes que je propose pour permettre à l'utilisateur de le comprendre et donc de le modifier... Voici le code de ton dernier fichier exemple :
Code:
    ActiveWindow.SmallScroll Down:=-6
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Application.WindowState = xlMinimized

Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim x As Integer 'décalre la variable i (Incrément)
With Sheets("StockCompare") 'prend en compte la variable "StockCompare"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne de la colonne 13 (G)
    For i = dl To 14 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 14
        Debug.Print .Cells(dl, 7).Value
        If .Cells(i, 7) > 0 Then .Rows(i).Delete 'si la cellule est positive, supprime la ligne
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "StockCompare"
End Sub
Les quatre premières lignes hors procédure font planter :
Code:
    ActiveWindow.SmallScroll Down:=-6
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Application.WindowState = xlMinimized
Je sais pas d'où tu les sors ? Il suffit des les supprimer !
Ensuite dans ton premier exemple la première ligne de données commençait à la ligne 14 alors que dans ce dernier elle commence à la ligne 3
il suffit donc de modifier :
For i = dl To 14 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 14
par :
For i = dl To 3 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 3
le code final :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (dernière Ligne)
Dim x As Integer 'décalre la variable i (Incrément)

With Sheets("StockCompare") 'prend en compte la variable "StockCompare"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne de la colonne 13 (G)
    For i = dl To 3 Step -1 'boucle inversée des cellules de la colonne G des lignes dl à 3
        If .Cells(i, 7) > 0 Then .Rows(i).Delete 'si la cellule est positive, supprime la ligne
    Next i 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "StockCompare"
End Sub
Tu remarqueras que j'ai aussi supprimé la ligne Debug.Print... car elle ne m'avait servi que pour vérifier les données et j'avais oublié de la supprimer la première fois. Elle n'a pas d'intérêt pour l'exécution de la tâche que tu demandes...

Bonsoir
Merci j'ai remarqué effectivement mon erreur maintenant ca marche nikel
Encore merci de votre aide qui m'auras été d'une grande utilité (30 minute de boulot en moins par jours le faite de s'avoir faire ca)
 

Discussions similaires

Réponses
2
Affichages
182
Haut Bas