Bonjour à tous !
J'espère que vous vous portez tous bien avec cette chaleur (pensez à vous hydrater c'est important),
Je viens faire appel à votre aide aujourd'hui pour la raison suivante :
Dans une macro, grâce à un bouton, je fais les manips suivante : Suppression de colonnes -> Création d'une liste de tri -> filtrer un tableau en fonction de cette liste -> copier / coller toutes les lignes filtrées -> compter le nombre de lignes différentes -> compacter les lignes identiques et les compter.
Je n'arrive pas à procéder à l'étape en rouge ci-dessus...J'ai ce code pour le moment, qui, me copie toutes les lignes une à une, mais la sélection de lignes seulement triées ne se fait pas... Puis il se pourrait suivant les configurations que je me retrouve avec plusieurs milliers de lignes donc la phase copier/coller lignes par lignes est très longue...
Pouvez -vous m'aider svp ?
PS : Mon code ci-dessous et le fichier test ci-joint
J'espère que vous vous portez tous bien avec cette chaleur (pensez à vous hydrater c'est important),
Je viens faire appel à votre aide aujourd'hui pour la raison suivante :
Dans une macro, grâce à un bouton, je fais les manips suivante : Suppression de colonnes -> Création d'une liste de tri -> filtrer un tableau en fonction de cette liste -> copier / coller toutes les lignes filtrées -> compter le nombre de lignes différentes -> compacter les lignes identiques et les compter.
Je n'arrive pas à procéder à l'étape en rouge ci-dessus...J'ai ce code pour le moment, qui, me copie toutes les lignes une à une, mais la sélection de lignes seulement triées ne se fait pas... Puis il se pourrait suivant les configurations que je me retrouve avec plusieurs milliers de lignes donc la phase copier/coller lignes par lignes est très longue...
Pouvez -vous m'aider svp ?
PS : Mon code ci-dessous et le fichier test ci-joint
VB:
Private Sub CommandButton1_Click()
Range("M:N").Delete
ActiveWorkbook.Sheets("Feuil1").ListObjects.Add(xlSrcRange, Range("$M$1:$M$16"), , xlYes).Name = _
"Critères"
Range("M1").Value = "Ligne de Nomenclature"
Range("M2").Value = "*VIS*"
Range("M3").Value = "*ECROU*"
Range("M4").Value = "*HUCKLOK*"
Range("M5").Value = "*SCREW*"
Range("M6").Value = "*NUT*"
Range("M7").Value = "*WASHER*"
Range("M8").Value = "*RONDELLE*"
Range("M9").Value = "*BOM*"
Range("M10").Value = "*SIMAF*"
Range("M11").Value = "*RESSORT*"
Range("M12").Value = "*RIV.*"
Range("M13").Value = "*NORD-LOCK*"
Range("M14").Value = "*SCR.*"
Range("M15").Value = "*ECR.*"
Range("M16").Value = "*GOUPILLE*"
With ActiveSheet.ListObjects(1)
.Range.AutoFilter
.Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Sheets("Feuil1").ListObjects("Critères").Range, Unique:=False
End With
Sheets.Add.Name = "Feuil2"
RowB01 = Worksheets("Feuil2").Cells(Rows.Count, 3).End(xlUp).Row + 1
i = 0
Do While Worksheets("Feuil1").Range("I" & i + 1).Value <> ""
Worksheets("Feuil1").Activate
If Worksheets("Feuil1").Range("I" & i + 1) = Hidden = False Then Range("I1:K" & i + 1).Copy
Worksheets("Feuil2").Activate
Worksheets("Feuil2").Cells(RowB01, 1).PasteSpecial xlPasteValues
i = i + 1
Loop
Dim nbligne As Integer
nbligne = Sheets("Feuil2").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("Feuil2").Range("J1").Formula = "=SUMPRODUCT(1/COUNTIF(Feuil2!C2:C" & nbligne & ",Feuil2!C2:C" & nbligne & "))"
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("C3", [C65000].End(xlUp))
mondico(c.Value) = mondico(c.Value) + 1
Next c
[E1].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
[F1].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
Columns("A:XFD").AutoFit
End Sub