Forme invisible

Bonjour,

Dans le fichier joint j'ai un userform avec deux listbox.
j'aimerais pouvoir mettre entre les deux un rond transparent qui devient jaune (sans rien d'autre dedans) quand la cellule A1 est à un.

je voulais savoir si cela est possible et comment faire.
merci pour votre aide,

Cordialement,

Daniel

3test.xlsm (11.86 Ko)

Bonjour,

Tu crée deux images BitMap avec Paint.net ou autre avec un rond, soit jaune soit vide , tu colles 3 contrôles images sur le formulaire un visible et les deux autres cachés à l'extérieur du formulaire visible .

Ensuite tu attribus l'image qu'il faut If Range("A1").Value = 1 Then Image1.Picture = Image2.Picture : Else Image1.Picture = Image3.Picture: End If.

Une autre solution consisterait à récupérer une image sur une feuille...

3test.xlsm (15.71 Ko)

Bonjour,

Merci pour le fichier mais j'ai juste un pb.
j'ai ajouté un bouton pour afficher le user mais quand je change la valeur en A1 rien ne se passe je suis obligé de fermer et ré ouvrir le user.

une autre chose d’après mais calcul il va y avoir 48 pastilles comme ça toutes indépendantes.
je vais avoir un tableau en A avec les valeurs 0 ou 1 des 48 pastilles.

comment puis-je gérer cela car je suppose qu'il faut deux images par pastille?
et aussi pour changer la couleur de la pastille il faut le faire dans l'image?

merci pour votre aide.

cordialement

1test-2.xlsm (18.38 Ko)

Re,

j'ai ajouté un bouton pour afficher le user mais quand je change la valeur en A1 rien ne se passe je suis obligé de fermer et ré ouvrir le user.

C'est normal, sans autre demande c'est à l'ouverture que le formulaire qui est Modal, affiche ou pas l'image selon la valeur de A1.

Pour faire un changement il faut le passer en non Modal, est créer un petite fonction de mise à jour que l'on pourrait mettre dans l'évènement Worksheet_Change de la feuille.

une autre chose d’après mais calcul il va y avoir 48 pastilles comme ça toutes indépendantes.

je vais avoir un tableau en A avec les valeurs 0 ou 1 des 48 pastilles.

Qu'il y ai 48 pastilles n'est pas un problème en soit, il y aura toujours 2 contrôles image en plus pour stocker les deux images. si deux image sont nécessaires.

Une autre solution consisterait à utiliser le contrôle ImageList, mais celui-ci ne fonctionne que sur une machine avec Excel en 32Bit et non pas 64Bit.

et aussi pour changer la couleur de la pastille il faut le faire dans l'image?

Oui, avec cette méthode. l'image peut aussi être stockée sur le disque dur et être chargée dans le contrôle image avec la méthode Loadpicture

Merci bien,

Je vais me pencher sur le pb.

Bonjour,

Alors j'ai créé mon user avec une image qui sera visible (1), une image vide (3) et une image jaune (2).

J'ai essayé d'utiliser le code suivant mais j'arrive à rien.

If Range("A1").Value = 1 Then Image1.Picture = Image2.Picture
Else Image1.Picture = Image3.Picture
End If

alors j'ai du surement oublier quelque chose mais je ne trouve pas.

pour rappel si A1=0 image vide et si A1=1 image jaune (ce qui permet de détecter un événement de visu).

Merci pour votre aide.

Cordialement,

Daniel

0test-2.xlsm (17.62 Ko)

Bonjour,

Range("A1").Value = 1

Fait référence à la feuille active donc bien vérifier cela. Sinon mettre une référence explicite, exemple pour la feuille "Feuil1" :
ThisWorkbook.Worksheets.Item("Feuil1").Range("A1").Value = 1

Construire le bloc If correctement pour la comprehension

If Range("A1").Value = 1 Then
    Image1.Picture = Image2.Picture
Else
    Image1.Picture = Image3.Picture
End If

Sinon avec un bloc IIf :

Image1.Picture = IIf(ThisWorkbook.Worksheets.Item("Feuil1").Range("A1").Value = 1, Image2.Picture, Image3.Picture)

Bonjour,

Merci pour toutes les infos je vais encore essayer (mais quand on est novice on est novice).

bonne journée,

cordialement

Bonjour,

et bien j'ai encore passé deux heures hier pour n'arriver à rien donc je laisse tomber et je vais voir pour faire autrement.

encore merci à Jean Paul pour son aide et je vous souhaite à tous une bonne continuation.

Daniel

Bonjour,

Comme dis dans un précédant post il faut que le formulaire soit en mode non modal.
Pour se faire dans l'environnement VBE faire un clic sur le fond du formulaire, et pas sur un contrôle.
Dans la fenêtre des propriétés (F4) passer le formulaire en mode non modal c'est à dire False. (cf. photo ci-dessous).

000500

Maintenant il faut intercepter les évènements de la feuille ici Feuil1, Toujours dans l'environnement VBE regarder les lignes de codes relatifs à la feuille 1 (cf.photo ci-dessous)

000501

Regarder aussi les lignes de code dans le formulaire, j'ai mis la gestion avec deux images en commentaires.

Bien entendu c'est une version minimaliste.

1test-image.xlsm (23.09 Ko)

Bonjour,

Un grand merci pour le fichier.

Cordialement,

Daniel

Rechercher des sujets similaires à "forme invisible"