XL 2016 [RESOLU] VBA - Erreur sur macro qui compte les valeurs uniques

tetchounie

XLDnaute Nouveau
Bonjour,

Je rencontre un souci sur VBA. La ligne en gras ressort avec un incompatibilité de type.

La dernière ligne non vide est 80666 d'où l'utilisation d'un variable Long. La partie du code où l'anomalie ressort sert à compter le nombre de valeurs différentes dans une colonne en fonction d'un certain nombre de critères.

Sub Calcul_Résultats_Hebdo()

Dim i As Integer
Dim j As Long
Dim DerniereLigneNonVide As Long
Dim Ticket As Long
Dim TempTicket As Long

Sheets("Report Hebdo-Mensuel").Select

Sheets("Report Hebdo-Mensuel").Range("C4").Value = "Hebdo"
Sheets("Report Hebdo-Mensuel").Range("D4").Value = "Semaine " & Sheets("Instructions").Range("F9").Value

DerniereLigneNonVide = Sheets("BDD").Range("C" & Rows.Count).End(xlUp).Row

For i = 6 To 100
If Sheets("Report Hebdo-Mensuel").Range("A" & i).Value <> 0 Then
Sheets("Report Hebdo-Mensuel").Range("F" & i).Value = Application.SumIfs(Sheets("BDD").Range("Z:Z"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("F5").Value)
Sheets("Report Hebdo-Mensuel").Range("G" & i).Value = Application.SumIfs(Sheets("BDD").Range("Z:Z"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("G5").Value)
Sheets("Report Hebdo-Mensuel").Range("P" & i).Value = Application.SumIfs(Sheets("BDD").Range("AZ:AZ"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("P5").Value)
Sheets("Report Hebdo-Mensuel").Range("Q" & i).Value = Application.SumIfs(Sheets("BDD").Range("AZ:AZ"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("Q5").Value)
Sheets("Report Hebdo-Mensuel").Range("Y" & i).Value = Application.SumIfs(Sheets("BDD").Range("X:X"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("Y5").Value)
Sheets("Report Hebdo-Mensuel").Range("Z" & i).Value = Application.SumIfs(Sheets("BDD").Range("X:X"), Sheets("BDD").Range("AY:AY"), "<>INTERNET", Sheets("BDD").Range("K:K"), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("D:D"), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("F:F"), Sheets("Report Hebdo-Mensuel").Range("Z5").Value)

Ticket = 0
For j = 2 To DerniereLigneNonVide
TempTicket = Application.CountIfs(Sheets("BDD").Range("D2:D" & j), Sheets("Instructions").Range("F9").Value, Sheets("BDD").Range("K2:K" & j), Sheets("Report Hebdo-Mensuel").Range("A" & i).Value, Sheets("BDD").Range("F2:F" & i), Sheets("Report Hebdo-Mensuel").Range("AI5").Value, Sheets("BDD").Range("AP2:AP" & j), Sheets("BDD").Range("AP" & j).Value)
If TempTicket = 1 Then
Ticket = Ticket + 1
Else: Ticket = Ticket
End If
Next

Sheets("Report Hebdo-Mensuel").Range("AI" & i).Value = Ticket

End If
Next

End Sub

Je n'arrive pas à comprendre car pris individuellement chaque élément semble fonctionner. Je vous sollicite car je ne trouve vraiment pas la solution et cela fait plusieurs heures que je cherche.
J'ai testé la formule countifs avec des valeurs bien défini au cas où il s'agirait d'un problème de syntaxe de la formule mais elle ressort les bons résultats.
La variable TempTicket ne peut être supérieur à 20 donc j'ai également essayer en la passant en Integer à la place de Long mais cela ne change pas le problème.

Merci par avance pour votre aide.
 

gosselien

XLDnaute Barbatruc
Bonjour,

sois un rien logique....
Comment veux-tu que les gens t'aident à la lecture d'un code aussi long sans fichier excel ?

Il serait plus judicieux de mettre tes fichiers (anonymisés) pour y voir clair...
Ceci dit, je laisse le soin aux plus balèzes de comprendre ton code :)

P.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa