> Tous les forums > Forum Bureautique
 Formulaire Excel 2007Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
spring
  Posté le 29/08/2011 @ 16:18 
Aller en bas de la page 
Petite astucienne

Bonjour!

j'ai un petit tableau avec les résultats en part de marché de 5 compagnies.

Ces résultats varient tous les mois. Je voudrais qu'en fonction de la compagnie qui a le meilleur résultat dans le tableau, ce soit son logo qui s'affiche en face du tableau.

C'est possible sans VBA, avec les contrôles ActivX ou les contrôles de formulaire??

Ou alors avec VBA, mais je ne connais pas ben ben ça...

Merci!

spring

Publicité
Magnan
 Posté le 29/08/2011 à 17:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Bonjour Juste pour suivre... Celà m'interesse.. A+
galopin01
 Posté le 29/08/2011 à 19:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

peut-être quelque chose comme ça :

La démo

Mais bien sur YFO ajuster en fonction des images et du classeur cible...

A+

spring
 Posté le 29/08/2011 à 20:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Bonjour Galopin01!

C'est tout à fait ça, sauf que dans ton exemple c'est un peu aléatoire: le même chiffre ne donne pas toujours la même image... ???

Et puis ta macro semble prendre en considération ce qu'on entre dans n'importe quelle cellule de la feuille, pas seulement la valeur contenue en E2...

Spring



Modifié par spring le 29/08/2011 20:24
galopin01
 Posté le 29/08/2011 à 21:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonsoir,

c'est vrai que je n'ai pas peaufiné... La programmation est une pièce d'horlogerie qui demande à être réglée sur mesure. Et là j'ai fait à la tronçonneuse...

C'est juste pour montrer que c'est possible, après YA des tas de variantes.

Soit avec des images" embarquées", c'est ce que j'ai fait. Ensuite tu les montre ou tu les caches plus ou moins adroitement... Là j'ai fait avec méthode bourrin !

On peut également y arriver avec des images du disque dur.

La sélection de la cellule qui varie peut également être plus rigoureuse... Y suffit d'avoir un peu de temps !

J'ai eu le temps de corriger et j'ai remédié à tout ces petits défauts...

Recharger le fichier corrigé sur le même lien SVP

spring
 Posté le 29/08/2011 à 21:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Ok, ça marche bien si on entre le chiffre dans le cellule E2 et qu'on valide. Apparemment c'est la validation du contenu de la cellule qui met à jour l'image affichée.

Comme je me base sur les résultats d'un tableau, dans la cellule E2 ce n'est pas une constante entrée manuellement, mais le résultat d'une formule de type =EQUIV(MAX(Plage_résultats);Plage_résultats;0)

Et là l'image n'est pas mise à jour lorsque le résultat de la formule change...

Y a-til une solution?

Spring

galopin01
 Posté le 29/08/2011 à 22:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bien sur...

Tu dois pouvoir remplacer la macro par :

Private Sub Worksheet_Calculate()
i = Range("E2")
On Error Resume Next
[Feuil1].Shapes("Image " & i).ZOrder msoBringToFront
End Sub

Attention : S'il existe déjà une macro calculate dans cette feuille, tu ne peux pas en rajouter une deuxième !

Dans ce cas il faudrait modifier la macro existante de la manière suivante :

Private Sub Worksheet_Calculate()
' le code de ta macro existante
'et seulement ensuite :

i = Range("E2")
On Error Resume Next
[Feuil1].Shapes("Image " & i).ZOrder msoBringToFront
End Sub

dlxpat
 Posté le 30/08/2011 à 08:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour à vous. Encore un débat passionant et si vous le permettez je m'immisce dans votre discussion. Pourriez vous me dire où vous rangez dans votre fichier, les photos qui doivent apparaitre ? C'est pas trop bête comme question ? Merci à vous !

ferrand
 Posté le 30/08/2011 à 13:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

dlxpat a écrit :

Bonjour à vous. Encore un débat passionant et si vous le permettez je m'immisce dans votre discussion. Pourriez vous me dire où vous rangez dans votre fichier, les photos qui doivent apparaitre ? C'est pas trop bête comme question ? Merci à vous !


