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

32log-desactie.zip (295.42 Ko)

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 Sub

Merci 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 possiblemais je ne sais pas le faire

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

29log-desactie2.zip (301.71 Ko)

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.

presse papier02

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 :

presse papier02

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 Sub

Avec 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 Sub

2. 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

decalage

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)

j'ai créer un tableau dans la zone paramétrage pour alimenter les liste de choix combobox

finalement suite a un bug j ai changé le tableau de place il est dans la feuille creation/supression il s appelle "T_Noir"

screenshot 2023 05 17 02 50 15 571 com microsoft office excel

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....

85creation-photo.xlsm (136.08 Ko)
Rechercher des sujets similaires à "creation liaison photos combobox"