Belle ecriture VBA

  • Initiateur de la discussion Evelynetfrancois
  • Date de début
E

Evelynetfrancois

Guest
bonjour
je vous sollicite pour éviter une écriture un peu 'cochonne)
qui fonctionne certes , mais qui ne me semble pas très académique
Sur un USF j'ai
OptionButton1.ForeColor = &HFF&
puis de 2 a 10
OptionButton2.ForeColor = &H400040
OptionButton3.ForeColor = &H400040
OptionButton4.ForeColor = &H400040
....................................;;;;
OptionButton10.ForeColor = &H400040

comment éviter ces répétitions

MERCI d'avance et tres bonne journée a tous
EetF
 

ChTi160

XLDnaute Barbatruc
Re E & F
je me suis permis et je pense que tu ne m'en voudras pas de modifier cette partie du code afin d'éviter le Select de la feuille matériel
celà améliore le confort d'utilisation

Sub FillCombo(Col As Byte)
Dim Cell As Range

Application.ScreenUpdating = False
ComboBox1.Clear
On Error Resume Next
With Sheets('materiel')
For Each Cell In .Range(.Cells(2, Col), .Cells(40, Col))
ComboBox1.AddItem Cell.Value
Next Cell
End With


Application.ScreenUpdating = True
End Sub
en espèrant avoir fait avancer le Schimilimblick
Amicalement
Jean Marie

Message édité par: ChTi160, à: 13/04/2005 09:53
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Jean-Marie, Pascal, E&F, le Forum

Bien vu Jean-Marie... Et je dirais même plus, on peut tout aussi rendre dynamique le Nombre de Lignes dans La Combobox1, qui me paraissait un peu remplie de lignes vides selon le matériel...

Sub FillCombo(Col As Byte)
Dim Cell As Range
Dim Line As Integer

ComboBox1.Clear
With Sheets('materiel')
Line = .Cells(35000, Col).End(xlUp).Row
For Each Cell In .Range(.Cells(2, Col), .Cells(Line, Col))
ComboBox1.AddItem Cell.Value
Next Cell
End With
End Sub

Bonne Journée
@+Thierry

EDITION !!!

Le On Error Resume Next est aussi à éviter, sauf quand on connait l'erreur et qu'on la déclenche volontairement (Style faire un Collection avec sa Key, pour éviter les Doublons...) Mais dans le cas présent c'est totalement injustifié.

Pour L'Application.ScreenUpdating vu qu'on ne Select plus, on peut aussi s'en passer...

Message édité par: _Thierry, à: 13/04/2005 09:58

EDITION !!!
Arf Sacré faute de Grand Maire ! qui m'a choquée moi même !

Message édité par: _Thierry, à: 13/04/2005 14:44
 

ChTi160

XLDnaute Barbatruc
Salut l'Artiste Lol
je vais te dire ,tout ça c'est grâce à toi et à d'autres, le gout des choses bien faiites et toujours dans un soucis de participer et d'aider
eh bien j'y est pensé ,mais mes connaissances ne m'ont pas permis de faire cette Modif ,malgré mes recherche dans les propriétés de la listBox
donc une fois encore tu va m'apprendre quelque chose
Bonne journée
Amicalement
Jean Marie
EDITION!!!
Oupsss J'avais pas vu que le code c'est le Line qui gere la plage
excuse Mdr c'est l'envie d'apprendre re Lol
merci

Message édité par: ChTi160, à: 13/04/2005 10:08
 

G.David

XLDnaute Impliqué
Salut a tous
Désolé d'avoir rippé ces trois derniers jours
mais je relève seulement le courrier
Bon @Thierry le code :unsure:
ComboBox1.Clear
With Sheets('materiel')
Line = .Cells(35000, Col).End(xlUp).Row
For Each Cell In .Range(.Cells(2, Col), .Cells(Line, Col))
ComboBox1.AddItem Cell.Value
Next Cell

est équivalent au
Combobox1.Rowsource ?:eek:
Mais présente peut etre l'immene avantage de marcher sous MacOS10
il faut que je teste j'ai un ou deux petits outils qui plantent sur le Mac de façon magistrale ;)
Cordialement
G.David
 
E

evelynetfrancois

Guest
bonjour G.David
sauf erreur de ma part..................................

Line = .Cells(35000, Col).End(xlUp).Row
For Each Cell In .Range(.Cells(2, Col), .Cells(Line, Col))
rend 'dinamik 'la Rowsource !!
ainsi le nombre de cellules saisies sera automatiquement pris en compte dans le ComboBox

bonne journée
EetF
 

G.David

XLDnaute Impliqué
E&F
le soucis est que j'ai un fichier excel qui tourne sur 2 plateformes Windows (2000 et 98(là pas de probleme) et sur une plateforme macOS10 avec excel2004 ou un truc assimilé et là bien qu'ayant lu et relu l'aide en ligne sur le Mac office et internet (en même temps on n'a peur de rien ) je n'ai rien put faire tourner avec :sick:
combobox.rowsource
:angry:
j'avais en son temps demandé de l'aide sur divers forums et tout ce que j'avais glané est qu'il existait une astuce (j'espère que c'est celle Là je n'est pas encore eu le temps de tester :unsure: )
personnelement je mets toujours mes chaussures ,mais par paire chez nous on aime bien marcher une une basket à un pied et une botte de cavalerie à l'autre alors forcément on boitte un peu . Pour ce qui est des Mac chez nous j'avais déclarer ,la citation exacte : 'He puis merde! :huh:
d'accord ce n'est pas très industriel mais:
'l'homme sage est celui qui connait ses limites'
Inpecteur Harry
Pourf!Pourf!Pourf!Pourf!Pourf!Pourf!Pourf!Pourf!Pourf!Pourf!
pas mal avec un six coups
pour le dynamisme du rowsource j'avais aussi un truc avec range et end qui marchait pas mal
Cordialement
G.David
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour G.David, E&F, le Forum

Sorry je n'avais pas suivi ce fil. Mais donc après la bataille, je confirme ici que la boucle que j'ai écrite n'utilise pas de 'RowSource' mais la méthode 'AddItem' qui est une autre méthode pour incrémenter de données dans une ListBox ou ComboBox (il en existe 3 'RowSource', 'AddItem' et 'List', on peut aussi utiliser 'Column', mais c'est autre chose)

Je confirme aussi que RowSource ne passe pas sous Mac, mais AddItem oui ! (Jean-Marie me l'avait déjà dit).

Bonne Journée
@+Thierry
 

Statistiques des forums

Discussions
312 844
Messages
2 092 759
Membres
105 527
dernier inscrit
GPGA45