Erreur d'exécution '5' argument ou appelle de procedure incorrect

Bonjour, j'utilise le code suivant pour compter les valeurs uniques dans une colonne.

Le code ne fonctionne pas avec l'instruction columns(Nart) mais il marche très bien avec range("A:A") par exemple, or ma colonne d'article ne se trouve pas toujours dans la colonne A. La fonction NumeroColonne renvoie la numéro de colonne dont l'en-tête est "Article" et fonctionne bien.

Public Function compter_uniques(plage As Range) As Long
 Dim compteur_pas_unique As Variant
Set dico = CreateObject("scripting.dictionary")
For Each cellule In plage
     ref = cellule.Value
     If Not dico.exists(ref) Then
          dico.Add ref, ref
     End If
Next
compter_uniques = dico.Count

compteur_pas_unique = plage.Cells.Count - dico.Count
End Function

Sub test()
    Nart = NumeroColonne("Article", "Données", xlWhole)
    MsgBox Nart
    MsgBox compter_uniques(Sheets("Données").Columns(Nart))

End Sub

L'erreur d'exécution 5 est relative à la ligne :

If Not dico.exists(ref) Then

Je ne comprends pas comment la résoudre...

Merci pour votre aide

Bien cordialement

PS : j'ai "voler" la fonction "compter_uniques" sur un forum que je ne retrouve plus :)

Bonjour,

Un essai ...

    Nart = NumeroColonne("Article", "Données", xlWhole)
    MsgBox Nart
    Nart = 5
    With Sheets("Données")
        dl = .Cells(Rows.Count, Nart).End(xlUp).Row
        MsgBox compter_uniques(.Range(.Cells(1, Nart), .Cells(dl, Nart)))
    End With

ric

Niquel, c'est un peu plus lourd qu'un simple Columns (je comprends tjrs pas pourquoi ca ne fonctionne pas) mais ca marche bien !

Merci :)

Bonjour,

(je comprends tjrs pas pourquoi ca ne fonctionne pas)

En utilisant le pas-à-pas et le cellule.select > dans ta Function > cellule sélectionnait la colonne > le code n'était pas en mesure de faire la différence > il semblerait que la colonne entière est considérée comme un > tandis qu'un bout de colonne est considéré comme un ensemble de cellules ...

For Each cellule In plage 

cellule.select  ' < pour le test

ric

Rechercher des sujets similaires à "erreur execution argument appelle procedure incorrect"