ComboBox & Tableau VBA

  • Initiateur de la discussion Initiateur de la discussion Startus
  • Date de début Date de début

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 !

Startus

XLDnaute Occasionnel
Bonsoir tout le monde,

Comment ajouter à la propriété RowSource d'une ComboBox un tableau en mémoire, crée à partir d'une plage de cellule ???

J'ai écrit ce code :

Sub Liste()

Dim Cible As Object
Dim Nbre As Integer, i As Integer
Dim Place() As String

Nbre = Range('Combien').Count
ReDim Place(1 To Nbre)

For i = 1 To Nbre
For Each Cible In Range('Combien')
Place(i) = Cible
Next Cible
Next i


'MsgBox Place(10)
'Userform1.ComboBox1.RowSource = Place()


End Sub

Mais, cela ne marche pas...

En fait Testant la MsgBox, elle me renvoie la dernière entrée du tableau :
CAF DE LYON
Et ceci même en changeant de N°: MsgBox Place(7) ???

Si une ou plusieurs lanternes veulent bien m'éclairer...

Je vous joint un exemple...
Merci [file name=Liste_20060516030609.zip size=10950]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Liste_20060516030609.zip[/file]
 

Pièces jointes

Bonjour Startus,

Ton code est pas top (ce n'est pas une critique négative !!!!). En fait, ta boucle i et ton 'For Each ...Next' font doublons. Ils ne servent à rien.

Je t'ai modifié ton pgm pendant que tu dormais 😉(cf. fichier joint).

Bonne journée

Papaye [file name=Liste2.zip size=10639]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Liste2.zip[/file]
 

Pièces jointes

Bonjour Alain, Papaye, Startus, le Forum

Et pourquoi pas deux lignes 😉

Private Sub UserForm_Initialize()
Dim TabPlage

TabPlage = Range('Combien')
ComboBox1.List = TabPlage
End Sub

Oui on n'a plus de RowSource, mais List est prévu pour les Tableaux...

Et 'ComboBox1.Column = TabPlage' pour les Tableaux Transposés....

Bonne Journée
[ol]@+Thierry[/ol]
 
Bonjour Papaye, Alain, Thiérry & le forum

Je vous remercie pour vos réponses constructives...

J'avais bien pensé ajouter la liste directement à la ComboBox1 avec un Code du genre:
UserForm1.ComboBox1.RowSource =Range('Combien')

Mais je me suis mal exprimé...

Dans un tableau qui grossit de jour en jour,

* Je voudrai qu'un code enregistre dans un tableau la plage dynamique ('Combien')
* Supprime les doublons et tri cette liste...
* Avant de l'ajouté à la ComboBox

En fait, dans une application, que je créee, j'ai écrit ce code :

Code:
'Prépare la zone de liste déroulante
Sub Liste_Opération()
Dim Cible As Object
Dim Idx As Byte

Range('Liste_Boite').ClearContents
Sheets(8).Range('D1') = ' '

If Range('C6') = '' Then Exit Sub

Idx = Val(ActiveSheet.Index) - 1

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With

Range('Opér.Compte' & Idx).Copy
With Worksheets(8)
    .Activate
    .Range('D1').PasteSpecial Paste:=xlPasteValues
    .Columns('D:D').Sort Key1:=Range('D1'), Order1:=xlAscending
End With

For Each Cible In Range('Liste_Boite')
    If Cible.Offset(1, 0) = Cible Then Cible.ClearContents
Next Cible

Columns('D:D').Sort Key1:=Range('D1'), Order1:=xlAscending
Application.Calculation = xlCalculationAutomatic

Worksheets(Idx + 1).Activate

Ce code fonctionne très bien,
Il récupère la plage dynamique, la copie dans une autre feuille,supprime les doublons et tri la liste avant de l'ajouter à la ComboBox...

Malheureusement, le Userform ne s'affiche qu'après un certain temps, c'est pourquoi mon idée de mettre la plage dynamique dans un tableau en mémoire au lieu de la copier dans une autre feuille en pensant que cela augmentera la vitesse du code...Ouf

Donc si vous pouvez m'aider à realiser cela dans le fichier joint à la première demande, ensuite je l'ajusterai au code de mon appli...

Merci encore...
 
- 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

Réponses
6
Affichages
86
Réponses
5
Affichages
186
Réponses
5
Affichages
252
Réponses
10
Affichages
285
Réponses
3
Affichages
197
Réponses
5
Affichages
237
Réponses
4
Affichages
192
Retour