Fichier image

J

Jacques

Guest
Bonjour,

J'ai exportés des données Access (dont un champ comporte le chemin d'un fichier photo) vers une feuille d'un classeur Excel.
Je voudrai sur une autre feuille Excel du même classeur faire apparaître la photo correspondant au chemin exportés.
Est-ce possible et comment faire ?

Salutations
 
J

Jacques

Guest
Bonsoir Robert, bonsoir le forum,

Merci pour ta réponse rapide, mais j’ai besoin de plus de détail car je n’y arrive pas.

La feuille qui contient les données Access s’appelle « TABLEAUX » et la colonne « AK2 » contient le chemin
Suivant :

C:\\Documents and Settings\\Propriétaire\\Mes documents\\Mes images\\PHOTOS-TENNIS CLUB\\SENIORS.bmp

La feuille qui reçoit la photo se nomme « RENCONTRES ».

A quel endroit mettre le code VBA ?

J’ai essayé en mettant ce code dans un contrôle image créer sur la feuille « RENCONTRES », mais cela ne marche pas.

Je pense que tu as compris que je suis un débutant.

A plus,

Jacques
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Jacques, bonsoir le forum,

Ok ! Tu ouvres ton fichier, puis tu fais [Alt]+[F8]. Dans Nom de la macro tu tapes le nom (sans espace ni accent) puis tu cliques sur le bouton Créer et là tu colles le code ci-dessous :


Sheets('RENCONTRES').Pictures.Insert(Sheets('TABLEAUX').Range('AK2'))


[Alt]+[F11] pour revenir à Excel. Pour exécuter la macro, [Alt]+[F8] et soit un double-clic sur la macro que tu as créée soit un clic et le bouton Exécuter. Tu peux aussi, dans la boite de dialogue Macro, lui attibuer un raccourci clavier par le bouton Options....

J'espère que c'est plus clair maintenant.
 
J

jacques

Guest
Bonsoir Robert, bonsoir le forum,

Je suis vraiment désolé mais je n’arrive pas à afficher mes Images.
Aussi je me permets de joindre un fichier pour voir le problème qui est d’afficher automatiquement et à l’ouverture de la feuille « TABLEAU » la photo correspondant au chemin indiquer sur la feuille « RENCONTRE »
Le fichier photo est celui de l’exemple Access les comptoirs.
Je profite de l’occasion pour demander la solution pour afficher le score en rouge en cas de victoire et en bleu en cas de défaite.
A plus

Jacques
[file name=Essai_20050707203806.zip size=12387]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essai_20050707203806.zip[/file]
 

Pièces jointes

  • Essai_20050707203806.zip
    12.1 KB · Affichages: 25

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jacques, bonjour le forum,

Désolé Jacques je n'avais pas relu ton post ces derniers jours d'où ma réponse tardive.
À l'avenir, joins de suite un fichier exemple, tu gagneras du temps...
Je te propose la macro modifiée:

Option Explicit

Sub InsererImages()
'pour la photo (tu avais inversé la source et la cible)
Sheets('Tableaux').Activate 'sélectionne l'onglet 'Tableaux'
Range('AG22').Select 'sélectionne la cellule AG22
'insère la photo dont le chemin est indiqué cellule D2 (onglet 'Rencontres')
Sheets('Tableaux').Pictures.Insert (Sheets('Rencontres').Range('D2').Value)

'pour les couleurs de 'Victoire / Défaite'
Dim Cel As Range 'déclare la variable Cel
'boucle sur les 5 cellules AB23, AB27, AB31, AB35 et AB39
For Each Cel In Range('AB23,AB27,AB31,AB35,AB39')
'condition : la cellule (en MAJUSCULE) contient le mot 'VICTOIRE'. Cela permet d'accepter
''victoire', 'Victoire', 'VICTOIRE' ou n'importe quelle autre combinaison Majuscule / Minuscule
If UCase(Cel.Value) = 'VICTOIRE' Then
Cel.Offset(1, 0).Font.ColorIndex = 3 'couleur de police rouge pour la cellule en dessous
Else 'sinon
Cel.Offset(1, 0).Font.ColorIndex = 25 'couleur de police bleue pour la cellule en dessous
End If 'prochaine cellule de la boucle
Next Cel
End Sub
 
J

Jacques

Guest
Bonsoir Robert, bonsoir le forum,

Ce n’est vraiment pas grave pour la réponse tardive, et je te remercie pour les deux solutions.

Pour les couleurs conditionnelles c’est ok cela fonctionne.

Par contre pour l’insertion de l’image celle-ci déborde à droite et en bas de la plage prévue, j’ai rajouté les lignes marquées par (**) mais toujours le même problème :

(**) Dim y As Integer

Sheets('Tableaux').Activate 'sélectionne l'onglet 'Tableaux'
Range('AH23:BH43').Select 'sélectionne la cellule

(**) With ActiveWindow
(**) y = .Selection.Width
(**) End With

'insère la photo dont le chemin est indiqué cellule D2 (onglet 'Rencontres')
Sheets('Tableaux').Pictures.Insert (Sheets('Rencontres').Range('D2').Value)

(**) Selection.ShapeRange.Width = y

Par contre en début de Macro je voudrai effacer l’image, j’ai essayer avec Selection.Delete mais ça détruit aussi le format.

Dans l’attente de tes commentaires.

A plus et bon Dimanche

Jacques
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Jacques, bonsoir le forum,

J'étais absent ce week-end je n'ai lu ton post que il y a peu. Voici la macro modifiée. Si tu as une photo d'affichée, efface-la manuellement. Ensuite la macro s'en chargera. En fait cela fonctionne comme ça : au début la macro supprime l'image nommée 'photo' ou passe si 'photo' n'existe pas. Ensuite quand elle insère une image elle la renomme 'photo' (pour pouvoir l'effacer la fois d'après).
J'ai rajouté deux lignes pour adapter la taille.


Option Explicit

Sub InsererImages()
Dim lar As Double, hau As Double 'déclare les variables lar et hau

'pour la photo (tu avais inversé la source et la cible)
Sheets('Tableaux').Activate 'sélectionne l'onglet 'Tableaux'

On Error Resume Next 'évite le bug si 'photo' n'existe pas
ActiveSheet.Shapes('photo').Delete 'supprime la photo

lar = Range('BJ22').Left - Range('AG22').Left 'définit la variable lar
hau = Range('AG45').Top - Range('A22').Top 'définit la variable hau
Range('AG22').Select 'sélectionne la cellule AG22

'insère et sélectionne la photo dont le chemin est indiqué cellule D2 (onglet 'Rencontres')
Sheets('Tableaux').Pictures.Insert(Sheets('Rencontres').Range('D2').Value).Select
Selection.Name = 'photo' 'renomme la photo 'photo'
Selection.ShapeRange.Width = lar 'adapte la largeur de l'image
'si la hauteur dépasse, adapte la hauteur
If Selection.ShapeRange.Height > hau Then Selection.ShapeRange.Height = hau
Range('AG22').Select 'sélectionne la cellule AG22 (pour désélectionner l'image)


'pour les couleurs de 'Victoire / Défaite'
Dim Cel As Range 'deçlare la variable Cel
'boucle sur les 5 cellules AB23, AB27, AB31, AB35 et AB39
For Each Cel In Range('AB23,AB27,AB31,AB35,AB39')
'condition : la cellule (en MAJUSCULE) contient le mot 'VICTOIRE'
If UCase(Cel.Value) = 'VICTOIRE' Then
Cel.Offset(1, 0).Font.ColorIndex = 3 'couleur de police rouge pour la cellule en dessous
Else 'sinon
Cel.Offset(1, 0).Font.ColorIndex = 25 'couleur de police bleue pour la cellule en dessous
End If 'prochaine cellule de la boucle
Next Cel
End Sub

Message édité par: Robert, à: 10/07/2005 23:36
 
J

Jacques

Guest
Bonjour Robert, bonjour le forum,

Bravo et un très grand merci. Tout fonctionne à merveille, et grâce à toi j’ai obtenu le résultat que je désirais tout en ayant assimilé pas mal de connaissances sur Excel.
Maintenant je vais pouvoir passer un nouveau fil « Récupération de donnée sur le WEB » et j’espère que tes connaissances sur le sujet me mettront de nouveau en contact avec toi.
Un grand merci à nouveau

Salutations

Jacques
 

Discussions similaires

Réponses
10
Affichages
308
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 514
Messages
2 089 214
Membres
104 066
dernier inscrit
il matador