Microsoft 365 Supprimer une ligne en fonction de la valeur d'une cellule

Coralie01120

XLDnaute Occasionnel
Bonjour,

Je débute en VBA et je ne trouve pas le code VBA qui pourrait me convenir sur ce forum. Je joins le fichier pour mieux comprendre.

Je cherche à supprimer une ligne entière quand le contenu de la colonne B est égal à « 05 Total ». Cela peut aussi être « 01 Total » ou encore « 12 Total » … En fait dès que le mot Total est dans une cellule de la colonne B j’aimerai supprimer la ligne mais je ne trouve pas comment faire.

Je souhaite également, toujours via une macro renseigner les onglets site_A, site_B et site_C avec le contenu pour chaque site (les données avec « A » et « A Total » dans la colonne C de l’onglet Sheet1 dans l’onglet site_A).
 

Pièces jointes

  • Test.xlsx
    18.4 KB · Affichages: 13
Solution
Bonsoir Coralie01120, sylvanu, soan,
En fonction de la lettre (du site) j’aimerais alimenter 3 onglets différents. . L’affichage est est même, mais en supprimant la colonne B du site.
Dans Thisworkbook avec le filtre avancé :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If UCase(Left(Sh.Name, 5)) <> "SITE_" Then Exit Sub
Dim critere$, derlig&
critere = Mid(Sh.Name, 6)
Application.ScreenUpdating = False
If Sh.FilterMode Then Sh.ShowAllData 'si la feuille est filtrée
Sh.Rows("6:" & Sh.Rows.Count).Delete
With Sheets("Sheet1")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    derlig = .Cells(.Rows.Count, 3).End(xlUp).Row
    .[K7] = "=C7=""" & critere & """"
    .Range("A6:I" &...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Coralie,
Un essai en PJ , pour la première partie, avec cette macro :
VB:
Sub Supprime()
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    For L = DL To 1 Step -1
        If Cells(L, "B") Like "*Total*" Then
            Cells(L, 1).EntireRow.Delete
        End If
    Next L
End Sub

Pour le second point, est ce que Site correspond à Plant de la Sheet1 ( colonne B ) ?
 

Pièces jointes

  • Test (37).xlsm
    30.1 KB · Affichages: 10

Coralie01120

XLDnaute Occasionnel
Bonsoir Coralie,
Un essai en PJ , pour la première partie, avec cette macro :
VB:
Sub Supprime()
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    For L = DL To 1 Step -1
        If Cells(L, "B") Like "*Total*" Then
            Cells(L, 1).EntireRow.Delete
        End If
    Next L
End Sub

Pour le second point, est ce que Site correspond à Plant de la Sheet1 ( colonne B ) ?
Bonjour Sylvanu,

Super ça fonctionne pour le 1er point. Je n’avais pas pensé aux astérisques...

Oui c’est ça ! En fait dans Sheet1 la colonne B contient soit A, B ou C. En fonction de la lettre (du site) j’aimerais alimenter 3 onglets différents. L’affichage est est même, mais en supprimant la colonne B du site.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @Coralie01120, sylvanu,

euh, pour ta 2ème demande, sur les 3 feuilles de destination "SITE_A", "SITE_B", "SITE_C", il me semble que tu as oublié la colonne « Plant », entre les 2 colonnes "Week" et "Day" ! 😁 😜 (à moins que vraiment tu ne la veuilles plus ? :rolleyes: peut-être que tu es devenue allergique à la chlorophylle ? 😂 🤣)

soan
 

job75

XLDnaute Barbatruc
Bonsoir Coralie01120, sylvanu, soan,
En fonction de la lettre (du site) j’aimerais alimenter 3 onglets différents. . L’affichage est est même, mais en supprimant la colonne B du site.
Dans Thisworkbook avec le filtre avancé :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If UCase(Left(Sh.Name, 5)) <> "SITE_" Then Exit Sub
Dim critere$, derlig&
critere = Mid(Sh.Name, 6)
Application.ScreenUpdating = False
If Sh.FilterMode Then Sh.ShowAllData 'si la feuille est filtrée
Sh.Rows("6:" & Sh.Rows.Count).Delete
With Sheets("Sheet1")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    derlig = .Cells(.Rows.Count, 3).End(xlUp).Row
    .[K7] = "=C7=""" & critere & """"
    .Range("A6:I" & derlig).AdvancedFilter xlFilterCopy, .[K6:K7], Sh.[A6:I6] 'filtre avancé
    .[K7] = ""
End With
derlig = Sh.Cells(Sh.Rows.Count, 3).End(xlUp).Row
Sh.Range("C6:C" & derlig).Delete xlToLeft
Range("A6:H" & derlig).Borders(xlEdgeBottom).Weight = xlMedium 'bordure du bas
With Sh.UsedRange: End With 'actualise les barres de défilement
End Sub
La macro se déclenche quand on active une feuille.

A+
 

Pièces jointes

  • Test(1).xlsm
    25.7 KB · Affichages: 5

Discussions similaires

Réponses
4
Affichages
148

Statistiques des forums

Discussions
314 718
Messages
2 112 177
Membres
111 452
dernier inscrit
christine64