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 et les #Nombre! [ par ldepoorter ]
Bonjour,J'ai un problème lorsque je lis (temporairement) un fichier excel avec Access (97) en VB. Lorsque j'utilise la fonction TransferSpreadsheet av
Problème d'accès à une base Access par VB6 [ par kain_skybrace ]
Bonjour à tous,Je suis en train de développer un petit programme en VB6 qui fait appel à une base de donnée Access. Je peux modifier les tables, mais
Excel et Access [ par FoMbS ]
Bonsoir, j'ai un problème.... lol <span
Excel et Access [ par FoMbS ]
Bonsoir, j'ai un problème.... lol <span
Excel + Access [ par FoMbS ]
Bonsoir, j'ai un problème.... lol <sp
Problème Liaison Access Excel [ par fcapitaine ]
bonjour à tous, j'ai créé une Base Access qui comporte des liaisons entre une table et un fichier Excel. Voici la commande utilisée : DoCmd.Transfe
importer des donnees de Excel vers Access via vb6 [ par ismail512 ]
Je viens de implémenter une méthode qui permet d'exporter une table Excel vers une table Access. Mais j'ai un problème c'est que une colonne de ma tab
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
Livres en rapport
|
Derniers Blogs
[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil [MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION[MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION par Miiitch
Lors de cette session que j'ai animé avec Rui , j'ai eu l'occasion de présenter, en plus des nouveautés de SQL Server 2008, comment utiliser l'édition "database" de Visual Studio 2008. Le principe? Avoir les mêmes outils lors que l'on travaille avec une b...
Cliquez pour lire la suite de l'article par Miiitch [WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF[WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF par JeremyJeanson
La localisation . vous connaissez ce system miraculeux qui permet à votre application de s'afficher dans la langue de l'utilisateur (à condition de l'avoir intégrée dans votre programme). Comment mettre en place la localisation dans WF4? Cette question m'...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor Xlite (v 3.0 build 41150)XLITE (V 3.0 BUILD 41150)c'est un logiciel qui permet de téléphoner par Internet à l'aide d'un compte SIP pratique pour le... Cliquez pour télécharger Xlite Academy System (10.9.3.0)ACADEMY SYSTEM (10.9.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|