Image de excel à access

Résolu
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis en train de faire un logiciel dans le cadre de mon stage en entreprise, je suis étudiant.

J'ai un fichier access dans lequel je sélectionne un collaborateur,


par la suite, j'ouvre son fichier excel correspondant.

Dans ce fichier excel, je peux renseigner les informations sur les formations que le collaborateur a eu avec ses notes, mais je peux aussi sur une autre feuille remplir son futur plan de charge.


A partir de là, je peux cliquer sur le bouton de la feuille principale qui fera le lien avec ma bdd access pour mettre à jour les notes de ce collaborateur.
Mon vba va aussi faire une capture d'écran sur le plan de charge et l'enregistrer dans un fichier.

voici mon code:
Sub Bouton1_Cliquer()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, R As Long

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=R:\Production\Rapport\Suivi formation\access\Formations.accdr"

Set rs = New ADODB.Recordset

Sheets("NePasToucher").Activate
cell_id = Range("A2").Value

'ici capture decran
Dim Gr As Object, Rg As Range, R1$, N$, C$, PathFich$
R1$ = "B1:F17"
Sheets("Plan d'action").Activate
N$ = ActiveSheet.Range("B1")
C$ = "R:\Production\Rapport\Suivi formation\access\image\" & cell_id & "_Boites.jpg"
Application.ScreenUpdating = False
PathFich$ = C$
Set Rg = ActiveSheet.Range(R1$): Rg.CopyPicture xlScreen, xlPicture: DoEvents
Set Gr = ActiveSheet.ChartObjects.Add(0, 0, Rg.Width, Rg.Height): DoEvents
Gr.Activate: ActiveChart.Paste: DoEvents
Gr.Chart.Export PathFich, "jpg": DoEvents

Application.ScreenUpdating = True

'requete sql
Sheets("Matrice").Activate
rs.Open "Boites where col_id= " & cell_id, cn, adOpenKeyset, adLockOptimistic, adCmdTable
R = 16
With rs
.Fields("process") = Range("H" & R).Value
.Fields("BE_1/2") = Range("I" & R).Value
.Fields("BE_3/4") = Range("J" & R).Value
.Fields("TOTAL") = Range("K" & R).Value
If (Range("M" & R).Value) <> " " Then
.Fields("depal_partie_generale") = Range("M" & R).Value
End If
If (Range("N" & R).Value) <> " " Then
.Fields("depal_navette_alvey") = Range("N" & R).Value
End If
If (Range("O" & R).Value) <> " " Then
.Fields("depal_partie_basse") = Range("O" & R).Value
End If
If (Range("P" & R).Value) <> " " Then
.Fields("depal_partie_haute") = Range("P" & R).Value
End If
If (Range("Q" & R).Value) <> " " Then
.Fields("depal_maintenance_1er_niveau") = Range("Q" & R).Value
End If

.Update
End With

rs.Close
Set rs = Nothing
Gr.Delete: Set Gr = Nothing

cn.Close
Set cn = Nothing





MsgBox "maj faite"
End Sub


Jusque là tout fonctionne.
Maintenant, on retourne dans access.

Je voudrais pouvoir afficher l'image enregistrée dans mon formulaire du début à la sélection de la personne (donc de la dernière liste déroulante) a côté.
Sachant donc qu'il faut afficher l'image du bon collaborateur.
Je n'arrive pas à trouver de code vba pouvant m'aider.

Si quelqu'un connait la solution à mon problème :)

Merci d'avance
A voir également:

5 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
bonjour,
merci de préciser le langage (VBA est du basic) quand tu utilises les balises de code.

veux-tu simplement, dans du code VBA Access, retrouver le nom du fichier
"R:\Production\Rapport\Suivi formation\access\image\" & cell_id & "_Boites.jpg"
?

si oui, il faudrait peut-être que tu nous expliques ce qu'est le champ col_id dans la table Boites.
0
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Je fais bien du VBA

Le champ col_id est l'identifiant du collaborateur, c'est la clé de ma table collaborateur et il permet de faire le lien avec ma table Boites.
J'ai un champs caché dans mon formulaire access qui retrouve cette valeur.
Donc je ferais :
"R:\Production\Rapport\Suivi formation\access\image" & Texte18.value  & "_Boites.jpg"

qui me retrouverai le fichier de l'image.

Mais maintenant, je n'arrive pas à faire l'affichage de cette image.

Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 
tu as donc la réponse à ta question de départ, et tu te demandes maintenant comment afficher une image à partir d'un fichier?
0
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Je voudrais qu'on puisse avoir un affichage dans le genre de celui-ci, dès le changement de la dernière liste déroulante.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 
ne suffit-il pas d'adapter le formulaire pour y insérer une image?
0
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
c'est ce que j'ai fait pour l'exemple donné, mais je n'arrive pas à changer le chemin de l'image en vba (j'ai pris un sous-formulaire dans lequel j'ai mis un fond d'ecran, le tout fait à partir de l'onglet propriété donc sans vba), j'aurais toujours le même plan d'action dans ce cas ci donc
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 
je pense qu'il suffit de changer l'attribut "picture" du sous-formulaire.
pour t'entrainer; je suggère que tu commences par afficher cette propriété.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
par exemple, si ton sous-formulaire s'appelle souform:
Me.souform.Form.Picture = _
      "R:\Production\Rapport\Suivi formation\access\image" _
             & Texte18.value & "_Boites.jpg"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fatiog Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
je viens de réussir !!

J'explique comment j'ai fait:
Dim Gr As Object, Rg As Range, R1$, N$, C$, D$, PathFich$
    R1$ = "A3:F17"
    Sheets("Plan d'action").Activate
    N$ = ActiveSheet.Range("A3")
    C$ = "R:\Production\Rapport\Suivi formation\access\image\" & cell_id & "_Boites.jpg"
    Application.ScreenUpdating = False
    PathFich$ = C$
    D$ = "R:\Production\Rapport\Suivi formation\access\image\" & cell_id & "_Boites.bmp"
    Set Rg = ActiveSheet.Range(R1$): Rg.CopyPicture xlScreen, xlPicture: DoEvents
    Set Gr = ActiveSheet.ChartObjects.Add(0, 0, Rg.Width, Rg.Height): DoEvents
    Gr.Activate: ActiveChart.Paste: DoEvents
    Gr.Chart.Export PathFich, "jpg": DoEvents
    FileCopy C$, D$
    Application.ScreenUpdating = True

J'ai ajouté une ligne filecopy dans mon fichier excel pour renommer mon fichier en bmp, j'ai donc 2 images, une en jpg et l'autre en bmp.

Dans access, j'ai ajouté un bouton avec la propriété visible = false

et au changement sur ma dernière liste déroulante, j'ai mis le code suivant.

Private Sub Texte20_Change()
Dim fic As String
fic = "R:\Production\Rapport\Suivi formation\access\image\" & Texte18.Value & "_" & Texte20.Value & ".bmp"
If Len(Dir(fic)) > 0 Then
    Commande63.Picture = fic
    Me.Commande63.Visible = True
Else
    Me.Commande63.Visible = False
End If
End Sub


comme cela, mon bouton ne s'affichera que si mon collaborateur possède un plan de charge.
L'objectif est rempli mais le visuel est un peu différent que dans mes exigences.


Merci encore de ton temps
0

Discussions similaires