Proprietés de la Liste Combobox

Voila, j'ai un problème à régler avec ma Combobox et je ne trouve pas de solution :

Cette sub marche bien lorsque toute les cellule de la colonne C ont le même format,

mais dès qu'on change le format d'une cellule, on a un message d'erreur :

"UTILISATION INCORRECTE DE NULL" ?

Si quelqu'un peut m'aider svp ?

Option Explicit

Dim plage, couleur, couleurTexte

Private Sub UserForm_initialize()

Set plage = Sheets("Feuil1").Range("C2:C10")

couleur = plage.Interior.Color

couleurTexte = plage.Font.Color

ComboBox1.BackColor = couleur

ComboBox1.ForeColor = couleurTexte

ComboBox1.List = plage.Value

End Sub

fichier en PJ

60classeur1-v1-2.xlsm (19.36 Ko)

Le problème est assez simple, mais pour l'expliquer je vais commencer par un exemple.

Imaginons tu es en train de créer un userform, et dedans tu mets deux textbox.

Si tu sélectionnes tes deux textbox ensemble, les propriétés affichées sont les propriétés COMMUNES aux deux textbox. Les propriétés qui sont différentes entre les combobox sont "vides", Null.

Maintenant faisons le lien avec ce que tu fais, tu prend un Range, et tu demandes:

La couleur de fond de plusieurs cellules

La couleur du texte de plusieurs cellules

etc...

Bah si une cellule à un fond différent, le fond renvoyé est Null, respectivement pour les autres propriétés recherchées.

Une solution, prendre le fond et la couleur de la premiere cellule

    couleur = plage.Cells(1, 1).Interior.Color
    couleurTexte = plage.Cells(1, 1).Font.Color

Merci pour ta réponse d3d9x,

Mais le problème reste le même la Combobox aura uniquement les propriétés de la cellule (1,1)

et sur mon tableau, plusieurs cellules ont des formats différents...

Bonjour,

Sans reprendre l'explication déjà fournie par d3d9x, l'erreur ne se produit que si tu as des couleurs différentes de police.

Pour la couleur de fond, apparemment la valeur renvoyée n'est pas Null et tu obtiens du noir en couleur de fond dans ton ComboBox.

Pour éviter cette erreur, soit tu appliques la solution déjà proposée, soit tu modifies la ligne coorespondante ainsi :

couleurTexte = IIf(IsNull(plage.Font.Color), 0, plage.Font.Color)

qui renverra du noir comme couleur de police si la valeur renvoyée devait être Null.

Si par contre, tu avais l'intention d'obtenir dans ton ComboBox des mises en forme différentes pour chaque élément de la liste, inutile de persister dans cette idée...

Cordialement.

Si je comprend bien, tu aimerais que chaque élément dans la combobox ai les mêmes propriétés que dans ton tableau? SI c'est ce que tu souhaites faire, ce n'est pas possible avec une combobox. La combobox n'aura pas des propriétés différentes pour chaque ligne (en tout cas pas à ma connaissance).

Quel est le rôle de cet affichage? visuellement repérer ce qui a un fond rouge, un texte bleu, etc.?

Merci Mferrand pour ta réponse rapide !

en effet c'est ce que je voulais "Si par contre, tu avais l'intention d'obtenir dans ton ComboBox des mises en forme différentes pour chaque élément de la liste, inutile de persister dans cette idée..."

Donc j'abandonne l'idée d'avoir dans mon Combobox toutes les mise en forme des cellules sources..

Merci quand même

Rechercher des sujets similaires à "proprietes liste combobox"