Là où tu les vois, regarde bien

Publicité
Magnan
 Posté le 30/08/2011 à 14:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Je m'étais posé la question, mais tout bêtement elles sont ... empilées !!!! Si on les déplace, rien ne va plus ;=( A+

dlxpat
 Posté le 30/08/2011 à 16:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ma question était effectivement très bête !!! mais vous ne serez que quelques milliers à le savoir ! Merci à vous

galopin01
 Posté le 30/08/2011 à 18:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

il y a différentes manières de voir les choses. Ici j'ai traité le problème par empilement, mais on pourrait aussi le traiter différemment :

En stokant les photos à la colonne Z par exemple et en déplaçant la photo souhaitée au bon endroit... ça serait pas plus difficile.

YAKA demander si nécessaire...

spring
 Posté le 30/08/2011 à 22:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Ben oui, Galopin01, envoye, shoot!

c'est une très bonne idée aussi, est-ce qu'on peut aller placer les photos sur une autre feuille? (tant qu'à y être, hein...!)

Spring

galopin01
 Posté le 31/08/2011 à 04:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

On peut imaginer des tas de choses mais... sur une autre feuille n'est pas une bonne idée !

Dans cette macro j'ai imaginé qu'on pouvait déplacer les images et les rendre invisible ou visible à volonté.

Une des 2 conditions est bien sur inutile car si on déplace les images à cacher en "A15000" par exemple : elles ne seront plus visible de toute façon. Mébon...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, k%, Z$, ZZ$, tablo
Set isect = Application.Intersect(Range("E2"), Target)
If Not isect Is Nothing Then
'On définit la plage de masquage un peu
'en dehors de la zone habituellement utilisée
Z = "A1"
'On définit la plage d'affichage
ZZ = "K13"
'On définit le nom de chaque image
tablo = Split("Image 1/Image 2/Image 3/Image 4", "/")
On Error Resume Next
i = Target
For k = 0 To UBound(tablo)
'Expédie les images vers la plage Z
[Feuil1].DrawingObjects(tablo(k)).Left = Range(Z).Left
[Feuil1].DrawingObjects(tablo(k)).Top = Range(Z).Top
[Feuil1].DrawingObjects(tablo(k)).Visible = False
Next
'ramène l'image i vers la plage ZZ
[Feuil1].DrawingObjects(tablo(i - 1)).Left = Range(ZZ).Left
[Feuil1].DrawingObjects(tablo(i - 1)).Top = Range(ZZ).Top
[Feuil1].DrawingObjects(tablo(i - 1)).Visible = True
End If
End Sub

spring
 Posté le 31/08/2011 à 15:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Allo Galopin01,

c'est super, mais si je change les chiffres du tableau, le résultat de ma formule se met à jour, mais pas l'image...

Si je change manuellement le contenu de E2, en validant l'image se met à jour. Pas si E2 contient une formule.

Arghhh???

Spring

galopin01
 Posté le 31/08/2011 à 15:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Ben... Retour la case départ tu utilises Calculate à la place de Change :

ça devrait donner quelque chose comme ça (non testé) :

Private Sub Worksheet_Calculate()
Dim i%, k%, Z$, ZZ$, tablo
'On définit la plage de masquage un peu
'en dehors de la zone habituellement utilisée
Z = "A1"
'On définit la plage d'affichage
ZZ = "K13"
'On définit le nom de chaque image
tablo = Split("Image 1/Image 2/Image 3/Image 4", "/")
On Error Resume Next
i = [E2]
For k = 0 To UBound(tablo)
'Expédie les images vers la plage Z
[Feuil1].DrawingObjects(tablo(k)).Left = Range(Z).Left
[Feuil1].DrawingObjects(tablo(k)).Top = Range(Z).Top
[Feuil1].DrawingObjects(tablo(k)).Visible = False
Next
'ramène l'image i vers la plage ZZ
[Feuil1].DrawingObjects(tablo(i - 1)).Left = Range(ZZ).Left
[Feuil1].DrawingObjects(tablo(i - 1)).Top = Range(ZZ).Top
[Feuil1].DrawingObjects(tablo(i - 1)).Visible = True
End Sub

...Avec les même réserves que précédemment pour l'utilisation de Calculate



Modifié par galopin01 le 31/08/2011 15:28
spring
 Posté le 31/08/2011 à 16:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Ya pu rien qui marche...

Je ne suis pas capable d'adapter ta macro, je ne connais rien au VBA.

Du coup j'ai enregistré une macro bidon, puis j'ai remplacé le code par celui que tu m'a fourni, en changeant le nom de la macro dans la commande sub de départ, et j'ai associé cette macro à chaque image.

Donc maintenant chaque fois que je change les données du tableau, je clique sur l'image affichée pour qu'elle se mette à jour.

C'est une solution qui me va bien, alors un gros gros merci Galopin01!!

Spring

Publicité
galopin01
 Posté le 31/08/2011 à 17:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Dans la dernière macro, E2 "est ma plage de résultat qui contient une formule dans mon exemple" :

Si tu me dis rien je peux pas deviner !

Si "Ta plage de résultat qui contient une formule et qui doit faire changer d'image" est K18 par exemple

Tu dois juste modifier la macro en conséquence :

Private Sub Worksheet_Calculate()
Dim i%, k%, Z$, ZZ$, tablo
'On définit la plage de masquage un peu
'en dehors de la zone habituellement utilisée
Z = "A1"
'On définit la plage d'affichage
ZZ = "K13"
'On définit le nom de chaque image
tablo = Split("Image 1/Image 2/Image 3/Image 4", "/")
On Error Resume Next
i = [K18]
'la suite sans changement

La démo modifiée



Modifié par galopin01 le 31/08/2011 17:30
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
-5 €5 € de réduction immédiate dès 15 € d'achats sur les produits vendus et expédiés par Amazon
Valable jusqu'au 28 Septembre

Amazon offre actuellement 5 € de réduction immédiate dès 15 € d'achats sur les produits vendus et expédiés par Amazon. Cette offre est limitée et n'est pas valable pour tous les clients. Pour savoir si vous êtes éligible, rendez-vous sur cette page.


> Voir l'offre
177,99 €SSD externe portable USB 3.1 Crucial X6 2 To à 177,99 €
Valable jusqu'au 24 Septembre

Amazon fait une promotion sur le SSD externe Crucial CT2000X6SSD9 2 To qui passe à 177,99 € livré gratuitement au lieu de 240 €. Ce SSD externe portable offre des vitesses jusqu'à 540 Mo/s. Il se branche sur un port USB C ou A (adapteur fourni). Il est compatible PC, Mac, PS4, Xbox One, Android.


> Voir l'offre
899,99 €TV 55 pouces LG 55BX3 (4K, OLED) à 899,99 €
Valable jusqu'au 26 Septembre

Cdiscount fait une promotion sur l'excellente TV 55 pouces (139 cm) OLED LG 55BX3 à 899,99 € au lieu de 1150 €. Offrant un noir absolu et des couleurs riches, ce modèle 4K vous invite dans un monde exceptionnel pour un divertissement inoubliable. Cette TV possède le Wifi, le bluetooth, 4 ports HDMI, 2 ports USB, fait office de SmartTV et supporte le Dobly Atmos.


> Voir l'offre

Sujets relatifs
Formulaire dans Excel 2007
Excel 2007 "formulaire"
comment créer un formulaire Excel 2007
Formulaire dans Excel 2007
Barre formulaire excel 2007
menu contextuel excel 2007 ne fonctionne plus
Excel 2007 Copier/Coller d’une feuille à l’autre Dans un même classeur.
EXCEL 2007-stdole32.tlb-WIN7 SP1x64
Formule excel 2007
Excel 2007, insertion ligne vierge en automatique
Plus de sujets relatifs à Formulaire Excel 2007
 > Tous les forums > Forum Bureautique