IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBa-E] question(s) sur l'objet OLE "image Bitmap"!


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut [VBa-E] question(s) sur l'objet OLE "image Bitmap"!
    Bonjours les gens!

    Ma question porte sur l'Objet OLE "image Bitmap"!

    Est-il possible d'initialiser cet objet ? c'est à dire, lui mettre une image Bmp par defaut ?

    merci d'avance pour votre aide!!

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    De mémoire :

    L'objet OLE image bmp va garder en mémoire son image à la fermeture du classeur et la retrouver à la prochaine ouverture

    Quand tu es sur l'objet ouvert : regarde bien la boite d'outils : tu y trouveras un onglet edition

    Si tu ouvres une image existante (depuis un outil de visualisation d'images externe, que tu copies (mets en mémoire) tout ou partie de cette image et qu'en revenant dans Excel, tu fais Edition===>>Coller, le tour est joué, pardi...

    (Je ne te réponds là, une fois de plus, que de mémoire , en "aveugle", mais ce devrait être celà...)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    j'ai du mal à te suivre (ne m'en veux pas! )

    Bon quand j'insere l'objet "image Bitmap" il est vierge! j'aimerai quand l'utilisateur ouvre la feuille de dialogue (dialogue microsoft excel 5.0) l'objet doit pouvoir etre préalablement charger selon les choix que l'utilisateur aura fait en amont!
    Exemple: il sélection sur une Userform dans une Combobox le choix du fond de l'image appelé 'truf' , ensuite il valide, la feuille de dialogue microsoft ... s'ouvre avec l'objet 'image Bitmap' non vierge mais avec le font choisi c'est à dire le font 'truf'!! (vous avez compris tous ce charabia? )
    Donc dans cette situation es possible de le faire?

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Mais (si ma mémoire est bonne)....
    Ta "boite de choix de fichier" est déjà toute faite... (onglet Fichier de l'objet OLE Image Bitmap ...)
    Si ma mémoire ne me fait pas défaut, donc, où est le problème ?

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    re tous le monde

    j'aimerai savoir comment peut-on initiliser un objet ole image bitmap avec les image en format bmp?
    Comment peut on enregistrer l'image de ce meme objet en forma 'bmp' ?

    Merci beaucoup

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    1) En donnant par exemple à ton objet OLE le nom du chemin complet de ton fichier image...
    2) en utilisant Fichier ==> Sauvegarder de ton objet OLE, entre autres choses également possibles !

    Mais je suis étonné : y a-t-il quelqu'un connaissant le traitement des images sous VBA (j'ai cru comprendre que oui, quand même). Ils ont là l'occasion de dire "présent"...

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Etes-vous certains de parler de la même chose ?
    Je ne le crois pas...

    revenons donc au point principal :

    gootsu a écrit :
    Ma question porte sur l'Objet OLE "image Bitmap"!
    Cet objet n'a rien à voir avec un contrôle image ou une image classique insérée sur la feuille...

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    Citation Envoyé par jmfmarques
    Etes-vous certains de parler de la même chose ?
    Des messages ont dû etre effacé entre temps, parce que je comprend pas ta question!!
    pour ton point n°1, je pense que c'est bon!
    Mais le point n°2, je ne voi pas "Fichier ==> Sauvegarder de ton objet OLE"!

    Quand je clic sur mon objet OLE il m'ouvre "paint", en suite en fermant "paint", de retour dans Excel, les modifications réalisées apparaissent sur le dessin, et c'est en cliquant sur le bouton "enregistrer" de ma BdD que je veux qu'il enregistre le nouveau dessin! Et je ne voix pas comment faire!

    Merci JmFmarques

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ton objet OLE devrait normalement être assorti des onglets de Paint, parmi lesquels les onglets habituels Fichier, ouvrir, sauvegarder, etc...
    Si tel n'est pas le cas, choisis un objet OLE plus complet (tu en as d'autres) pointant également vers Paint.
    Si tu t'acharnes un peu, tu y parviendras, gootsu.
    Je te confesse que je n'ai jamais autant regretté de ne pas être possesseur de VBA. J'aurais vraiment aimé faire ce bout de chemin avec toi, car il m'intéresse gandement.

    Je vais essayer en aveugle encore une fois :

    En cliquant sur ton image, tu devrais avoir 2 options : ouvrir et modifier
    L'option modifier ne te conduit pas à la présence de l'onglet fichier mais l'option ouvrir y conduit

    Une autre piste : créer un userform dédié, userform avec une propriété Picture.
    Essaye ensuite d'utiliser l'onglet Edition ===>> sélectionner tout ====>>> copier. L'image de ton objet OLE sera ainsi mise dans le presse papier.
    Que faire ensuite ? Dire par exemple que la propriété Picture de ton autre userform est égale à ce qui se trouve dans ton presse-papier, ce qui devrait ressembler (à vérifier sous VBA) à UserFormmachin.picture = Clipboard.Getdata

    Si maintenant tu veux également sauvegarder sur ton document l'image, tu peux également la mettre sur une autre feuille d'excel, comme simple image (toujours en utilisant le presse-papier). Elle sera là lors de la prochaine ouverture et tu pourras faire l'inverse : la mettre, elle, dans le presse-papier et coller le contenu du presse-papier dans ton objet OLE.

    Je suis sur qu'il existe plus simple et plus direct sous VBA, mais une autre fois, ne peut agir (sans VBA) qu'en infirme...
    Si tu ne reçois pas d'azutre aide des pros de VBA, tente alors de trouver le chemin vers lequel je te guide comme je peux, en aveugle hélàs...

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ami gootsu,

    Une autre idée :

    Quand tu crées ton objet OLE, tu devrais normalement pouvoir choisir d'ouvrir un fichier image de ton choix, puis de lier ton objet OLE à ce fichier.

    Si tu as (et je pense que oui s'agissant d'un objet OLE) cette option là, utilise-la donc. Les modifications apportées seront enregistrées dans le ficher et retrouvées depuis ce ficheir à l'utilsation suivante.

    Essaye et mets-y tout ton coeur.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub RemplacerLimage()
    Dim NomDeLimage 
    NomDeLimage = D:\clipart\Animaux\Goupil.gif
        For Each Limage In ActiveDocument.Shapes
            Limage.ShapeRange.Delete 'On efface l'ancienne image
        Next
        Selection.InlineShapes.AddOLEObject ClassType:="MSPhotoEd.3", FileName:= _
            NomDeLimage, LinkToFile:=False
    End Sub
    Maintenant, pour sélectionner l'image dans un répertoire... Tu dis si tu as besoin

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    Merci mais ça fonctionne pas!

    parce que ma version d'excel ne reconnait pas :
    je tiens à rappeler que je suis sur une "boite de dialogue microsoft excel 5.0" et que je souhaiterais, dans un object OLE ("paint.picture") ou autrement dit une "image bitmap", afficher une image de mon choix et l'enregistrer aprés modification!

    Enfin bon !

    Aidé Moi

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    Citation Envoyé par jmfmarques
    Ami gootsu,

    Une autre idée :

    Quand tu crées ton objet OLE, tu devrais normalement pouvoir choisir d'ouvrir un fichier image de ton choix, puis de lier ton objet OLE à ce fichier.....
    Justement mon code ne fonctionne pas!

    pour vous éclairer voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                DialogSheets("Contrôle").Activate 'Ma BdD Microsoft Excel 5.0
    'j'ajoute l'objet OLE initialisé avec le dessin désiré!
                ActiveSheet.OLEObjects.Add(ClassType:="Paint.picture", _
                             Filename:="C:\Documents and Settings\gootsu\Mes documents\Mes images\test.bmp", _
                             Link:=False, DisplayAsIcon:=False).Select 
                Selection.Name = MonImage
    ça ne marche pas!

    erreur d'exécution '1004':
    impossible de lire la propriété Add de la classe OLEObjects
    voila ou j'en suis!

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                DialogSheets("Contrôle").Activate 'Ma BdD Microsoft Excel 5.0
    'j'ajoute l'objet OLE initialisé avec le dessin désiré!  
              ActiveSheet.OLEObjects.Add(ClassType:="Paint.picture", _
                             Filename:="C:\Documents and Settings\gootsu\Mes documents\Mes images\test.bmp", _
                             Link:=False, DisplayAsIcon:=False).Select 
                Selection.Name = MonImage
    quand j'enlève la ligne en rouge il m'insert l'objet mais il n'y as pas le dessin par defaut!
    je sais qu'il faut soit le classtype soit filename il ne prend en compte que l'un des deux mais alors pourquoi quand j'enlève juste la ligne bleu cela ne marche pas?

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu essayé d'enregistrer la macro en faisant ce que tu veux ? Je pense que oui... Alors mets le code tel qu'il est créé

  16. #16
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    Citation Envoyé par ouskel'n'or
    As-tu essayé d'enregistrer la macro en faisant ce que tu veux ? Je pense que oui... Alors mets le code tel qu'il est créé
    quand j'enregistre une macro il ne m'insert que l'objet mais il n'y a pas de moyen pour lui mettre d'image par defaut! (le dessin par defaut n'est jamais le meme selon le choix de l'utilisateur)

  17. #17
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    j'ai essayé d'effecutuer quelque recherche sur paint ... mais à priori MSPaint ne serai pas une apllication OLE Automation.. et donc on ne peu pas la piloter en OLE..?

  18. #18
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    et donc on ne peu pas la piloter en OLE..?
    Bonjour Bbil;

    Il ne s'agit pas de la piloter en OLE mais de la mettre en objet OLE et de s'en servir directement, comme on pourrait se servir directement de Word en objet OLE, ....

    Insère donc un objet OLE (celà ne se fait pas dynamiquement mais directement) et tu comprendras de quoi il s'agit .
    Je suis vraiment désespéré ....

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Obtenu en enregistrant la macro (VBA 97)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.InlineShapes.AddOLEObject ClassType:="Paint.Picture", FileName:= _
            "D:\clipart\windows\Versaille - Statue.bmp", LinkToFile:=False, _
            DisplayAsIcon:=False
    Ça ne règle pas le problème avec Excel 5, mais j'attends toujours le code, gootsu

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il est possible que ce ne soit qu'une histoire de changement de syntaxe entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              ActiveSheet.OLEObjects.Add "Paint.picture", "C:\Documents and _
    Settings\gootsu\Mes documents\Mes images\test.bmp", False, False
    'ou bien
              ActiveSheet.OLEObjects.Add ("Paint.picture", "C:\Documents and _
    Settings\gootsu\Mes documents\Mes images\test.bmp", False, False)
    Pour certaines méthodes, le type de l'argument est ignoré. Peut-être en est-il ainsi sur Excel5.
    Si tu peux tester ça...

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/04/2008, 18h02
  2. [VS.net 2005] Question philosophique sur les objets
    Par WriteLN dans le forum Framework .NET
    Réponses: 8
    Dernier message: 23/08/2007, 10h34
  3. Réponses: 12
    Dernier message: 14/06/2006, 09h50
  4. [VBA-A]Détection souris sur un objet.
    Par LiNuXaDDiKt dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 09h13
  5. Réponses: 5
    Dernier message: 24/04/2005, 04h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo