Question sur getopenfilname

[Résolu/Fermé]
Signaler
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012
-
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
-
Bonjour,

Je suis au début du début en VBA.
Je veux inserer une image dans une cellule active excel, issue d'un fichier image bien précis.
J'ai copier sur ce forum un code qui marche bien mais j'aurais voulu que l'utilisateur aille directement au bon fichier image plutot que d'avoir le choix entre pleins de fichiers. A quel endroit de la macro peut on écrire le nom du fichier image ?
Merci par avance.

A voir également:

6 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 643
Bonjour,

J'ai copier sur ce forum un code qui marche bien
Peux tu, afin que nous répondions à ta question, nous donner ici ce fameux code qui marche si bien?
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Bonjour, il y a celui-ci :

Public Sub insere_image()
Dim ficimg As Variant
ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image") ' choix nom du fichier
ActiveSheet.Pictures.Insert(ficimg).Select ' insertion
With Selection.ShapeRange
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = ActiveCell.Top ' haut de la cellule
.Left = ActiveCell.Left ' gauche de la cellule
.Height = ActiveCell.RowHeight ' hauteur de la cellule
.Width = ActiveCell.Width ' largeur de la cellule
End With
With Selection
.PrintObject = True ' l'objet est imprimé en même temps que le document
.Placement = xlMoveAndSize ' manière dont l'objet est lié aux cellules
End With
End Sub

ou celui-là :

Private Sub Triangleisocèle3_Clic()
Dim Image As Variant
Dim L As Single, T As Single, W As Single, H As Single
'Dimensionne la cellule
ActiveCell.Offset().RowHeight = 63.75
ActiveCell.Offset().ColumnWidth = 13.86
'sélectionne la cellule de réception
L = ActiveCell.Left
T = ActiveCell.Top
W = ActiveCell.Width
H = ActiveCell.Height
Image = Application.GetOpenFilename
If Image <> False Then
ActiveSheet.Shapes.AddPicture Image, True, True, L, T, W, H
End If
End Sub


j'aurais voulu déposer aussi la feuille de calcul sur laquelle je travaille mais je ne sais pas si on peut déposer un fichier excel sur cette page du site, je n'ai pas trouvé. En gros, j'essaie de faire un bon de commande de menuiseries et je voudrais selectionner le type de fenêtre (2vantaux ou 1 vantail par exemple) dans un fichier image et que cela apparaisse dans la cellule active.
L'idéal étant que la macro s'execute non pas en cliquant sur une forme mais directement dans la cellule active et que le nom de la fenêtre soit lié à l'image (par exemple je selectionne l'image correspondant à un carré et un texte est déposé dans une autre cellule qui decrirait l'image en inscriavant le mot "carré".
Je ne sais pas si je suis clair ?...
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Bonsoir 1chticanon,
Pour déposer un fichier, il faut le faire sur un site indépendant, tel que "cjoint.com".
Tu nous met le lien sur ton prochain message, c'est tout.
ATTENTION de supprimer toutes données sensibles, merci.
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Merci pour le tuyau je ne connaissais pas ce site.
Je ne joint que la feuille de calcul, le fichier image n'est pas encore fait.
Voici- le lien :
https://www.cjoint.com/?0LewdeM7MPm
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Bonsoir 1chticanon,
Qu'appelles-tu "pleins de fichier", car, d'après mes tests, il ouvre dans le répertoire où se trouve le fichier Excel, et je n'y ait placé qu'un unique fichier image.
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Bonsoir Heliotte et merci de t'intéresser à mon problème :

Moi quand j'execute la macro, cela ouvre le répertoire "mes documents", je suis donc obligé d'aller chercher le dossier voulu qu'on pourrait nommer "images fenêtres" par exemple parmis tous les dossiers.
Moi je voudrais que la macro ouvre directement le dossier ciblé "images fenêtres" et qu'on aperçoive toutes les images. Il n' y aurait plus qu'à cliquer sur la bonne image pour qu'elle soit automatiquement insérée dans la cellule active de la feuille excel.
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Je ne sait pas avec ta version d'Excel, mais avec la version 2003 d'Excel, c'est impossible de demande à "GetOpenFilename" de changer de répertoire.
Il te reste donc deux solutions, soit en changeant le répertoire courant, soit en utilisant l'API correspondante.

Changer le répertoire courant:
    ChDrive "I" 
    ChDir "I:\Tata\Toto\images fenêtres\"

C'est le plus simple. Évidemment, si tu d'autres choses à faire dans le répertoire de départ, il te faut garder le chemin de départ dans une variable, excepté si c'est le chemin de l'application.
Penses à mettre résolu, merci.
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Bonjour et merci pour ta réponse rapide,
mais comme je maitrise le vb comme le russe, je voulais savoir ou je place ces ligne dans le code que j'ai déjà ?
Désolé de poser des question basiques, mais je ne suis qu'un menuisier qui essaie de toucher au monde obscure de la programmation ...
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Y'a pas d'malaise Blaise.
Le milieu de la programmation n'est pas obscure du tout, c'est seulement ce que certains veulent nous faire croire .. hi hi.
Q. - Trêve de plaisanterie, à ton avis, où pourrais-t-on le placer ..
R. - Heu .. peut-être juste avant de faire appel à la boîte de dialogue qui a besoin d'un chemin .. tel que celui-ci, pardis.

Examen réussi !
Messages postés
6
Date d'inscription
lundi 3 décembre 2012
Statut
Membre
Dernière intervention
5 décembre 2012

Merci Heliotte !
J'ai collé tes 2 lignes avant l'application getopenfilename, et ... Ca marche !
J'ai encore pleins d'autres questions mais je le ferai plus tard je vais fermer le sujet et le mettre en "résolu".
Juste comme ça , faut combien de temps pour maitriser VB parce que j'ai pris VB6 pour les nuls et même cet ouvrage me parait complexe. J'en ai marre de faire du copier -coller de morceaux de code, c'est frustrant !
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Bonjour 1chticanon,
Visual Basic est très facile à appliquer, tu le verras par toi-même.
Une astuce par-ci par-là, je code, je recommence .. très vite.
Cela dépend surtout du temps que tu peux y consacrer.
Le principal : toujours se fier à la documentation du logiciel, pour ne pas s'embrouiller.
Tu peux toujours voir d'autres tutos pour une meilleures compréhension, mais c'est préférable de revenir aux origines .. toujours.
Bonne programmation et @ très bientôt ...