Accueil > Forum > > > > import d'une image de excel vers access
import d'une image de excel vers access
mercredi 1 août 2007 à 12:08:15 |
import d'une image de excel vers access

jimgini
|
Bonjour!
Tout d'abord je ne suis pas sûr d'avoir poster au bon endroit. J'ai hésité entre access et vba...
Voici mon problème. Je suis entrain de faire une base de données qui doit remplacer tout un ensemble de fichiers excel. Chaque fichier excel devient une entrée de la base de données. Comme les fichiers excel sont en peu foutus n'importe comment, j'ai un module access qui recopie une à une la bonne cellule excel dans le bon champ access. Jusque là ça va je m'en sors tout seul.
Mais j'ai aussi une image à recopier. Cette image se trouve sur la feuille excel, son nom varie d'une feuille à une autre, et elle n'est pas attachée à une cellule. j'ai trouvé des bouts de code pour récupérer les images d'une feuille excel, mais je n'arrive pas à les faire marcher. ce sont des trucs du style :
Dim Obj As Shape
'Boucle sur les formes type Image contenues dans la feuille For Each Obj In Worksheets("Feuil1").Shapes If Obj.Type = msoPicture Then MsgBox Obj.Name Next Obj
ou encore :
Dim P As Object For Each P In ActiveSheet.Pictures If TypeOf P Is Picture Then Call P.Delete 'là aussi ce n'est pas la bonne instruction, mais je peux gérer ça tout seul! Next
Je n'arrive pas à faire marcher ces fragments de code. Tel que je comprends le problème il me manque des références, puisque je dois utiliser du vba excel dans access. Pourtant j'en utilise pour le reste, par exemple pour avoir accès à une cell particulière ou pour faire getopenfilename. Mais il doit encore me manquer des références. J'ai mis microsoft excel 11.0, ms access 11.0, activeX data objects 2.1, DAO 3.6, OLE automation, et visual basics for applications.
Le problème est donc : récupérer avec access une image sur excel dont je ne connais rien.
Quelqu'un a une idée?   Merci pour toute aide!
ps : j'ai office 2003
|
|
mercredi 1 août 2007 à 14:06:23 |
Re : import d'une image de excel vers access

M51
|
Si cela t"interesse je peux déjà te passer le code pour stocker une image (les données dans access). Perso je conseille pas, car le fichier access s'envole rapidement en dimension, il vaut sauver l'image ailleur et stocker le lien de cette image dans access.
|
|
jeudi 2 août 2007 à 04:51:11 |
Re : import d'une image de excel vers access

jimgini
|
Je te remercie. Je veux bien que tu me passes ça, même si je pense pouvoir faire seul cette partie. Effectivement stocker l'image en dehors est sans doute mieux, mais ça n'empêche pas que j'aimerais toujours récupérer automatiquement l'image sur le fichier excel, quel que soit l'endroit où je la stocke après. Je ne fais pas confiance aux futurs utilisateurs pour sauver l'image au bon endroit avec le bon nom  et en plus ça serait plus rapide. Merci à toi en tout cas.
|
|
jeudi 2 août 2007 à 08:59:22 |
Re : import d'une image de excel vers access

M51
|
Ce code permet de stocker une image dans Access (j'insiste en disant qu'il vaut mieux sauver cette image automatiquement dans un répertoire et la lier dans access):
Il faut d'abord récupérer l'image, je la passe ensuite dans un MemoryStream, qui me permet de récupérer une table bynaire (il y a peut être plus simple mais je ne connais pas). Pour cela tu as besoin de connaitre l'encodeur Jpeg dans mon cas.
'traitement d'image Dim MyImageCodecInfo As ImageCodecInfo = GetEncoderInfo("jpeg") Dim MyEncoder As Encoder = Encoder.Quality Dim Quality As Long = 70 'facteur de compression Dim MyEncoderParameter As New EncoderParameter(MyEncoder, Quality) Dim MyEncoderParameters As New EncoderParameters(1)
'retourne les caractéristiques du codec dispo dans Framework (dans mon cas un JPEG) Function GetEncoderInfo(ByVal Format As String) As ImageCodecInfo Dim i As Integer Dim encoders As ImageCodecInfo() encoders = ImageCodecInfo.GetImageEncoders For i = 0 To encoders.Length If encoders(i).FormatDescription = Format.ToUpper Then Return encoders(i) Exit For End If Next GetEncoderInfo = Nothing 'sinon on retourne rien End Function
Mettre ce code dans le Form.Load par exemple: MyEncoderParameters.Param(0) = MyEncoderParameter 'récupère les paramètres encodeur Jpg disponible
Puis celui-ci pour stocker chaque image dans access: Dim NameTable As String = "IMAGES"
'Connection pour Access
Dim MyConnexion As New
OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
source=C:\... fichier Access.mdb") Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() Mycommand.CommandText = "INSERT INTO " & NameTable & "([Image]) VALUES (?)"
Dim Miniature As Image Dim bytImage As Byte()
Miniature = Bitmap.FromFile(ListFile(I)) 'Là, tu devras avoir le code qui te récupérera l'image depuis un fichier Excel (désolé je ne connais pas celui-ci) Miniature = Miniature.GetThumbnailImage(90, 120, Nothing, Nothing) 'redimensionne mais pas obligatoire dans ton cas Dim mstImage As New MemoryStream() 'Attention Il faut recréer un mstImage à chaque fois, sinon on ajoute l'image à la suite Miniature.Save(mstImage, MyImageCodecInfo, MyEncoderParameters) bytImage = mstImage.GetBuffer() Mycommand.Parameters.Add(New OleDbParameter("Image", OleDbType.VarBinary, bytImage.Length, ParameterDirection.Input, False, CByte(0), CByte(0), "", DataRowVersion.Current, bytImage))
Mycommand.ExecuteNonQuery()
Mycommand.Dispose() 'supprime l'ancienne donnée
Enfin, dans access il faudra mettre un champ Image avec un type "Objet OLE"
Voilà bon courage ;)
|
|
jeudi 2 août 2007 à 11:44:58 |
Re : import d'une image de excel vers access

jimgini
|
Wah merci beaucoup!
En fait je vais suivre ton conseil, je vais les enregistrer à coté de la bd. Donc je ne sais pas si j'aurais besoin de ce code, en tout cas merci.
J'ai trouvé comment accéder aux images, là j'essaye de les enregistrer. Si tu as ce code dispo aussi je suis prenuer, sinon c'est pas grave.
Merci beaucoup en tout cas.
|
|
vendredi 3 août 2007 à 11:11:05 |
Re : import d'une image de excel vers access

jimgini
|
Réponse acceptée !
Voilà j'ai finalement réussi à le faire marcher. Je le mets si d'autres personnes en ont besoin un jour.
Dim Photo As Object Dim ch As ChartObject
For Each Photo In ws.Shapes 'ws est la worksheet où il faut récupérer les images Photo.CopyPicture Set ch = ws.ChartObjects.Add(0, 0, Photo.Width, Photo.Height) ch.Chart.Paste ch.Chart.Export Application.CurrentProject.Path & "\photos\" & po_ref & ".jpeg", "JPEG" 'ici je l'enregistre dans un rep "photos" qui se trouve au même endroit que le .mdb. po_ref est un string que je récupère plus haut, propre au fichier excel. Next Photo
Perso je m'en sers pour enregistrer une seule photo, pour en enregistrer plus il faudrait à chaque fois changer le nom.
Cette méthode modifie la feuille excel originale, j'ai contourné le problème avec des sendkeys pour que les modifications ne soient pas enregistrées à la fermeture.
|
|
Cette discussion est classée dans : problème, access, excel, image, obj
Répondre à ce message
Sujets en rapport avec ce message
ACCESS & EXCEL [ par Banzai ]
Bonjour,Voila j'ai un problème avec une extraction de données ACCESS sur un feuille EXCEL Le problème que je rencontre et que l'execution de ma foncti
Petit problème de mise en forme [ par Sebcaen14 ]
Bonjour, je suis en train de terminer une application access/excel et il me reste des petits problèmes de mise en forme, j'espère que quelqu'un pourra
Problème de sauvegarde de VBA Access vers Excel... [ par karitchy ]
Bonjour vous tous!J'aurais besoin de votre aide... Voici mon problème: Je travaille en Excel et Access. J'utilise VBA Access pour envoyer mes données
Problème de controle de couleur dans excel lors de l'insertion d'un caractere spécial [ par fanjio ]
Bonjour à tous, et merci à ceux qui ont répondu à ma derniere sollicitation.Celle qui vient s'en rapproche.Alors mon probleme est que je souhaite cont
CopyFromRecordset... pitit problème [ par kibi46 ]
Bonjour!J'ai donc utilisé la fonction CopyFromRecordset pour récupérer des données d'une base Access et les insérer dans une page d'un classeur Excel.
VBA - problème d'importation table Access vers Excel [ par Tiko38 ]
Salut à tous! J'ai un problème... Je vais essayer de m'expliquer... J'importe une table Access vers un onglet de fichier Excel. Je veux choisir d
uN VRAI PROBLEME DE TRANSFERT DES DONNEES DE ACCESS A EXCEL [ par pataccess ]
J'ai réellement un problème dans mon transfert de données de Access à Excel ! Quelqu'un pourrait il me dire comment se fait il que Access me recrée un
Problème de requête entre Excel et Access [ par gorby69 ]
Salut à tous, Je suis en train de péter un câble ... Je vous explique: je travaille en VBA sous Excel XP et j'attaque une base Access 97. J'ai une r
Excel vers Access [ par therafou ]
Salut,Je cherche à mettre en place une liaison d'une feuille Excel vers une base access, ce que je gère sans problème pour l'importation access vers E
[SQL/VBA]: Problème entre Access et Excel [ par nico39 ]
Bonjour à tous,mon problème est le suivant: je souhaiterais utiliser sous Excel une requête SQL exécutée sous Access. Sous Access, la requête fonction
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|