FONCTION RECHERCHE pour IMAGE

Bonjour,

Je voudrais sur un logiciel de fiches techniques qu'en indiquant mon numéro d'article la photo correspondante sur la base de données s'affiche.

Feuille 1 : base de données avec sur chaque ligne un nouvel article et ses caractéristiques (dont Photo)

Feuille 2 : présentation d'une fiche technique où je saisis uniquement mon numéro d'article et toutes les autres données s'affichent automatiquement (formule recherche etc..)

Mais je ne parviens pas à faire afficher sur cette feuille 2 la photo qui correspond au n° d'article, j'ai essayé toutes les formules que j'ai trouvé sur internet mais j'ai toujours un message d'erreur "reference non valide" quand je met le "nom" (=Photographie)

le nom Photographie je l'ai créé de différentes manières :

J'ai essayé avec =decaler (...;equiv(....)

J'ai essayé avec =indirect(recherchev...

J'ai insérer un cadre grace à l'outil "photo" que j'ai rajouté du ruban

Je ne comprends pas pourquoi j'ai toujours ce message d'erreur

J'espère vraiment que quelqu'un pourra m'aider,

Merci d'avance

Bonjour,

A ma connaissance, il n'est pas possible de le faire avec une fonction tout simplement parce qu'une fonction retourne une valeur ou un tableau de valeurs mais n'exécute aucune action !

Voici un code qui permet de copier/coller une image d'une feuille à une autre :

Sub CopierCollerImage()

    Dim Fe1 As Worksheet
    Dim Fe2 As Worksheet
    Dim S As Shape

    'adapter les noms des feuilles
    Set Fe1 = Worksheets("Feuil1")
    Set Fe2 = Worksheets("Feuil2")

    On Error Resume Next
    Fe2.Shapes("Image").Delete
    On Error GoTo 0

    Fe1.Shapes("Image 1").Copy 'adapter le nom de l'image
    Fe2.Range("B15").PasteSpecial 'adapter la cellule cible
    Set S = Fe2.Shapes(1)
    S.Name = "Image"
    Fe2.Range("A1").Select

End Sub

Bonjour,

>A ma connaissance, il n'est pas possible de le faire avec une fonction tout simplement parce qu'une fonction retourne une valeur ou un tableau de valeurs mais n'exécute aucune action !

Sauf pour les shapes et les commentaires: on peut créer des shapes ou des commentaires, les modifier par une fonction.

Ceuzin

187indic2.zip (16.50 Ko)

bonjour

voila comment

https://www.youtube.com/watch?v=0ls-09BMh2U

valable aussi pour theze

sinon pour les ancienne versions d'exel c'est a peut près la meme mais en faisant un copier/coller de la 1ere cel de la colonne d'images

cordialement

Autant pour moi !

re

ya pas mort d'homme

n'importe comment si le fichier a (environ) 50 images ou photo ;il va vite peser 2 tonnes donc obligatoirement on en reviendra a une soluce VBA

de plus il faut savoir que le dimensionnement est " galere" et qu'il ne faut pas oublier de cocher "deplacer et........" a format de l'objet

crois -moi tout n'est pas encore ficelé (wait and see)

mais c'est pratique pour qques bricoles

a savoir : la formule INDIRECT ....... est pipeau ; on a la meme resultat avec DECALER ( la cel de la 1er image ; equiv ( laquestion..........))

cordialement

Bonjour,

Alors je reviens sur ce que j'ai dis dans mon second post pour confirmer ce que j'ai dis dans mon premier, une fonction ne peut pas exécuter d'action mais elle ne peut que retourner une ou des valeurs.

