Bonjour,
Pour le besoin d'une maquette, j'ai créé une fonction Excel à l'aide du VBA Excel. Le code permet de compter le nombre d'occurrences de cellule vide d'une colonne d'une plage en lui donnant juste l'intitulé de la colonne à dénombrer pour se situer.
Le problème est que lorsque je fais appel à la fonction dans Vba, ça marche parfaitement sans souci mais quand je l'appelle à partir d'Excel dans une cellule, il m'indique parfois une erreur de référence circulaire. J'ai vérifié le code et j'ai mis dans deux feuilles différentes la plage de recherche et les résultats à retourner. Hélas, c'est toujours la même chose.
Voici le code:
Option Explicit
Public Function NbVide2(Tableau As Range, NomColonne As String)
Dim Trouve As Range, Table As Range, Cel As Range
Dim ColNum As Long, RowNum As Long, Count As Long, FirstRow As Long
'Recherche la position en terme de colonne de l'intitulé de colonne définie
Set Trouve = Tableau.Rows(1).Find(What:=NomColonne, LookAt:=xlWhole)
ColNum = Trouve.Column
'Détermination de la dernière ligne occupée par la plage (dans l'hypothèse où la première colonne détermine le nombre de lignes de la plage)
RowNum = Cells(Tableau.Rows.Count, 1).End(xlUp).Row
'Détermination de la première ligne occupée par la plage
FirstRow = Tableau.Rows(1).Row
'Définition de la plage de recherche
Set Table = Range(Cells(FirstRow, ColNum), Cells(RowNum, ColNum))
'Compte dans la plage sélectionnée l'occurrence des cellules vides
Count = 0
For Each Cel In Table
If Cel = "" Then
Count = Count + 1
End If
Next
NbVide2 = Count
Set Tableau = Nothing
NomColonne = ""
Count = ""
End Function
Pouvez-vous m'aider svp?
Merci d'avance.
Cordialement,
Pour le besoin d'une maquette, j'ai créé une fonction Excel à l'aide du VBA Excel. Le code permet de compter le nombre d'occurrences de cellule vide d'une colonne d'une plage en lui donnant juste l'intitulé de la colonne à dénombrer pour se situer.
Le problème est que lorsque je fais appel à la fonction dans Vba, ça marche parfaitement sans souci mais quand je l'appelle à partir d'Excel dans une cellule, il m'indique parfois une erreur de référence circulaire. J'ai vérifié le code et j'ai mis dans deux feuilles différentes la plage de recherche et les résultats à retourner. Hélas, c'est toujours la même chose.
Voici le code:
Option Explicit
Public Function NbVide2(Tableau As Range, NomColonne As String)
Dim Trouve As Range, Table As Range, Cel As Range
Dim ColNum As Long, RowNum As Long, Count As Long, FirstRow As Long
'Recherche la position en terme de colonne de l'intitulé de colonne définie
Set Trouve = Tableau.Rows(1).Find(What:=NomColonne, LookAt:=xlWhole)
ColNum = Trouve.Column
'Détermination de la dernière ligne occupée par la plage (dans l'hypothèse où la première colonne détermine le nombre de lignes de la plage)
RowNum = Cells(Tableau.Rows.Count, 1).End(xlUp).Row
'Détermination de la première ligne occupée par la plage
FirstRow = Tableau.Rows(1).Row
'Définition de la plage de recherche
Set Table = Range(Cells(FirstRow, ColNum), Cells(RowNum, ColNum))
'Compte dans la plage sélectionnée l'occurrence des cellules vides
Count = 0
For Each Cel In Table
If Cel = "" Then
Count = Count + 1
End If
Next
NbVide2 = Count
Set Tableau = Nothing
NomColonne = ""
Count = ""
End Function
Pouvez-vous m'aider svp?
Merci d'avance.
Cordialement,