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
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