|
|
|
|
Bonjour ,
ma macro suivante bloque (erreur 2015)
cv2="1234"
z=0
For y = 1 To 9
If Application.CountIf(cv2, y) = 1 Then z = z + 1
next y
normalement, quand y=1, countif devrait renvoyer 1 (qui est dans la variable cv2) et mon compteur z devrait augmenter de 1
Un grand merci par avance de bien vouloir aider un débutant
Mimi
Salut,
Option Explicit
Sub a()
Dim z, y
For y = 1 To 9
If Application.WorksheetFunction.CountIf(Range("a1:a9"), y) = 1 Then
z = z + 1
End If
Next y
MsgBox z
End SubIl faut comprendre ce que fait la fonction CountIf.
La fonction CountIf compte le nombre d'occurences existantes dans une plage de cellules selon un critére. Dans ton cas si les critéres ( de 1 à 9 ) sont uniques la variable z sera incrementé. Prenons l 'exemple d'une plage a1:a9 avec les données 1 2 3 4 4 5 5 5 5 Le résultat de la macro sera 3 puisque 4 et 5 on les trouve plusieurs fois, tandis que 1,2 et 3 une seule fois. Si par exemple on met la condition = 2 Application.WorksheetFunction.CountIf(Range("a1:a9"), y) = 2 Tu peux dire le résultat et pourquoi? Mais sans exécuter la macro ;)
Mieux vaut dire ce que tu veux obtenir pour savoir mieux t'aider. lami20j P.S. En bref Application.WorksheetFunction.CountIf(Range("a1:a9"), y) = 1 veut dire Combien des éléments on les trouve une seule fois (parmi les critéres de 1 à 9)? |
Merci beaucoup lami20j tes explications m'ont bien aidées.
|
Re,
Dim cv2 As Range Set cv2 = Cells(2, 44)lami20j |
Merci beaucoup pour tes 2 réponses, c'est tout à fait ce que je voulait (ta 2ème réponse)
|
Bonjour,
|
Rebonjour,
|
Salut,
|