Création liaison photos et combobox
Bonjour une nouvelle fois je fais appel a vos serice etant tres limiter en vba
j'ai cree une feuille lexique dans laquelle je rentre une photo d'un article et sur le reste de la ligne les caracteristique lier a cet article qui doivent me servir de base pour alimenter les combobox dans mon userform2
Dans l'userform 2 j'aimerai qu en sélectionnant "elingue textile sans fin" la photo lié s'affiche et les combobox en dessous affiche un choix lié uniquement au valeur des autres colones de la ligne 2 de l'article tout en sachant que d'autres longueur ou CMU vont s'ajouter dans le futur
J'imagine que ce n'est pas simple j'espere m'etre fait comprendre
j'ai desactivve et supprimer une partie du fichier pour vous simplifier l observation d'ou les codes qui peuvent vous sembler bizare
Merci
Bonjour,
Mettre votre image dans votre fichier est le meilleur moyen de faire grossir le poids de votre fichier. Excel n'est pas fait pour cela.
Dans le temps, vous insériez une image de 50k et le poids de votre fichier montait de 1 ou 2 Mo. On arrivait avec des poids de fichiers invraisemblables.
Voici ce que je ferais plutôt :
- Créer un num d'article en colonne A (à la place de vos photos) --> Je suppose que la matricule correspond au num d'article ??
- prévoir un dossier dans le répertoire de votre fichier et dans lequel les images sont placées. Chaque image porte le numéro de l'article
- dans votre USF, on utilise la combobox qui charge les noms des articles (voir ci-dessous) à l'ouverture de l'USF et la textbox au dessus pour y mettre le numéro d'article.
Une fois fait vous choisissez l'article dans la combo, le matricule est affiché dans la textbox au dessus et l'image est chargée dans l'USF
Qu'en pensez-vous ?
Si ok, je mettrais aussi le tableau de la feuille Lexique au format structuré comme vous l'avez fait pour la feuille Accueil
Votre code Initialize comme ceci
Private Sub UserForm_Initialize() 'prérempli les textbox a l'ouverture
With Me
.TextBox3.Value = DateValue(Date) 'date du jour
.TextBox4.Value = DateAdd("D", 365, CDate(Me.TextBox3.Text)) 'Date de validité date textbox3 +12 mois
End With
With ThisWorkbook
Me.TextBox2.Value = .Sheets("ACCUEIL").Range("Vérificateur").Text 'nom de l utilisateur cellule vérificateur sur "acceuil"
Me.ComboBox1.List = .Sheets("Lexique").Range("B2:B" & Sheets("Lexique").Range("B" & Rows.Count).End(xlUp).Row).Value
End With
End SubMerci pour votre aide en réalité un dossier photo n'est pas possible cars le fichier est utilise sur plusieurs pc différent et service différent
je pense que le lexique ne devrais pas dépasser les 20/30 images et pas de plus grande taille a laquelle je les ai mise?
vous pense que ce ne fonctionnera pas?
Ou alors j'ai peut êtres une solution en ajoutant un bouton qui ouvre le dossier image stocké sur le serveur pour que les utilisateur ajoute des photos sans chercher le dossier
je pense que le lexique ne devrais pas dépasser les 20/30 images et pas de plus grande taille a laquelle je les ai mise?
vous pense que ce ne fonctionnera pas?
On peut tester mais il faudrait que les images soient nommées identiquement au libellé de l'article de la colonne B
Comme la combobox contient les éléments de la colonne B on peut alors peut être récupérer les images dans l'USF
oui c est possible
oui mais je ne sais pas le faire
Heu.... vous savez renommer une image je suppose ?
Vous renommez votre image avec le nom de l'article puis vous la placez sur votre feuille
ou
vous importez votre image sur votre feuille (attention pas de copier-coller !!) puis vous la sélectionnez et en haut à droite dans la Zone Nom, vous renommez l'image.
Exemple dans votre fichier votre image en A2 à le nom Image 5 -> click dessus puis changez le nom en"Elingue textile sans fin"
Ok je fais ca merci
j ai renommé les 2 premiere photos ca ne fonctionne pas
Non ce n'est pas bon. Voyez la vue ci-dessous. En cliquant sur votre image vous voyez qu'elle a le nom "Image7".
Elle doit porter le nom de ce que vous avez en cellule B2.
Si vous conservez l'idée de mettre vos images sur votre feuille vous devez :
- les importer via le menu Insertion --> Illustration --> Image
- Ensuite copier la désignation que vous avez en colonne B correspondant à l'image
- Cliquer sur l'image
- Coller la désignation dans la zone nom (là où vous voyez "Image 7" dans la vue ci-dessus)
Au final, lorsque vous cliquez sur votre image, cela donne ceci :
dites moi....
NB : ne me remettez pas votre fichier dans votre post. On évite d'alourdir le forum
Merci pour l exemple ...j'ai bien la photo en A2 qui porte le nom de la valeur en B2
j ai remplacer le code userform initialize par le votre
j ai bien la liste de choix mais lors de la selection l image ne s affiche pas
j ai bien la liste de choix mais lors de la selection l image ne s affiche pas
Normal il vous faut remplacer le code ci-dessous.
Le code ajoutera l'image suivant le choix de la combobox et pour autant que l'image est bien nommée dans la "Zone nom"
Si ce n'est pas le cas, le code affichera un message vous disant que l'image n'est pas trouvée. ce qui voudra dire qu'elle 'est pas dans la feuille ou qu'elle n'est pas bien nommée comme prévu en colonne B
Private Sub ComboBox1_Change()
Dim s As Shape
If ComboBox1.ListIndex = -1 Then Me.Image1.Picture = LoadPicture(""): Exit Sub
On Error Resume Next
Set s = Sheets("Lexique").Shapes(CStr(Me.ComboBox1))
If s Is Nothing Then
Me.Image1.Picture = LoadPicture("")
MsgBox "Image non trouvée"
Exit Sub
End If
s.CopyPicture xlScreen, xlBitmap
With s.Parent.ChartObjects.Add(0, 0, s.Width, s.Height).Chart
While .Shapes.Count = 0
DoEvents
.Paste
Wend
.Export "image.jpg", "Jpg"
.Parent.Delete
End With
With Me.Image1
.PictureSizeMode = fmPictureSizeModeZoom
.Picture = LoadPicture("image.jpg")
End With
Kill "image.jpg"
End SubAvec image1, le nom de votre objet dans l'USF
Si ok et terminé -->
Cordialement
Merci ca fonctionne parfaitement👏
est il possible de creer un boutton sur la feuille lexique pour standardiser l insertion d image ?
Moi je ne suis pas caler excel mais les utilisateur qui vont acceder au fichier encore moins
l idée est de creer un boutton sur la feuille lexique pour l. Ajout de photo et remplissage des valeurs correspondantes
les utilisateur qui souhaite ajouter un article au lexique click sur le boutton la fenêtre windows (ajout d image) s ouvre il selectionne l image sur sont bureau et la fonction vba redimensionne l image et la range a la suite tout en agrandissant les cellule pour que tout les informations du lexique ai la meme taille ?
Bonjour
est il possible de creer un boutton sur la feuille lexique pour standardiser l insertion d image ?
Hum, pas simple mais voici ce que vous pouvez tester
1. Placez le code ci-dessous dans le module que vous avez déjà mis en place
Sub ImportImages()
Dim image As Picture
Dim fichier As String
With ActiveCell
If .Column <> 1 Then Range("A" & .Row).Select
If IsEmpty(Range("B" & .Row)) Then 'vérifie que la cellule en colonne B comporte un nom
MsgBox "Pas de libellé en colonne en B" & .Row
Exit Sub
End If
End With
fichier = Application.GetOpenFilename 'ouverture explorateur pour choix de l'image
If Err.Number = 0 Then
With Sheets("Lexique")
Set image = .Pictures.Insert(fichier)
With ActiveCell 'dimensionnement et positionnement image
image.Left = .Left + .Width / 2 - image.Width / 2
image.Top = .Top + .Height / 2 - image.Height / 2
.EntireRow.RowHeight = image.Height + 5
.EntireColumn.ColumnWidth = (image.Width / 4.75) + 0.5
End With
image.Name = image.TopLeftCell.Offset(, 1) 'nommer image suivant nom en colonne B
End With
End If
End Sub2. Placez le bouton sur votre feuille LEXIQUE et associez-le à ce code
Fonctionnement du code :
1. vous devez sélectionner la cellule de destination de l'image --> donc cellule en colonne A. Si ce n'est pas le cas, le code sélectionne automatiquement la cellule A de la ligne active
2. Votre colonne B doit toujours porter le nom de l'article qui sera associé à l'image. Si le cas échéant, le code vous enverra un message pour vous le signaler et ne sera pas exécuté
3. Si les points 1 et 2 sont corrects :
- le code ouvrira l'explorateur windows pour que vous puissiez allez sélectionner l'image dans le répertoire de votre choix
- placera l'image en colonne A (cellule active suivant point 1) et redimensionnera l'image
- renommera l'image suivant ce que vous avez mis en colonne B
Faites un test
Merci pour le code il fonctionne très bien pour l'ajout d'image mais pour le positionnement il y a des images qui se positionne légèrement décalée vers la cellule du haut du coup elle prenne le nom de celle au dessus
mais pour le fonctionnement c'est top .merci
Sincèrement je suis un peut dans le flou concernant mon besoin , je pense vous avoir demander une fonction qui risque de me bloquer pour la suite.
Je vais tenter de ré-expliquer mon besoin (pas facile)
Mon fichier est fait pour plusieurs intervenants encore moins calé que moi en excel (oui ça existe)
ce fichier sert a attribuer un matricule a chaque outils et mettre a jour tout les 1ans après vérification
(sur l ancien fichier j'ai plusieurs utilisateur qui nomme différemment le même outil)
Je veux créer un lexique avec nom de l outil et ses caractéristique j'ai besoin d'une photo pour que les utilisateur ne confonde pas le nom
ou
miniature (si possibilité d’agrandir en click dessus)
ou
en click sur le nom de l'article une visionneuse apparaît (si c est possible ce serait très utile sur les nom d'article rangé dans les autres tableau du classeur)
Le lexique doit pouvoir êtres alimenté par les utilisateurs simplement par un bouton ou un userform qui range correctement les images et nom d'article
(peut être plus facile en stockant les images dans un dossier en mettant un chemin d’accès ? je ne connais pas les possibilité)
Par la suite lexique doit servir a alimenter mon userform_creation qui doit récupérer les nom des outils dans la list box1 et afficher l'image associé dans la visionneuse (image1)
La ou je ne voie pas comment organiser la feuille c'est pour les autres listbox de l'userform qui doivent proposer en cascade selon la selection de la list box précédente
Un même nom d'outils peut avoir une dizaine de longueur différentes (en cm ou Mètres) autant en valeur de charge (CMU) en kilo et tones , autant en lieux de stockage (dec,lir,placard commun, placard équipe...) et appartenance ( equipe A,B,C, personel jours.....)
E:
Listboxx1 choix de l 'utilisateur "élingue plate" l'image s’affiche dans "image1" de l'userform
L'istbo2 propose un choix de CMU en kilos ou tones
Listbox3 propose un choix de longueur en cm ou m
Listbo4 propose .... (selon element rentré dans lexique)
si dans
Listboxx1 choix de l 'utilisateur "élingue 4 brins" l'image s’affiche dans "image1" de l'userform
L'istbo2 propose un choix de CMU en kilos ou tones
Listbox3 propose un choix de nombre de brins
Listbox4 propose un choix de longueur en cm ou m
Listbox5 propose .... (selon élément rentré dans lexique)
Merci pour le code il fonctionne très bien pour l'ajout d'image mais pour le positionnement il y a des images qui se positionne légèrement décalée vers la cellule du haut du coup elle prenne le nom de celle au dessus
Déplacez cette ligne de code et mettez là juste en dessous de Set image = .picture.....
image.Name = image.TopLeftCell.Offset(, 1)NB : attention que vos images ne doivent pas dépasser une certaine hauteur. Si elles sont trop grandes excel refusera de les placer dans la cellule. La hauteur max de l'image doit être inférieure à 14 cm.
Pour votre explication du besoin j'avais compris mais depuis le début je vous ai dit que placer des images sur des feuille excel pose souci. Excel n'est pas fait pour cela mais pour faire du calcul.
S'il vous voulez faire tout via une USF, alors il faut revoir tout votre code et ne plus aller mettre vos photos sur vos feuilles mais dans un dossier spécifique et les nommer avant l'utilisation via l'USF.
Je veux créer un lexique avec nom de l outil et ses caractéristique j'ai besoin d'une photo pour que les utilisateur ne confonde pas le nom
Pour l'instant ce que je vous ai proposé fonctionne et s'effectue via un bouton à placer sur votre feuille.
Si vous voulez ensuite afficher l'USF via un click sur l'article cela peut être possible actuellement dans votre fichier
Exemple : double click en colonne B affiche l'USF avec le nom de l'article dans la combo et affiche l'image qui est placée sur votre feuille.
Vous parlez de listbox mais je ne vois pas de listbox dans votre fichier
Essayez de faire manuellement les choses et poser votre projet sans quoi vous n'allez jamais y arriver.
Comme je dis toujours, avant de penser VBA, pensez d'abord à la manière dont vous fonctionnez.
Déplacez cette ligne de code et mettez là juste en dessous de Set image = .picture.....
image.Name = image.TopLeftCell.Offset(, 1)
NB : attention que vos images ne doivent pas dépasser une certaine hauteur. Si elles sont trop grandes excel refusera de les placer dans la cellule. La hauteur max de l'image doit être inférieure à 14 cm.
j'ai déplacé la ligne mais j'ai toujours un décalage de position de l'image par contre le décalage de nom d'image est résolue
Pour votre explication du besoin j'avais compris mais depuis le début je vous ai dit que placer des images sur des feuille excel pose souci. Excel n'est pas fait pour cela mais pour faire du calcul.
Effectivement il serait plus judicieux de placer les photos dans un dossier , excusez-moi .
est il possible d'avoir une fonction qui affiche l'image du dossier lié au nom de l'article ?
Essayez de faire manuellement les choses et poser votre projet sans quoi vous n'allez jamais y arriver.
Comme je dis toujours, avant de penser VBA, pensez d'abord à la manière dont vous fonctionnez.
Merci du conseil ,vous avez raisons j'ai essaye de construire sans fil.
J'ai repris beaucoup dans mon fichier j'ai creer un lexique2 (en attendant de supprimer lexique) pour adapter un code avec image mignature ou liste de nom qui affiche l'image
*j'ai créer un tableau dans la zone paramétrage pour alimenter les liste de choix combobox
mais je bloque je ne n'arrive pas a coder les Combobox pour qu 'elle affiche la liste de choix présente dans le tableau de la feuille parametrage
SUR MON BUREAU J AI CREER UN DOSSIER ( photo fichier outil de levage)
Bonjour,
Désolé mais j'étais absent la semaine passée
j'ai créer un tableau dans la zone paramétrage pour alimenter les liste de choix combobox....
mais je bloque je ne n'arrive pas a coder les Combobox pour qu 'elle affiche la liste de choix présente dans le tableau de la feuille parametrage
Je n'ai pas compris ce que vous voulez faire. Il n'y a rien dans cette feuille à part un tableau structuré vide (ce que vous ne devez jamais avoir d'ailleurs)
Puis la combo de quelle USF --> Dans USF_création ?
NB : Aussi évitez de poster des fichiers qui exécutent des macros à l'ouverture. Cela pourrait mettre le souc dans excel pour celui qui vous répond. Désactivez les au besoin
Bonjour,
Pas de soucis c est moi qui vous remercie de m’aider
Vous avez raison j’ai déconnecté le système de connexion se sera plus facile
Je sais le résultat voulu mais ne connais pas la façon pour y accéder et je galère a expliquer je m’en excuse
Dans la feuille « création-supression » j’ai créé un userform « ajouter un élément » je voudrais que l’utilisateur puisse ajouter une photo via cet userform dans le tableau noir qui me servira de lexique et de base de donnée pour les combox ou listbox de mon userform "creation"
Dans l userform "ajouter element" il y a un Bouton ajouter je voudrais qu il ouvre la fenêtre qui permet de sélectionner la photo sur son pc et l’ajoute au dossier « PHOTO » qui sera lié au fichier excel (je modifierait le chemin d acces)
textbox1 ,l’utilisateur saisie un nom en majuscule qui sera attribué a la photo sélectionner et visible dans "image1" de l userform
Quand l’utilisateur valide l’userform , le nom de la photo s’ajoute au tableau noir colone Dénomination en lien hyper texte (si on clique sur le nom la photo s’affiche dans une fenêtre) ou alors je rajoute une colonne avant le denomination pour afficher une miniature que l’on peut voir agrandi en cliquant dessus
Les autres text box servent a remplir le reste des colonnes du tableau mais ne sont pas liées entre elles (en ouvrant l’userform on peut ajouter juste une CMU ou une longueur …) seul l’ajout de photo doit obligatoirement avoir un NOM en majuscule lié
Les valeurs des textbox iront dans le tableau noir les une en dessous des autres idéalement dans l’ordre d’unité de mesure ou alphabétique pour avoir des listbox bien rangée dans les autres userform
dans l userform "creation" je voudrais que les listbox ou combobx propse les choix de chaque colone du tableau noir
et que dans la combobox denomination le choix fait affiche l image associé au nom
je ne sais pas si le tableau noir qui sert d'index est la meilleure solution c'est la seule que je vois mais je ne connais pas toutes les étendues d'Excel
pour expliquer
certains utilisateurs peuvent ajouter un article avec la photo associée simplement
où ajouter juste une unité de longueur ou de CMU manquante
pour que lorsqu'il attribut à matricule à un nouvel outil
l userform affiche l'image associé et les différentes unité de poids, de longueur....
