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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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" &...
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

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.
 
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 ? 🙄 peut-être que tu es devenue allergique à la chlorophylle ? 😂 🤣)

soan
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
181
Réponses
6
Affichages
467
Retour