Faire apparaitre des photos dans une feuil
RésoluBonjour
Dans le fichier joint les explications de mes besoins
j'ai tenté =Recherchv mais cela ne fonctionne pas
https://www.cjoint.com/c/NKBkLW6triQ
Merci pour votre aide
Commence par faire le nécessaire ,puis fait ce qu'il est possible de faire et tu réaliseras l'impossible sans t'en apercevoir. Saint François d'Assise
9 réponses
Le besoin est d'automatiser l’intégration d'images dans le classement général sans que la fonction RECHERCHEV ne fonctionne sur le fichier fourni. Des macros VBA proposées copient les images depuis la feuille Photos vers le Classement Général en s’appuyant sur une correspondance de lignes, avec une version qui supprime certaines formes et une autre qui prévoit un traitement “podium” pour N3, L4 et P4. Une approche alternative pour Excel 365 consiste à placer les images dans les cellules et à utiliser RECHERCHEV pour récupérer les données associées, évitant la gestion des formes. D’autres échanges évoquent des erreurs de syntaxe, corrigées par des ajustements de sélection, et des demandes de partage du classeur présentant le résultat attendu.
-
Bonjour,
L'intérêt d'un forum est le partage des connaissances. les messages privés doivent rester exceptionnels.
récupère ton fichier et on en reparle
https://www.cjoint.com/c/NKBpOtfkHQF
-
Bonjour,
J'ai écrit la macro "Logos" (module "Daniel) :
Sub logos() Dim C As Range, Ligne As Variant, Sh As Shape Application.ScreenUpdating = False With Sheets("Classement Général") For Each Sh In .Shapes If Sh.TopLeftCell.Column = 6 Then Sh.Delete End If Next Sh For Each C In .Range("G3", .Cells(.Rows.Count, 7).End(xlUp)) Ligne = Application.Match(C, [photos!B:B], 0) If IsNumeric(Ligne) Then With Sheets("Photos") For Each Sh In .Shapes If Sh.TopLeftCell.Row = Ligne Then .Select Sh.Select Selection.Copy Sheets("Classement Général").Select C.Offset(, -1).Select ActiveSheet.Paste Selection.Top = Selection.Top + 10 Selection.Left = Selection.Left + 22 Exit For End If Next Sh End With End If Next C End With Application.ScreenUpdating = True End SubFichier :
https://www.cjoint.com/c/NKCqDEhEQU4
Tu peux l'intégrer au bouton "Mettre à jour le classement général.
Daniel
-
-
-
@JCB40
Bonjour à tous,
Essaie :
Sub logos() Dim C As Range, Ligne As Variant, Sh As Shape Application.ScreenUpdating = False With Sheets("Classement Général") For Each Sh In .Shapes If Sh.TopLeftCell.Column = 6 Then Sh.Delete ElseIf Sh.TopLeftCell.Address = "$N$3" Or _ Sh.TopLeftCell.Address = "$L$4" Or _ Sh.TopLeftCell.Address = "$P$4" Then Sh.Delete End If Next Sh For Each C In .Range("G3", .Cells(.Rows.Count, 7).End(xlUp)) Ligne = Application.Match(C, [photos!B:B], 0) If IsNumeric(Ligne) Then With Sheets("Photos") For Each Sh In .Shapes If Sh.TopLeftCell.Row = Ligne Then .Select Sh.Select Selection.Copy Sheets("Classement Général").Select C.Offset(, -1).Select ActiveSheet.Paste Selection.Top = Selection.Top + 10 Selection.Left = Selection.Left + 22 Exit For End If Next Sh End With End If Next C 'podium For Each C In Range("N3,L4,P4") Ligne = Application.Match(C, [photos!B:B], 0) If IsNumeric(Ligne) Then With Sheets("Photos") For Each Sh In .Shapes If Sh.TopLeftCell.Row = Ligne Then .Select Sh.Select Selection.Copy Sheets("Classement Général").Select C.Select ActiveSheet.Paste Selection.Width = C.Width + C.Offset(, 1).Width Selection.Left = (C.Width + C.Offset(, 1).Width - Selection.Width) / 2 + _ C.Left + 1 Exit For End If Next Sh End With End If Next C End With Application.ScreenUpdating = True End Subhttps://www.cjoint.com/c/NKDkJy66sx4
Daniel
-
-
@JCB40
Je ne comprends pas ce que tu m'envoies. Ca fonctionne dans le classeur que je t'ai envoyé. Fais-moi parvenir le classeur qui donne ce résultat.
Daniel
-
-
Modérateur
Bonjour,
Il est toujours meilleur de donner dès le dépaart les informations sur le forum dans la question. Je les reprends ci-après.
Bonjour
Dans cette feuille je cherche à récupérer dans la feuille2
les images qui correspondent aux noms qui sont en colonne H
Merci pour votre aide
-
Bonjour,
Voir par exemple là?
https://www.bonbache.fr/extraire-les-images-d-une-recherche-par-calculs-excel-282.html -
-
@brucine
Au passage, la syntaxe de RECHERCHEV n'est pas bonne, elle devrait être:
=RECHERCHEV(H2;Feuil2!$A$1:$B$4;2;FAUX)
Cette fois-ci elle ne me rend plus #REF! mais 0 parce que le cellule de destination n'est pas du texte et/ou verrouillée. -
@brucine
Bonjour brucine
Merci pour ta réponse
Trop compliqué à mettre en place pour mon petit niveau de bureautique
Crdlt
-
@brucine
pour l'erreur de syntaxe il s'agit d'une banale faute de sélection
-
-
Bonjour,
Avec Excel 365, il suffit de mettre les images dans la cellule :
Après, on utilise RECHERCHEV :
(Image dans le message suivant)
https://www.cjoint.com/c/NKBnn3KUpy4
Daniel
-
... Par contre, ça m'intéresserait de savoir pourquoi je ne peux pas sélectionner les images.
Daniel
-
-
@JCB40
Bonjour,
"Ta formule ne fonctionne pas avec office 2021"
Non, en effet, c'est une nouveauté Excel 365.
"je ne comprend pas que tu ne puisses pas avoir ces images"
Je les vois. Je ne peux pas les sélectionner pour les déplacer, par exemple. Ni avec Excel 365, ni avec Excel 2010. J'essaierai plus tard de redémarrer Windows...
Par contre, je peux le faire avec une macro ?
Daniel
-
-
Outre la solution avec Excel 365 et celle proposée par brucine au message 2, à ma connaissance, il n'y a qu'une solution par macro. Si tu es intéressé, dis-le.
Daniel
-
bonsoir,
Il n'y a pas que le VBA, mais plusieurs possibilités par formule
avec
=INDIRECT(RECHERCHEV(Feuil1!$H$2;Feuil2!$A$1:$C$6;2;0))
=DECALER(Feuil2!$B$1;EQUIV(Feuil1!$H$2;Feuil2!$A$1:$A$4;0)-1;)
=DECALER(Feuil2!$B$1;LIGNE(INDEX(Feuil2!$A$1:$A$4;EQUIV(Décaler!$H$2;Feuil2!$A$1:$A$4;0);1))-7;)
Un exemple avec recherchev
https://www.cjoint.com/c/NKBrC2G57OF
-
Je joins mon fichier original
ce que je souhaite c'est mettre dans la colonne "logos" feuille Classement Général
la photo du logo correspondant au nom ,c'est photos se trouvent dans la feuille Photos.
Il faut bien sur que ces photos suivent le nom lors de la mise à jour du classement
Merci pour votre aide
https://www.cjoint.com/c/NKCmCADSzyQ
-
Re,
Je t'ai créé les conditions pour les ligne 3, 4, 5 et 6, à toi de jouer
https://www.cjoint.com/c/NKCq2G0hseF

