alimenter combobox

L

lio

Guest
Bonjour le forum,
je suis débutant et j'essaie de faire une petite appli pour progresser.
Cependant, je m'apperçois que je bloque très vite notamment pour alimenter une combobox. J'ai tenté de faire avec la méthode Row Source mais sans réussite. Quelqu'un peut-il me montrer mes erreurs, sachant que je souhaiterai avoir quelque chose d'évolutif si des données changent sans avoir à changer tout le programme.

D'autre part, j'ai lu dans les archives qu'il faut utiliser la fonction décaler pour avoir une mise à jour automatique...

Merci.
[file name=Personne.zip size=11556]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Personne.zip[/file]
 

Pièces jointes

  • Personne.zip
    11.3 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Lio, bonjour le forum,

Plutôt que la méthode RowSource, je te conseille la méthode AddItem pour alimenter une ComboBox. Tu peux le faire par exemple à l'initialisation de l'UserForm avec le code suivant :


Option Explicit 'oblige à déclarer toutes les variables

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim Dl As Long 'déclare la variable Dl (Dernière ligne)
Dim Pl As Range 'déclare la variable Pl (Plage)
Dim Cel As Range 'déclare la variable Cel (Cellule)

With Sheets('donnée')
Dl = .Range('A65536').End(xlUp).Row 'définit la variable Dl
Set Pl = .Range('A1:A' & Dl) 'définit la variable Pl
End With

'remplissage de la ComboBox 'choix' (je te conseille la méthode AddItem plutôt que RowSource)
'boucle sur toutes les cellules éditées de la colonne A
For Each Cel In Pl
choix.AddItem Cel.Value
Next Cel
End Sub
 
L

Lio

Guest
Merci beaucoup Robert. Entre temps, j'ai essayé une autre méthode avec addIttem mais ça m'a pas avancé plus. Je joins quand meme mon dossier au cas où. [file name=Personne_20051009174234.zip size=12332]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Personne_20051009174234.zip[/file]
 

Pièces jointes

  • Personne_20051009174234.zip
    12 KB · Affichages: 52

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Lio, bonjour le forum,

Plusieurs erreurs dans ton code font que ça ne pouvait pas marcher :
1. tu as taper à la main Private Sub UserForm_Initialise() et tu t'es planté car c'est Initiali
ze. Pour éviter ce genre de déconvenue, choisis le composant dans le premier champ (en haut au dessus du grand rectangle blanc de droite) puis l'événement dans le second.
2. Tu ne peux pas nommer une feuille directement, tu dois utiliser la syntaxe Sheets('nom_de_la_feuille') ou Sheets(index) comme Sheets('donnees') ou Sheets(3).
3. Si tu commences une boucle par For il ne faut pas oublier le Next comme tu l'as fait, For x=2 To 6 mais tu n'as pas mis Next x. Ton code corrigé devient :


Private Sub UserForm_Initialize()
For x = 2 To 6
choix.AddItem Sheets('donnee').Cells(x, 4)
Next x
End Sub

Il fonctionne et ressemble beaucoup à celui que je t'ai donné sauf que dans l'état il est figé et ne s'actualise pas si tu rajoutes des équipes.

Jette un coup d'œil sur celui que je t'ai donné dans la première réponse. La plage des équipes s'actualise automatiquement.
 
L

lio

Guest
Merci beaucoup Robert. J'ai encore appris plein de choses aujourd'hui.
Merci en général à tous les habitués pour vos réponses et je ne désespère pas dans quelques mois de donner moi aussi un coup de pouce.
Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 963
Messages
2 093 997
Membres
105 906
dernier inscrit
aifa