Appel de la fonction "Application.CountA(Feuil3.Range("A2").EntireColumn)"
Zobaky
Messages postés6Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention12 novembre 2009
-
23 oct. 2009 à 10:44
Zobaky
Messages postés6Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention12 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Zobaky
Messages postés6Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention12 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?