Corriger une macro

kawtdanne Messages postés 12 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un fichier excel avec 2 macros,
la premiere permet de definir deux periodes (cette macro marche bien)
Me deuxième macro normalement doit copier la colonne a feuille1 dans la colonne a feuille2, enlever les doublons, et apres effectuer des calculs seulement pour les données de la periode A.
Mon probleme c'est mon code fonctionne sauf qu'il ne prend pas en considération la condition que j'ai ajouté du coup, il effectue le calcul pour toutes les données.
mon code est le suivant:
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
Application.ScreenUpdating = False

With Worksheets("Feuil1")
Dim CELL As Range
End With
With Worksheets("Feuil2")
Dim I As Long
I = .Range("A" & Rows.Count).End(xlUp).Row
For Each CELL In Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row)
If CELL.Value >= Range("A_Debut") Or CELL.Value <= Range("A_Fin").Value Then
Sheets("Feuil2").Select
.Range("B2").Formula = "=SUMPRODUCT((Feuil1!C[-1]=Feuil2!RC[-1])*(Feuil1!C[2]=1))"
.Range("B2").AutoFill Destination:=.Range("B2:B" & I), Type:=xlFillDefault

End If
Next CELL
End With
End Sub

Est ce que vous pouvez me dire pourquoi le IF n'est pas pris en compte?
Merci
A voir également:

2 réponses

Morgothal Messages postés 1350 Statut Membre 184
 
Salut
Comme ça, je dirais qu'il manque un .value à cette ligne :

If CELL.Value >= Range("A_Debut").Value Or CELL.Value <= Range("A_Fin").Value Then

Peut -être est-ce autre chose ...
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour

peut-^tre

Tu as créé sagement un bloc
With Worksheets("Feuil2")

End With

il faut alors que tous les objets cells et/ou range marquent leur appartenance à ce bloc par un point

With Worksheets("Feuil2")
Dim I As Long
     I = .Range("A" & Rows.Count).End(xlUp).Row
     For Each CELL In .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row)
          If CELL.Value >= .Range("A_Debut") Or .CELL.Value <= .Range("A_Fin").Value Then
               .Range("B2").Formula = "=SUMPRODUCT((Feuil1!C[-1]=Feuil2!RC[-1])*(Feuil1!C[2]=1))"
               .Range("B2").AutoFill Destination:=.Range("B2:B" & I), Type:=xlFillDefaul
          End If
     Next CELL
     .Select
End With

tu n'as pas besoin d'écrire Sheets("Feuil2").Select puisque tu es dans le bloc
"feuil2"
le ".select" est mis à le fin de ta macro si tu veux que l'utisateur voit le résultat

Pendant que j'y suis

en début de macro utilise cette instruction
Application.screenupdating=False
qui évitera les sautes d'écran accélère l'éxécution de 80%

Pourquoi une boucle puisque tu utilises xlfilldefaut ?

Michel
0