Modifier code

Bonjour, j'ai eesayé de modifié ma macro, mais ça me met toujours un message d'erreurs, je souhaiterai effectuer des calculs seulement si la condition est respéctée ( c'est à dire que les valeurs de la colonne c soit incluse dans la période que j'ai choisi); comment dois je modifier cette macro?

Sub Macro2()

Sheets("Feuil1").Select

Columns("A:A").Select

Selection.Copy

Sheets("Feuil2").Select

Columns("A:A").Select

ActiveSheet.Paste

Application.CutCopyMode = False

ActiveSheet.Range("$A$1:$A$13").RemoveDuplicates Columns:=1, Header:=xlYes

Dim i As Long, k As Long

Application.ScreenUpdating = False

With Worksheets("Feuil1")

i = .Range("C" & Rows.Count).End(xlUp).Row

For k = 2 To i

If .Cells(k, C).Value >= Range("A_Debut").Value Or .Range("C" & Ligne).Value <= Range("A_Fin").Value Then Sheets("Feuil2").Select

Range("B2").Select

ActiveCell.FormulaR1C1 = _

"=SUMPRODUCT((Feuil1!C[-1]=Feuil2!RC[-1])*(Feuil1!C[2]=1))"

Range("B2").Select

Selection.AutoFill Destination:=Range("B2:B10"), Type:=xlFillDefault

Range("B2:B10").Select

End If

Next

End With

End Sub

9filtrer-1date.xlsm (27.53 Ko)

Bonjour

Dans la ligne rouge :

If .Cells(k, C).Value >= Range("A_Debut").Value Or .Range("C" & Ligne).Value <= Range("A_Fin").Value Then Sheets("Feuil2").Select

le premier C est utilisé comme une variable mais n'est pas défine et n'a pas de valeur.

Bonjour,

Si j'ai bien compris la question et le fichier

Option Explicit
Public Sub Test()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim DerLig1 As Long, Derlig2 As Long
Dim i As Long, j As Long, Cpt As Long

    Application.ScreenUpdating = False
    Set Ws1 = Worksheets("Feuil1")
    DerLig1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
    Set Ws2 = Worksheets("Feuil2")
    Derlig2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
    If Derlig2 > 1 Then Ws2.Range("A1:B" & Derlig2).ClearContents
    Ws1.Columns(1).Copy Destination:=Ws2.Cells(1, 1)
    Ws2.Range("A1:A" & Derlig2).RemoveDuplicates Columns:=1, Header:=xlYes
    Derlig2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
    Cpt = 1

    With Ws1
        For i = 2 To Derlig2
            For j = 2 To DerLig1
                If .Cells(j, 3) >= Range("A_Debut") And .Cells(j, 3) <= Range("A_Fin") Then
                    If .Cells(j, 1) = Ws2.Cells(i, 1) Then
                        Ws2.Cells(i, 2) = Cpt
                        Cpt = Cpt + 1
                    End If
                End If
            Next j
            Cpt = 1
        Next i
    End With
    Set Ws1 = Nothing: Set Ws2 = Nothing
End Sub

Bonjour à tous,

Une solution utilisant un dictionnaire

18kooka57.xlsm (22.29 Ko)

A+

Rechercher des sujets similaires à "modifier code"