Combobox/Rowsource sous Excel (sans userform)

B

ben

Guest
Bonjour aux cracks du VBA (thierry particulièrement),

Je préfère préciser que je ne suis pas débutant, j ai déjà
fait un petit programme assez évolué par des userforms.

Le problème c est que là je travaille en VBA avec notamment
des combobox directement sous Excel (contrainte du boulot) et ça change tout. J ai fouillé dans ce forum et je ne crois pas que quelqu'un ait soulevé ce problème

Ainsi j ai mis les valeurs d initialisation (additem) des combobox dans le ThisWorkbook au lieu du traditionnel Private Sub userform_initialize puis sheets(« X »).activate. Sinon les données des combobox ne se
remplissent pas ou alors se remplissent autant de fois que on change la valeur de la combobox. Avec les AddItems (les combobox CBloc et CBmonth), ca marche parfaitement.

Le problème vient de ma combobox à données variables c est
à dire dont le contenu s adapte aux valeurs présentes dans
une colonne d excel et qui s arrête donc à la dernière
ligne remplie.


La formule ci dessous qui marche parfaitement sous une userform classique ne marche plus lorsqu on le place dans le ThisWorkbook :
Dim DerCell As String
DerCell = Sheets("Report").range("B16").End(xlDown).Address
Sheets("Report").CBact.RowSource = "B17:" & DerCell

Je vous remercie (beaucoup) pour votre aide éventuelle

PS : Je sais que vous n'aimez pas les fichiers joints mais
si vous en avez besoin, il ne fait que 27ko compressé.

PS2 : voilà le code complet :

>>>>dans ma feuille REPORT :

Private Sub CBloc_Change()

Dim Location As Variant

Location = CBloc.Value
range("Report!C7").Value = Location

End Sub

Private Sub CBmonth_Change()

Dim Month As Variant

Month = CBmonth.Value
range("Report!C8").Value = Month

End Sub

Private Sub CBact_Change()

Dim Activity As Variant

Activity = CBact.Value
range("Report!C9").Value = Activity

End Sub


>>>>> dans mon classeur THISWORKBOOK :

Private Sub Workbook_Open()

'Combo choix des loc
Sheets("Report").CBloc.AddItem ("Localizations")
Sheets("Report").CBloc.AddItem ("SGPM Paris")
Sheets("Report").CBloc.AddItem ("S.G. UK")
Sheets("Report").CBloc.AddItem ("Europe >")
Sheets("Report").CBloc.AddItem ("America >")
Sheets("Report").CBloc.AddItem ("Asia >")

'Combo choix du mois
Sheets("Report").CBmonth.AddItem ("Periods")
Sheets("Report").CBmonth.AddItem ("January")
Sheets("Report").CBmonth.AddItem ("February")
Sheets("Report").CBmonth.AddItem ("March")
Sheets("Report").CBmonth.AddItem ("April")
Sheets("Report").CBmonth.AddItem ("May")
Sheets("Report").CBmonth.AddItem ("June")
Sheets("Report").CBmonth.AddItem ("July")
Sheets("Report").CBmonth.AddItem ("August")
Sheets("Report").CBmonth.AddItem ("September")
Sheets("Report").CBmonth.AddItem ("October")
Sheets("Report").CBmonth.AddItem ("November")
Sheets("Report").CBmonth.AddItem ("December")

'Combo choix activities
Sheets("Report").Select

Dim LastCell As String
LastCell = range("Report!B15").End(xlDown).Address
CBact.RowSource = "Report!B16:" & LastCell

End Sub
 
D

david of lunel

Guest
salut !

est-ce le week end ou autre chose, les pros sont aux abonnés absents !
Nul doute que tu auras une réponse, mais il faudra patienter un peu...Comme pour ma demande d'ailleurs !

david of lunel
 
@

@+Thierry

Guest
Salut les gars,

Sorry je suis au bureau et j'ai vraiment pas de temps aujourd'hui... Loin du week end encore... Vite fait à la volée...

Aucune idée si çà va marcher sur un ComboBox sur une feuille (et pas le tmp de tester sorry):

Sheets("Report").CBact.RowSource = "Report!B17:" & DerCell


Sinon si ça ne marche pas en Additem tu fais un boucle dans ce style :

L = Sheets("Report").range("B16").End(xlDown).Row
Plage = Sheets("Report").range("B17:B" & L)

For Each Cell in plage
Sheets("Report").CBact.AddItem Cell.value
Next Cell

Euf les variables Cell as Range, Plage as range, L as interger (suis vraiment à la bourre)

Voilà tu devrais t'en sortir avec l'une ou l'autre soluce...
@+Thierry
 
B

ben

Guest
Oh j'y arrive pas, ça commence à me souler ce putain de code. J'ai essayé près d'une dizaine de formule et une centaines de variantes et là je sens que je vais pas tarder à exploser le clavier. C'est pas grave au remarque puisque ce n'est pas le mien. Oui mais d'un autre côté je risque de me faire virer alors j'attendrais d'être chez moi finalement pour boutros MON clavier.

