Question à propos de tableau

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Rebonjour,

Quand on utilise un ComboBox celui-ci récupère ses items (ListFillRange) dans un tableau dressé sur la feuille.
Je pense qu'il doit y avoir un moyen, mais j'achoppe, pour éviter de mettre un tableau dans la feuille et que celui-ci ne soit que dans une macro. J'ai regardé du côté de "Scripting.Dictionary", mais je ne pense pas que ce soit la bonne voie.
Il s'agit d'une liste toute simple de 20 items numériques allant de 1 à 20.
Comment peut-on s'y prendre ?
 
Re : Question à propos de tableau

Bonjour phlaurent55,

Merci pour m'avoir répondu. Malheureusement ça plante.
Voici la macro :
VB:
Sub ActionMiFrase2(cel As Range)
'Actualisation du ComboBox à partir d'un module qui n'est pas un module de feuille

Dim nblgn As Byte, i As Byte, plage As Range, combo1 As OLEObject

nblgn = NbMots(CStr(cel)) '"nblgn" étant le nombre d'items qui seront récupérés dans le ComboBox
Set plage = [ListePos].Resize(nblgn) '[ListePos] est la plage nommée correspondant au tableau des items du ComboBox
Set combo1 = Worksheets("BD").OLEObjects("ComboBox1")

combo1.ListFillRange = "" 'efface l'ancienne liste du ComboBox
'combo1.ListFillRange = plage.Address 'nouvelle liste (là ça marchait)
For i = 1 To nblgn
    combo1.AddItem (i) 'Erreur 438 (traduction : "l'obet n'admet pas cette propriété ou méthode")
Next i
combo1.Object.ListIndex = 0 'sélection du 1er item de la liste

End Sub
 
Re : Question à propos de tableau

Bonjour Magic_Doctor, Philippe,

La Combo est sur la feuille "BD" Philippe 🙂 Compléter ainsi :

Code:
combo1.ListFillRange = ""
combo1.Object.Clear 'RAZ
For i = 1 To nblgn
  combo1.Object.AddItem i
Next
A+
 
Re : Question à propos de tableau

Bonjour job,

¡Caramba! Object or not Object, that's the question!
C'est bizarre cet Object, on ne sait jamais quand il faut le placer...
Je pense que ça devrait marcher, mais le problème c'est que ça beugue dans la macro (module de feuille) du combo :
VB:
Private Sub ComboBox1_Change()
    possymb = ComboBox1
End Sub
Erreur : "Les types ne coïncident pas"
"possymb" est une variable "Public" que j'ai déclarée comm "Byte".

Enfin, que signifie exactement :

VB:
combo1.Object.Clear 'RAZ
et l'acronyme "RAZ" ?
 
Re : Question à propos de tableau

Bon, j'ai réglé le problème à la hussarde. Sans trop essayer de vraiment comprendre, j'ai déclaré la variable "possymb" non plus comme "Byte" mais comme "Variant".
C'est quand même bizarre qu'avant ça marchait comme "Byte" (logique puisque la liste du combo ne dépasse pas 20 items) et après modif il faut que ce soit "Variant".
 
Re : Question à propos de tableau

Re,

Quand on remet à zéro (RAZ) la liste de la Combo avec Clear, la Combo prend la valeur "".

Qui ne peut être converti en un nombre Byte => bug.

En déclarant possymb As Variant ou As String no problem.

Mais tu peux la déclarer As Byte en écrivant :

possymb = Val(ComboBox1)

A+
 
Re : Question à propos de tableau

Bonsoir.
C'est bizarre cet Object, on ne sait jamais quand il faut le placer...
Explications:
Une feuille n'est pas la place normale d'un ComboBox. Sa place normale est un Userform.
De même d'ailleurs qu'un graphique: sa place normale est une feuille graphique et pas une feuille de calcul.
Excel offre cependant la possibilité d'incorporer ces objets, ainsi que d'autres grâce à un support qui se substitue à son support normal, et le possède en tant que propriété. Ainsi, dans une feuille, contrairement à un userform, il n'y a pas de collection Controls dont chaque membre est directement un contrôle: il y a une collection OLEObjects dont chaque membre a une propriété Object qui elle est un contrôle.
Il n'y a pas non plus de collection Charts dont chaque membre est directement un graphique: c'est une collection du classeur et non de la feuille. Il y a une collection ChartObjects dont chaque membre possède une propriété Chart qui elle est un graphique.
Cordialement.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

O
Réponses
4
Affichages
1 K
Olocsob
O
S
Réponses
30
Affichages
4 K
Sacha1980
S
N
Réponses
5
Affichages
3 K
Nicocotte125
N
W
Réponses
10
Affichages
2 K
Willam 76000
W
N
  • Question Question
Réponses
0
Affichages
558
nathg31
N
J
Réponses
9
Affichages
3 K
joaoratao
J
T
Réponses
18
Affichages
2 K
taratata
T
S
Réponses
4
Affichages
2 K
stage_ferrit
S
F
Réponses
5
Affichages
5 K
faenor86
F
Retour