Problème VBA: supprimer et compter les lignes
Bonjour,
Ficher exemple :
J’aimerai supprimer les ligne de feuille « Filtered Data SAP » avec les critère qui se trouve dans la feuille « Description ».
J’ai essayé le code qui se trouve dans le fichier exemple en annexe, mais ça ne marche pas trop, dans la cellule il n’y pas de mot qui correspond exactement comme c’est marqué dans les critère dans « Description ».
Je pense qu’il faut essayé de faire une recherche avec FIND.
Après j’aimerai compter le nombre total de ligne avant suppression et ensuite nombre des ligne supprime et afficher via MsgBox
Ex : nbr Total de lignes = 242
Lignes supprimées = 50
Merci de votre aide.
Salutations
Bonjour,
peut-être en utilisant l'opérateur Like et des "jockers":
If FilterData.Cells(nligdata, ncol) Like "*" & FiltreSheet.Cells(nligfiltre, 1) & "*" Then A+
Bonjour le fil, bonjour le forum,
Peut-être comme ça :
Sub Macro1()
Dim F As Worksheet 'déclare la variable F (onglet Filtered Data SAP)
Dim D As Worksheet 'déclare la variable D (Description)
Dim TF As Variant 'déclare la variable TF (Tableau de l'onglet F)
Dim TD As Variant 'déclare la variable TD (Tableau de l'onglet D)
Dim PL As Range 'déclare la variable PL (PLage)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim NTL As Integer 'déclare la variable NTL (Nombre Total de Lignes)
Dim NLS As Integer 'déclare la variable NLS (Nombre de Lignes Supprimées)
Dim NLR As Integer 'déclare la variable NLR (Nombre de Lignes Restantes)
Set F = Worksheets("Filtered Data SAP") 'définit l'onglet F
Set D = Worksheets("Description") 'définit l'onglet D
TF = F.Range("A1").CurrentRegion 'définit le tableau TF
TD = D.Range("A1").CurrentRegion 'définit le tableau TD
Set PL = F.Range("A1") 'initialise la plage PL
For I = 2 To UBound(TF, 1) 'boucle 1 : sur toutes les lignes I du tableau F (en partant de la seconde)
For J = 2 To UBound(TD, 1) 'boucle 2 : sur toutes les lignes j du tableau D (en partant de la seconde)
If InStr(1, TF(I, 3), TD(J, 1), vbTextCompare) > 0 Then 'condition si la donnée en colonne 1 de TD est contenue dans la donnée en colonne 3 de TF, redéfinit la plage F
Set PL = IIf(PL.Cells.Count = 1, F.Rows(I), Application.Union(PL, F.Rows(I)))
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
NTL = UBound(TF, 1) 'définit le nombre de ligne total NLT
NLS = PL.Rows.Count 'définit le nombre de ligne supprimées NLS
NLR = NTL - NLS 'définit le nombre de lignes restantes NLR
PL.Delete 'supprime la plage PL
MsgBox "Nombre Total de ligne : " & NTL & Chr(13) _
& "Nombre de lignes supprimées : " & NLS & Chr(13) _
& "Nombre de lignes restantes : " & NLR 'message
End Sub