Insérer Image venant d'une autre Cellule

Bonjour à tous,

Nouveau problème que je rencontre avec VBA mais là, je ne comprends pas du tout et ça m'a l'air pourtant simple ....

Mon Objectif :

J'ai déjà une macro qui fonctionne et qui appel une liste de prix quand on clique dessus : cela copie et colle des références et des prix.

Je souhaiterais pouvoir afficher une image quand on clique sur cette macro.

L'image en question est dans une autre feuille de ce même fichier excel

Voici le code que j'utilise

Sub CopierChat()

ActiveSheet.Shapes("Chat").Copy 'adapter le nom de l'image

Sheets("Feuil1").Select 'adapter

Range("E2:E8").Select 'adapter

ActiveSheet.Paste

End Sub

Le code bloc à la ligne Sheets"Feuill1" erreur d'éxécution '5"

Pourriez vous m'aider s'il vous plait?

Merciiiiiii

Bonjour BobMoran,

Plus de précisions sont nécessaires. Sur quelle feuille (nom) est tu quand tu fais un clic pour ta macro?.

Sans doute sur un bouton créé pour cela afin de la lancer.

Ensuite, si tu copie le chat à chaque clic sur la macro. Tu vas te retrouver avec plein de chats!

captchats

Donc il vaudrait mieux rendre invisible l'image du chat sur la feuille que tu souhaites.

Puis la rendre visible quand tu lances ta macro de prix.

ActiveSheet.Shapes("Chat").Visible =True 'Pour rendre visible
ActiveSheet.Shapes("Chat").Visible =False ' Pour cacher l'image sur la feuille.

Bonne continuation.

Bonsoir,

votre feuille contient-elle un TCD ?

Mais surtout avez-vous le fichier ?

@ bientôt

LouReeD

Bonsoir XCellus

Vive les chats :p

J'ai pris cet exemple mais un autre sera plus parlant

Sur ma Feuille 1 : j'ai plusieurs boutons qui activent des macros.

Par ex : Ford / Peugeot / Renault

En cliquant sur un de ces boutons, cela copie-colle des références et prix correspondant sur ma feuille 3

Par ex : Mondeo = 25000€

Ka=12000€

Sur ma Feuille 2, j'ai un devis type qui va chercher ses prix et ses références sur la feuille 3.

Ainsi, en cliquant sur Ford / Peugeot ou Renault, je modifie les feuilles sur laquelle mon devis type va chercher ses références.

Ces macros là sont écrites sur mes Feuilles Tarif (Feuille 4 et +).

Tout ceci fonctionne parfaitement (ouf ).

But Final : en cliquant sur Ford / Peugeot / Renault, je souhaite faire apparaitre le logo en C2.D4

Et en cliquant sur un bouton RAZ, aussi en feuille 1, tout supprimer ce que j'ai sur ma Feuille2.

Donc, pour répondre enfin à ta question, j'ai généré ma macro "image" sur ma feuille Image. Mon problème est que je n'arrive pas à l'afficher sur ma feuille 2.

Autre solution que j'ai testé : mettre mon image sur la feuille 2, très à droite du devis, pour qu'elle ne se voit pas. J'arrive ainsi à la faire apparaitre sur la bonne feuille mais je n'arrive pas à appliquer cette Macro sur mon bouton Ford de ma feuille 1 mais uniquement à un bouton Mise en Forme sur ma feuile 2 (un peu lourd donc).

Est ce plus clair ?

Est ce faisable ?

Merci

A nouveau,

Le plus rapide est que l'image de chaque Logo soit déjà présente sur ta feuille 2 dans à l'emplacement voulu (C2:D4).

Si tu as peu d'images Logo, tu rends invisible ces images dans cette feuille 2. Puis ne rends visible que celle souhaitée.

Exemple avec les 3 logos cités. Tu les nommes Logo1, Logo2, Logo3. Respectivement donc Ford, Peugeot, Renault. Tu peux aussi les nommer selon les noms des constructeurs.

Au début de chaque bouton (constructeur) macro d'appel des références. Tu places ce code déjà présenté dans mon 1ier message. Ainsi que le nom du Logo (Logo1... ou Ford...) en cellule C3. Il ne se verra pas car caché par l'image. Mais aussi tu peux cacher ce nom par une police de couleur blanche si ton fond C2:C4 est blanc.

Exemple: Pour le bouton Ford.

Sub MacroFord()
Sheets("Feuille2").Shapes("Logo1").Visible =True  'Pour rendre visible le logo de Ford en C2:D4 ou shapes("Ford").visible...
suite de ton code....
End Sub

