Appel de la fonction "Application.CountA(Feuil3.Range("A2").EntireColumn)"

Zobaky Messages postés 6 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 12 novembre 2009 - 23 oct. 2009 à 10:44
Zobaky Messages postés 6 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 12 novembre 2009 - 5 nov. 2009 à 14:37
Bonjour,
Je suis en train de réaliser une boite de dialogue pour un fichier Excel 2003. Dans cette boite de dialogue j'utilise une comboboxe que je rempli de la façon suivante :

Dim User As Object
Set User = Worksheets(3).Cells(2, 1)
NbUser = Application.CountA(Feuil3.Range("A2").EntireColumn)
AjoutUserForm.UserComboBox.Clear
ReDim Arr(1 To NbUser)
For I = 1 To NbUser
Arr(I) = User(I).Value
AjoutUserForm.UserComboBox.AddItem Arr(I)
Next
AjoutUserForm.UserComboBox.ListIndex = 0

Lors de la compilation j'ai un message d'erreur :"Membre de méthode ou de données introuvable" avec surligné ".CountA". Sachant que j'utilise le même type de code dans un autre fichier avec une boite de dialogue je ne comprend pas d'ou vient cette erreur.

Je précise : UserCombobox existe bien, la colonne A2 de la feuil3 n'est pas vide.

Je vous remercie d'avance.
Cordialement

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 oct. 2009 à 11:36
Salut
Bizarre. Ta syntaxe fonctionne correctement chez moi, en Excel 2003.
Es-tu sûr que l'erreur vient de CountA ? en général, les erreurs sont signalées par ligne entière.
Comment est dimensionné "NbUser" ?
La feuille nommée Feuil3 existe t-elle au moment de la compilation ?
Essaye éventuellement avec Worksheets(3)

Je découvre ta méthode de listage des données avec l'objet User. Je ne connaissais pas.
Par contre, il y a un inconvénient au cas où ta liste comporte des cellules vides :
NbUser te donne le nombre de User dans ta colonne, les cellules vides ne sont pas comptées
Lors de ton For-Next, tu listes les cellules : La boucle comptera, elle, toutes les cellules, y compris les cellules vides.
A surveiller.

Détail :
Dans la syntaxe "Set User Worksheets(3).Cells(2, 1)", tu aurais dû uniformiser la méthode de désignation de ta feuille --> "Set User Feuil3 .Cells(2, 1)"

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Zobaky Messages postés 6 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 12 novembre 2009
23 oct. 2009 à 16:27
"Es-tu sûr que l'erreur vient de CountA ? en général, les erreurs sont signalées par ligne entière.
Comment est dimensionné "NbUser" "
> je suis quasiment sur que c'est cette ligne qui pose problème car j'ai pour débuguer supprimé tout le code, gardé cette ligne : "NbUser Application.CountA(Feuil3.Range("A2").EntireColumn)" et l'errreur continuer d'apparaitre toujours en surlignant "CountA", après je me demande si en VBA il n'y a pas un souci de bibliothèque ? (je débute et j'ai appris un peu le VBA sur le tas)

"Lors de ton For-Next, tu listes les cellules : La boucle comptera, elle, toutes les cellules, y compris les cellules vides. "
=> je sais bien mais je suis la personne qui completera cette liste d'utilisateur donc je veillerai bien a ne pas y avoir de vide.


"Dans la syntaxe "Set User Worksheets(3).Cells(2, 1)", tu aurais dû uniformiser la méthode de désignation de ta feuille --> "Set User Feuil3.Cells(2, 1)"
=> j'ai tenté d'uniformiser comme tu me l'as conseillé et dans l'autre sens aussi mais rien ne change :s


Enfin merci encore de ta réponse.
Codrialement
Zobaky
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
23 oct. 2009 à 16:42
Salut,

je ne sais pas dire d'ou vien le probleme mais voici une solution alternative qui fait la meme chose:

NbUser = Columns("A").SpecialCells(xlCellTypeConstants, 23).Count

A+
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 oct. 2009 à 19:18
Comment est dimensionné NbUser ?

Quand tu dis que cette même syntaxe fonctionne dans un autre contexte, c'est sur la même machine ?

"En compilation" = Quand tu compiles volontairement, par les menus ?
Est-ce que cela fonctionne en marche normale ?
Si oui, vérifie que les paramètres de CountA existent bien au moment de la compilation. Suppose que la feuille 3 soit créée par programme, il serait normal que le compilo ne la trouve pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zobaky Messages postés 6 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 12 novembre 2009
5 nov. 2009 à 14:37
Bonjour,

NbUser Columns("A").SpecialCells(xlCellTypeConstants, 23).Count > cette fonction compte plus d'élément qu'il n'y en a réellement.

NbUser est un integer, la syntaxe ne fonctionne sur aucune machine et la feuil3 existe bien au moment de la compilation.

Bon finalement j'ai laché cette fonction, et je compte manuellement mon nombre d'éléments par colonne.

Merci pour ceux qui ont éssayé de m'aider
0
Rejoignez-nous