Mauvaise blague mise à part (on est vendredi soir, soyer indulgent), je vais attendre que Thierry le maître soit de retour.

Je joins le fichier (je sais que vous n'aimez pas trop ça mais il est petit 20ko) pour ceux qui ont envie de passer un sale week end.

Merci à tous et bon weekend.
 
@

@+Thierry

Guest
Re Salut Ben

Une des rêgles de base est de ne pas s'énerver en programmation... C'est seulement avec multe patience que tu arriveras à quelque chose....

As-tu au moins essayé ce que je t'ai posté en urgence ? Il ne me semble pas ! Car je viens d'essayer avec la méthode AddItem et..... No Problémo ! (pour RowSource il semble qu'il faut s'y prendre autrement)

La macro est lancée en WorkBook_Open et la ComboBox est bien Remplie...

Donc pas d'énervement !!

Bon Week End
@+Thierry
 

Pièces jointes

  • SheetsComboFill.zip
    9.9 KB · Affichages: 221
X

Xavier

Guest
Salut le Forum,


Je n'ai pas réussi à ouvrir ton fichier mais je l'ai recontruit en partie avec les données que tu nous a fournies.

Voici mes codes qui fonctionnent:

Sheets("Report").Select

Dim LastCell As String
LastCell = Range("Report!B15").End(xlDown).Address
Sheets("Report").CBact.ListFillRange = "REPORT!B16:" & LastCell

End Sub




Code Rowsource ne fonctionne pas sous excel, il faut utiliser le code "listfillrange".

a bientot

Xavier

PS:


Petit conseil en passant:

Pour toi et pour d'autres, au lieu d'utiliser le code << sheets("report") >> utilise peut être <<sheet1>> ou <<feuil1>> ainsi après le point, VBE te proposera les propriétés existantes et utilisable. Tu aurais ainsi pu voir que le Rowsource n'existait pas et epargner ce pauvre clavier.

Le probs avec ce conseil, il est possible que tu t'emmeles les pinceaux. Ainsi au moment où il faudra utiliser le caption de l'objet, tu risques d'utiliser le name de l'objet. (exemple faire <<sheet1!a1>> au lieu de marquer <<report!a1>>). Faites donc attention
 
X

Xavier

Guest
Je suis désolé de passer après Thierry mais j'ai ouvert le post vers 18h30 et puis je n'y suis plus retourné . Je n'ai donc pas pu voir que thierry avait résolu autrement ton problème.

Bonne soirée

Xavier
 
V

Vériland

Guest
Bonsoir Ben et le forum,

Ben faut rester "zen" ben...hi hi hi...bon j'ai regardé ton fichier...je te suggère éventuellement d'essayer avec çà dans ThisWorboock pour le troisième combobox :

'Combo choix activities
Dim DerCell As String
Dim i As Long
For i = 15 To Sheets("Report").range("B15").End(xlDown).Row
plage = range("b" & i).Value
Sheets("Report").CBact.AddItem (plage)
Next i

ensuite pour moi c'est erreur d'execution'48' fichier ESSEXCLN.XLL introuvable...pour sûr j'lai pas ce fichier...alors j'peux pas aller plus loin

Bon courage

A+ Vériland
 
@

@+Thierry

Guest
Bonsoir mais c'est bien sûr !!

Bravo Xavier ............. !!!

et pourtant je le savais bien ................. mais c'est comme 900 millions de chinois et moi et moi et Moa !!! "j"y pense et puis j'oublie" !!!

ListFillRange !!! sur les ComboBox de feuilles !!! (Zut mon cerveau devient trop petit, je vais "péter" mon clavier alors !!! lol)

A l'époque on a déjà discuté de ce truc avec un Xavier........

Disons qu'une ListBox (ou ComboBox) de feuille réagit a la propriété "ListFillRange"....... et une ComboBox (ou ListBox) de UserForm c'est "RowSource" ....... (Thanks a lot MS !!)...... Look Here

Je suis navré de ne pas t'avoir mis sur la bonne piste dès mon post en Urgence Mr Ben........ et en plus en AddItem zavais zappé le "Set" .... Donc si tu as cassé des claviers tu les déduis de ma facture d'intervention en urgence !!!


Bon Allez have a nice Wouiiik Hand !
@+Thierry

PS pas testé ta soluce Vériland mais çà à l'air très ingénieux (le Dim DerCell As String il sert à koi ?)
 
Dernière modification par un modérateur:
V

Vériland

Guest
...!!!NON!!!...!!!Ben!!!...ne fait pas çà!...
pc5.gif
...trop tard...hi hi hi

en tout cas au début t'avais pas d'amis...mais là c'est plus l'cas...tu as d'quoi faire ce week-end...lol

Oups Thierry...le Dim DerCell As String il sert à rien du tout là...il s'est incrusté dans mon copier coller...hi hi hi

bon c'est à toi d'mettre un O...lol

div21.gif


Bon Week aussi...

A+ Vériland
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG