Question sur getopenfilname

Résolu/Fermé
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012 - 3 déc. 2012 à 23:52
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 6 déc. 2012 à 06:54
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.

6 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
4 déc. 2012 à 09:17
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?
0
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
4 déc. 2012 à 21:44
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 ?...
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
4 déc. 2012 à 21:53
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.
0
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
4 déc. 2012 à 22:05
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
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
4 déc. 2012 à 23:25
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.
0
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
4 déc. 2012 à 23:34
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.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 5/12/2012 à 09:22
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.
0

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

Posez votre question
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
5 déc. 2012 à 12:28
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 ...
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 déc. 2012 à 15:34
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 !
0
1chticanon Messages postés 6 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
5 déc. 2012 à 20:10
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 !
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
6 déc. 2012 à 06:54
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 ...
0