Supprimer ligne sur plusieurs feuilles

Bonjour,

Dans mon fichier Excel contenant plusieurs feuilles, je cherche un code pouvant me permettre en un click sur un bouton de la première feuille de supprimer la ligne entière de la cellule sélectionnée et de supprimer ces mêmes lignes sur toutes les autres feuilles. (il peut y avoir des doublons sur les autres feuilles).

J’ai trouvé sur le net des codes permettant de supprimer sur plusieurs feuilles une ligne en lui imposant un mot (dans le code). (D’ailleurs j’en remercie les auteurs).

Je joins un fichier test contenant des caractéristiques similaires au vrai fichier.

Sur ma 1ère feuille, les colonnes G à J sont (presque) identiques aux colonnes B à E des autres feuilles (les autres colonnes diffèrent). En effet, C contient une formule sur la 1ère feuille, alors que sur les suivantes il s’agit de la valeur de cette formule.

Je pense qu’il faut concaténer pour pouvoir comparer.

Je continue à chercher.

Je vous remercie d’avance.

192supp.zip (8.55 Ko)

Bonjour,

La concatenation n'est pas obligatoire en colonne G de la feuille 1. Peut-on la supprimer ou doit-elle rester ?

A te relire

Bonjour Dan,

Cette colonne doit rester car elle me permet de copier coller la ligne contenant les colonnes G à J sur les autres feuilles, grâce à un code (merci banzai64). Ici je cherche à faire le chemin inverse: retrouver ces lignes sur les autres feuilles et les supprimer.

De plus, les colonnes E et F sont en réalité masqué pour l'utilisateur et il ne voit que la colonne G.

Merci de votre aide

re,

En vitesse, essaie ce code à associer à ton bouton sur la feuille 1.

Sub supprime()
'MAcro Dan le 15/05/2012
Dim i As Integer, j As Integer
Dim code
code = Sheets("Feuil1").Range("G" & ActiveCell.Row)
For i = 2 To Sheets.Count
With Sheets(i)
    For j = .Range("B65536").End(xlUp).Row To 7 Step -1
        If .Cells(j, 2) = code Then .Rows(j).Delete
    Next j
End With
Next
End Sub

La feuille est supposée en première position dans ton fichier.

Si ok, merci de cloturer ton fil en cliquant sur V vert à coté du bouton EDITER

Amicalement

Re,

Tout d'abord je tiens à vous remercier de m'aider. Cependant votre code efface sur les autres feuilles toutes les lignes contenant la celulle sélectionnée. Par exemple, si j'ai ligne 1: A A A B sur la feuille 1. Je sélectionne une des cellules A avec le bouton de la macro. Il va m'effacer les lignes de types: A A A C, A A A D, sur les autres feuilles.

Je joins un fichier contenant des données différentes et votre code.

Merci

138supp.zip (13.21 Ko)

re,

Le code supprime les lignes dont la colonne B équivaut à la valeur de la cellule sélectionnée en colonne G de la feuille 1.

Dans ton fichier si je sélectionne G10, je dois supprimer quoi dans les autres feuilles ? Soit plus clair car tu me parles de AAAC etc ...et dans tes fichiers on y voit des données, des chiffres...

Merci de tes explications

re,

Si vous selectionnez la cellule G10, pour la supprimer, sachant que celles ci contient les données 22,f,s,4 pour les colonnes G,H,I,J (resp.) La macro devra supprimer les lignes contenant exactement les données 22,f,s,4 pour les colonnes B,C,D,E de la feuille 2 (soit la ligne 10.), ainsi que la ligne 11 de la feuille 3, qui contient exactement les données 22,f,s,4 sur ces 4 colonnes.

En faite les colonnes G,H,I,J se retrouveront forcément dans les autres feuilles sur les colonnes B,C,D,E.

Merci de votre aide et du temps passé à m'aider.

re,

Essaie comme ceci :

Sub supprime()
'MAcro Dan le 15/05/2012
Dim i As Integer, j As Integer
Dim code1, code2
With Sheets("Feuil1")
code1 = .Range("G" & ActiveCell.Row) & .Range("H" & ActiveCell.Row) & _
    .Range("I" & ActiveCell.Row) & .Range("J" & ActiveCell.Row)
End With
For i = 2 To Sheets.Count
With Sheets(i)
    For j = .Range("B65536").End(xlUp).Row To 7 Step -1
        code2 = .Cells(j, 2) & .Cells(j, 3) & .Cells(j, 4) & .Cells(j, 5)
        If code2 = code1 Then .Rows(j).Delete
    Next j
End With
Next
End Sub

Si ok, merci de cloturer le fil en cliquant sur le V vert à coté du bouton EDITER

Amicalement

ça fonctionne! Et votre code fait exactement ce que je souhaitais! merci Dan! =)

Bonjour,

Il semble que je n'arrive pas à adapater votre code convenablement...

J'ai rajouté des colonnes et des feuilles. Mais il ne supprime plus que sur les dernières feuilles, alors que les 1ères feuilles contiennent aussi la ligne à supprimer.

Je souhaite supprimer la ligne supprimé en feuille 1, sur les feuilles 2 à 7. Mais celles ci ne se supprime que sur les feuilles 6 et 7.

Je vous joins un fichier.

Sub supp_click()
Dim i As Integer, j As Integer
Dim code1, code2
Dim b As Long

a = MsgBox("Etes vous sur de vouloir faire cela ?", vbYesNo)
If (a = 6) Then

With Sheets("Feuil1")
code1 = .Range("F" & ActiveCell.Row) & .Range("G" & ActiveCell.Row) & _
    .Range("H" & ActiveCell.Row) & .Range("I" & ActiveCell.Row) & .Range("J" & ActiveCell.Row) & .Range("K" & ActiveCell.Row) & .Range("L" & ActiveCell.Row)
End With
For i = 6 To Sheets.Count
With Sheets(i)
    For j = .Range("B65536").End(xlUp).Row To 7 Step -1
        code2 = .Cells(j, 2) & .Cells(j, 3) & .Cells(j, 4) & .Cells(j, 5) & .Cells(j, 6) & .Cells(j, 7) & .Cells(j, 8)
        If code2 = code1 Then .Rows(j).Delete
    Next j
End With
Next
Selection.EntireRow.Delete

Else
Cancel = True
End If
End Sub

Merci d'avance

156supp-pb.zip (12.51 Ko)

re,

Je souhaite supprimer la ligne supprimé en feuille 1, sur les feuilles 2 à 7. Mais celles ci ne se supprime que sur les feuilles 6 et 7.

Normal puisque dans ton code tu le lui demandes à cette ligne

For i = 6 To Sheets.Count

Remplace par i= 6 par --> i =2

Si tu ne veux pas supprimer la ligne dans ta feuille 1 (tu n'en avais pas parlé d'ailleurs), cette ligne ne sert à rien --> Selection.EntireRow.Delete

Amicalement

Oh lol ! C'était simple en faite.

i=2 veut donc dire à partir de la 2ème feuille! Je pensais qu'il s'agissait du nombre de feuille à traiter d'où mon 6.

Merci Dan =)

Rechercher des sujets similaires à "supprimer ligne feuilles"