Macro suppression de ligne/colonne

Bonjour,

Je souhaiterais écrire une macro simple qui me permettrait de dire que si dans ma colonne J il y a écrit "-1" alors je voudrais supprimer sur cette ligne les cellules des colonnes de C à E, et faire remonter mes lignes.

Prenons un exemple simplifié, j'ai :

1 2 3 4 5 0

2 3 4 5 6 -1

3 4 5 6 7 0

et je voudrais obtenir :

1 2 3 4 5 0

2 3 5 6 7 0

3 4 ......

Des avis ?

Merci d'avance

Marjow54

Bonjour,

colonne F ou J ? car tu n'as mis que 6 valeurs ...

as-tu un fichier excel ?

Sub suppligne()
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If Cells(i, "J") = -1 Then Rows(i).Delete Shift:=xlUp
Next
End Sub
4supp-lignes.xlsm (13.43 Ko)

Merci pour ta réponse.

Comme mentionné c'est un exemple simplifié, ce qui veut dire qu'il ne correspond pas à mes vraies données car confidentielles en fait (mais passons).

Sauf erreur de ma part, ta macro ne fait que supprimer les lignes où il y a -1. Or je souhaiterais supprimer que certaines cellules de cette ligne et non pas la ligne entière.

Merci d'avance

Je souhaiterais écrire une macro simple qui me permettrait de dire que si dans ma colonne J il y a écrit "-1" alors je voudrais supprimer sur cette ligne les cellules des colonnes de C à E, et faire remonter mes lignes.

Il n'est pas possible de supprimer des cellules au sein d'une ligne, ou alors je n'ai pas compris ! faut-il les mettre à " " ou à 0 ou prendre la valeur adjacente ?

Je me suis donc contenter de répondre strictement au reste, y compris colonne J

Le mieux est de mettre un fichier excel et montrer par des flèches ou tout autre moyen la manip que tu attends ...

Pourquoi ne pourrait-on pas supprimer des cellules au sein d'une ligne alors qu'on peut le faire manuellement (en sélectionnant les cellules qu'on veut supprimer, clique droit, supprimer, décaler vers le haut) ?

La manip que j'attends est représenté dans mon exemple, je ne vois malheureusement pas comment la montrer autrement et l'expliquer autrmeent que par : "je voudrais supprimer sur cette ligne les cellules des colonnes de C à E, et faire remonter mes lignes".

Merci

Bonjour,

Avec ceci ?

Sub suppligne()
    Dim i%, j%
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
        If Cells(i, "J") = -1 Then
            For j = 3 To 5
                Cells(i, j).Offset(-1) = Cells(i, j)
            Next j
            Rows(i).Delete Shift:=xlUp
        End If
    Next i
End Sub

Bonjour Marjorie, le forum,

je te propose ce fichier Excel :

6exo-marjow54.xlsm (13.31 Ko)

Ctrl e ➯ travail effectué


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Pourquoi ne pourrait-on pas supprimer des cellules au sein d'une ligne alors qu'on peut le faire manuellement (en sélectionnant les cellules qu'on veut supprimer, clique droit, supprimer, décaler vers le haut) ?

voilà l'info qui me manquait de ce que tu voulais !

@Steelson : exact, problème mal décrit ➯ solution inadaptée !

dhany

et fichier introuvable !

Salut Marjow,

salut l'équipe,

pour répondre strictement à ta demande...

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("F:F")) Is Nothing And Target.Value = -1 Then Range("C" & Target.Row & ":E" & Target.Row).Delete shift:=xlUp
'
Application.EnableEvents = True
'
End Sub

... mais, si je me fie à ton exemple, la valeur de [F] doit remonter également puisque le -1 disparaît pour laisser la place à 0...

Non ?

Dans ce cas, dans le code, changer...

Range("C" & Target.Row & ":E" & Target.Row).Delete

par

Range("C" & Target.Row & ":F" & Target.Row).Delete

A+

@steelson : "en sélectionnant les cellules qu'on veut supprimer, clique droit, supprimer, décaler vers le haut" = "supprimer sur cette ligne les cellules des colonnes de C à E, et faire remonter mes lignes" --> Tout était indiqué et le tableau était dans le message !

@dhany : c'est parfait merci !

@leforum : Merci à tous !

merci pour ton retour, et pour avoir passé le sujet en résolu !

bonne continuation !

dhany

Tout compte fait @dhany je n'arrive pas à l'adapter à mes données

Peux tu m'expliquer à quoi corresponde les lignes n = Cells(Rows.Count, 10).End(3).Row et celle avec resize ?

Merci d'avance

n = Cells(Rows.Count, 10).End(3).Row :

idem que n = Cells(Rows.Count, "J").End(xlUp).Row


Cells(i, 3).Resize(, 3) :

idem que Cells(i, "C").Resize(, 3)

idem que Range(Cells(i, 3), Cells(i, 5))

idem que Range("C" & i & ":E" & i)

c'est les colonnes C à E de la ligne i.

dhany

Super merci, j'ai tout compris !

Marjow54

Rechercher des sujets similaires à "macro suppression ligne colonne"