VBA Créer un objet (photo)

Bonsoir à tous,

Par macro, est-il possible et comment créer une image avec "l'outil appareil Photo" ? et

de coller cette image (ou objet) sur une autre feuille, nommer cet objet "bibi"

et lui attribuer la formule "=équipes" (équipes étant une plage variable).

J'ai essayé d'enregistrer l'opération, mais rien ne s'enregistre dans la macro.

Capturer photo

Je demande çà car quand je ferme le fichier et le réouvre, j'ai l'impression que l'image a

changer de statut, je n'ai plus accès à la barre de formule en sélectionnant l'image ! et c'à

me provoque une erreur au code + bas.

A noter que si je ne ferme pas le fichier, l'image suit bien la plage (équipe variable).

à noter aussi qu'avec la formule liée à l'image, cela ralentit considérablement les macros,

J'ai trouvé cette "combine" qui supprime la formule et n'affecte plus les macros,

With Sheets("Concours").Shapes("bibi")
    .Visible = True
    .Select
    Selection.Formula = "=équipes"    '****(sans point devant selection)
    Selection.Formula = ""
End With

Mais tout çà me parait du "bricolage",

Peut-être déclarer l'objet, de sorte à le retrouver actif à l'ouverture du fichier.

une idée d'amélioration ?

Amicalement

Claude.

bonjour,

Pour simplifier...

Tu ne peux pas utiliser un nom défini pour faire référence à un controle Shape.

Tu peux passer par son index :

Sub test()
Set sh = Worksheets(1)
sh.Shapes(1).Select
Selection.Formula = "=équipes"
End Sub

A+

Merci galopin01,

Je ne pige pas trop comment faire, je reviendrais avec un fichier exemple + concret.

Bonne journée

Claude.

re forum,

En gros, une macro peut-elle prendre une photo ?

Amicalement

Claude.

bonjour,

Oui ! Personnellement je crée une img de 1 pixel avec un éditeur d'image (mais n'importe quelle image peut faire l'affaire)...

Sub Test()
Range("B2").Select '(pour positionner l'image...)
chemin = "C:\Documents and Settings\Utilisateur\Mes documents\blabla...\"
    ActiveSheet.Pictures.Insert(chemin & "img.jpg").Select
    Selection.Formula = "=équipes"
End Sub

Par commodité on peut placer cette image à la racine du disque dur car il est important de donner le nom et chemin complet du fichier à coller. (sinon le système devient rapidement instable car il semble chercher les images dans le dossier "images par défaut")

A+

Bonjour galopin01 et à tous,

Et si l'image dont tu parle (vierge) était stockée dans le fichier, ce serait jouable ?

je n'aurais plus besoin du chemin, non ?

çà deviendrai une copie, à renommer "bibi" et lui mettre la formule "=équipes"

Je dois la nommer, car après j'ai un bouton pour .Visible= True ou False

Comment explique-tu que le fait d'avoir une formule affectée à l'image (ici "=équipes") me

ralentisse les macros ?

merci pour tous tes renseignements

Amicalement

Claude.

Eh, Bé... Non !

Evidemment que j'ai simplifié...

Tu peux procéder comme tu veux : Tant que tu crées l'objet, tu es dans ta sélection tu peux y coller ta formule. Mais dès lors que tu reprends ton objet tu utilises un shape et :

galopin01 a écrit :

Tu ne peux pas utiliser un nom défini pour faire référence à un controle Shape.

...mais tu peux utiliser son nom interne.

ActiveSheet.Shapes("bibi").Select ...ne fonctionne pas (l'élément portant ce nom est introuvable), mais :

ActiveSheet.Shapes("Image1").Select fonctionne si "Image1" est le nom interne de l'objet que tu as nommé "bibi"

Il faut bien faire la différence entre le nom interne de l'objet qui ne change pas même si tu lui affectes un autre nom "de scène" par Insertion/Nom/Définir

Tu ne peux faire référence à un objet shape que par son nom interne ou par son index en aucun cas par un nom défini.

A+

re,

Excuse-moi d'insister, je n'ai pas créer le nom "bibi" par le gestionnaire de Nom/Définir,

mais seulement en changeant "image 6320" par "bibi" dans la zone de nom de l'image

sélectionnée.

c'est interdit çà ?

il faudrait donc toujours appeler:

ActiveSheet.Shapes("Image 6320").Select

Selection.Formula = "=équipes"

et comment çà se passe d'un ordi à un autre ? (le nom interne)

En tout cas merci de ta patience

Claude.

Bonjour,

Ce n'est pas interdit, mais parfaitement inutile.

il faudrait nuancer selon l'origine du contrôle, (Boite d'outils Formulaire ou boite d'outils Contrôles) mais dans tous les cas le résultat est à peu près le même : D'ou qu'il vienne ton contrôle reste un shape et son nom reste lié à la collection de shape de la feuille hôte.

En tant que tel, je ne vois pas pourquoi son nom changerait d'un ordi à l'autre... Mais je n'ai pas essayé !

A+

Bonjour galopin01 et à tous,

Ok, merci pour tous ces éclairages,

tu verras le résultat sur mon projet "Concours pétanque"

J'ai contourné le problème.

Amicalement

Claude.

Rechercher des sujets similaires à "vba creer objet photo"