Ensuite dans ta macro RAZ tu rends invisible le logo affiché. En se référant à la cellule C3

Sub RAZ()
Image=Sheets("Feuille2").Range("C3")
Sheets("Feuille2").Shapes(Image).Visible =False  'Pour rendre invisible le logo de Ford en C2:D4
suite de ton code....
End Sub

Pour les autres macros des constructeurs tu utilises le même principe. Ainsi tu auras toujours le bon Logo affiché.

Bons tests, bonne continuation.

Merci pour ton aide

Dans les 2 cas, il me dit erreur d'exectuion 9 : l'indice n'appartient pas à la selection

J'ai pourtant bien fait insérer image dans la cellule correspondante et je l'ai nommé comme tu me l'as dit ..

Suite,

De quel indice?

L'indice de la feuille ou de l'image.

Comment se nomme exactement ta feuille n°2. Et comment as tu nommer les images?

Tu peux changer le noms des images en cliquant dessus pour les sélectionner. Puis ensuite par le menu Outils Images ou Dessins et le sous-menu Volet Sélection faire apparaître l'ensemble des formes et des images.

Malheureusement je ne sais pas quel indice.

Concernant mon document

J'ai appelé la Feuille1 : Offre mais j'y fais référence en tant que "Feuil1" en macro

Pour mon image, elle s'appelle image 11

Pour ne pas me tromper de cellule, je me suis mis dessus et j'ai fait insérer image

Bonjour BobMoran,

Si tu nommes une feuille (Ex: Feuil1 en Offre) alors fais y référence en son nom donné. Donc Offre, soit Sheets("Offre").

Feuil1...etc... est le nom par défaut qu'Excel attribue à une page.

Maintenant c'est pas le nom de la Feuil1 (Offre) qui comporte l'image. Puisqu'elle na que des des boutons.

C'est le nom de ta Feuil2. Exemple si elle s'appelle Devis, alors tu fais pour faire apparaître l'image.

Sheets("Devis").Shapes("Image 11").Visible = True  'Et False pour le contraire

Bien qu'il soit mieux de nommer l'image. Au lieu de Image 11, appelle là Ford ou autre. Voir le principe dans mon dernier message.

Bons tests, bonne continuation.

Bonjour,

quand BobMoran dit :

J'ai appelé la Feuille1 : Offre mais j'y fais référence en tant que "Feuil1" en macro

Je pense qu'il fait référence au CodeName de la feuille sous VBA :

sans titre

Sous Excel l'onglet s'appelle "Offre" mais sous VBA cette feuille à un autre nom qui est Feuil1

donc :

Sheets("Offre").Cells(1,1) = Feuil1.Cells(1,1)

L'avantage c'est que l'utilisateur peut changer le nom de l'onglet, cela n'aura pas d'influence sur le fonctionnement du code VBA.

@ bientôt

LouReeD

Suite,

@LouReeD,

L'avantage c'est que l'utilisateur peut changer le nom de l'onglet, cela n'aura pas d'influence sur le fonctionnement du code VBA

Il ne faut pas croire que cela soit un avantage. Lors de suppression de feuilles puis ensuite d'ajout de feuilles. Le programme va pointer sur une feuille qui ne correspond pas à la feuille initialement prévue avec cette méthode.

Donc il vaut mieux cibler sur le nom apporté à une feuille. Cela apporte plus de sûreté., vu de plus que l'on ne peut renommer une feuille avec une feuille homonyme.

Il ne faut pas croire que cela soit un avantage. Lors de suppression de feuilles puis ensuite d'ajout de feuilles. Le programme va pointer sur une feuille qui ne correspond pas à la feuille initialement prévue avec cette méthode.

Ici vous touchez à la structure du classeur, et je pense que peu de programmes sont capables de gérer ce genre de problème. Par contre la modification du nom d'un onglet est aisée par l'utilisateur, et grâce au CodeName, le code VBA fonctionne encore.

Tout comme le fait de faire référence à l'index d'une feuille : si l'utilisateur déplace la feuille pour une commodité d'utilisation propre à lui, alors le code VBA ne marche plus, vu que l'index est écrit "en dur" dans le code... Tout comme le nom de l'onglet...

Le CodeName est quant à lui moins accessible de l'utilisateur.

@ bientôt

LouReeD

Merci à vous pour votre aide.

J'ai en effet renommé mes pages sous comme il fallait et utilise une image JPG et non PNG.

Maintenant ça marche nikel.

Merci beaucoup.

Bonne journée à vous

Rechercher des sujets similaires à "inserer image venant"