Je n'avais pas visionné la vidéo jusqu'au bout mais on voit bien que c'est la formule utilisée dans l'appareil photo qui passe la valeur à l'argument demandé par l'objet (l'appareil photo lui même).

Un exemple sans l'appareil photo mais issu du code de mon premier post avec l'évènement Change de la feuille "Feuil2" :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim FeBDD As Worksheet
    Dim Fe2 As Worksheet
    Dim S As Shape
    Dim NomImg As String

    If Target.Address(0, 0) <> "A2" Then Exit Sub

    'adapter les noms des feuilles
    Set FeBDD = Worksheets("BDD")
    Set Fe2 = Worksheets("Feuil2")

    NomImg = Application.WorksheetFunction.VLookup(Target.Value, FeBDD.Range("A1:D4"), 4, False)

    If NomImg = "" Then Exit Sub

    On Error Resume Next
    Fe2.Shapes("Image").Delete
    On Error GoTo 0

    FeBDD.Shapes(NomImg).Copy
    Fe2.Range("C2").PasteSpecial
    Set S = Fe2.Shapes(1)
    S.Name = "Image"
    Fe2.Range("A2").Select

End Sub

Pour récupérer le nom de l'image, une RECHERCHEV (VLookup) et une liste de validation ayant la formule "=Clients" qui est le nom donné à ma plage de client en feuille "BDD" (ici pour le test A1:A4)

Je poste le classeur pour l'exemple.

Il serait possible de croire qu'une fonction pourrait exécuter une action si elle appelle un MsgBox car elle affiche la boite de message mais en fait, MsgBox est aussi une fonction particulière qui retourne une valeur, en voici la preuve :

Sub Test()

    MsgBox QuelRetour

End Sub

Function QuelRetour()

    QuelRetour = MsgBox("C'est un test pour savoir si une valeur est retournée !")

End Function
157test-images.zip (172.85 Ko)

Bonjour,

Je suis pas très forte avec excel, et j'ai essayé de faire comme dans la vidéo ( je l'avais déjà trouvée ) mais ca me met quand meme un message d'erreur

et ces codes je ne sais pas du tout comment on les utlise??

Rebonjour,

Je vous joins le fichier, je voudrais que pour toutes les références de la base de données du 2eme onglet, la photo qui correspond se mette sur le 3eme onglet de la meme manière que les données,

Cordialement,

Amandine

bonjour

un essai ....

293domelopa.xlsx (164.82 Ko)

cordialement

Bonjour,

Merci beaucoup !! c'est exactement ce qu'il me fallait...

J'y ai passé des heures.. on n'est pas tous égaux et c'est très gentil à vous de faire partager vos connaissances !

Bonjour,

Cela marchait très bien mais maintenant que j'ai trié toutes les lignes par ordre croissant, la photo ne fonctionne que pour les premiers enregistrements, après cela bug (cela ne met pas à jour la photo et si j'actualise la formule sur le "cadre photo", le =photo, cela bug aussi) y a t il une limite de ligne pour la fonction?

Merci de votre aide

bonjour

1)tu n'auras pas bien dimensionné ni situé ta plage ;ni paramtré le dept

2)suite a un tri les "shapes " auront eu du mal a suivre ........

regarde quand meme la soluce Vba de Ceuzin

cordialement

Bonjour,

quelle soluce je dois regarder?

Merci

Bonjour,

je crois avoir trouvé d'où venait l'erreur

la formule est :

=DECALER(dept;EQUIV('Fiche Technique surgelé'!$J$7;article;0)-1;)

dept est :

='BASE DE DONNEES'!$CC$3

et article est :

=DECALER('BASE DE DONNEES'!$A$3:$A$502;;;NB('BASE DE DONNEES'!$A$3:$A$502)-1)

seulement ce dernier (article) quand je clique dessus il me met en sélection les 29 premières lignes de la colonne A

c'est à dire les seules lignes pour lesquelles la formule fonctionne et la photo s'affiche correctement,

Pourtant j'ai changé la formule en mettant bien de A3 à A502 et ca met toujours en sélection que les 29 première ligne,

Quelqu'un aurait la solution?

Merci d'avance,

Rechercher des sujets similaires à "fonction recherche image"