Microsoft 365 Image : pourvoir afficher la même image dans tous mes onglet

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle fin de journée :)

J'ai un nouveau problème que je n'arrive pas à solutionner malgré mes recherches et tentatives :mad:
Dans le classeur joint, j'ai une image en Feuil1 (il pourra y en avoir 25) et j'ai un p'tit code qui me permet d'afficher ou de masquer.

Ce que je voudrais (pour ne pas avoir à multiplier les images dans tous les onglets),
Pour chaque fichier de travail,"ma z'usine à gaz" lol, j'ai environ 25 clients traités : 1 photo par Client = 25 photos instructions
que j'ai besoin de pouvoir afficher/masquer dans 3 onglets = 75 photos si obligé de les mettre dans les 3 onglets
:

Est-il possible d'afficher la même image dans tous mes onglets ? ... pas sûr du tout !!! lol
Peut-être en stockant je ne sais où, mais accessible pour tous les onglets ?
ça m'arrangerait bien :)
Auriez-vous la solution ?
Un grand merci par avance,
Amicalement,
lionel :)
 

Pièces jointes

  • Image_Affiche_TsOnglets.xlsm
    224.5 KB · Affichages: 27
Dernière édition:
Solution
En affectant la macro Supprimer à l'image il suffit de cliquer dessus pour la supprimer, fichier (2) :
VB:
Sub Image_Clients1()
Dim c As Range, lig&, s As Shape
Set c = ActiveCell
lig = c.Row
For Each s In ActiveSheet.Shapes
    If s.Name Like "Client*" Then s.Delete
Next
If Not IsNumeric(CStr(Cells(lig, "J"))) Or lig < 7 Then Exit Sub
On Error Resume Next
Sheets("Images").Shapes("Client " & Cells(lig, "J")).Copy
If Err Then MsgBox "L'image " & Cells(lig, "J") & " n'existe pas...": Exit Sub
Cells(lig, "K").Select 'ou ailleurs...
ActiveSheet.Paste
Selection.OnAction = "Supprimer" 'affecte la macro Supprimer
c.Select 'désélectionne l'image
End Sub

Sub Supprimer()
On Error Resume Next
ActiveSheet.Shapes(Application.Caller).Delete
End...

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir _Thierry,

Merci pour m'avoir répondu et pour ton fichier.
J'ai testé, mais j'en suis désolé, ça ne peut pas correspondre à mon besoin.
Il est très important que les photos soient stockées dans le fichier de travail.
"Je ne sais où dans le fichier, mais accessibles pour tous les onglets".
Mais je garde ta proposition que m'intéresse :)
Merci à toi,
lionel,
 

job75

XLDnaute Barbatruc
Bonsoir Lionel, _Thierry,

Teste le fichier joint avec ce code dans ThisWorkbook :
VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Not Target(1) Like "##" Then Exit Sub
Sh.DrawingObjects.Delete 'RAZ
On Error Resume Next
Sheets("Images").Shapes("Image" & Target(1)).Copy
Application.Goto Sh.[C5] 'ou ailleurs...
If Err Then MsgBox "L'image " & Target(1) & " n'existe pas...": Exit Sub
Sh.Paste
ActiveCell.Activate 'désélectionne l'image
End Sub
Bonne nuit.
 

Pièces jointes

  • Image_Affiche_TsOnglets(1).xlsm
    217.2 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, _Thierry, le Forum,
Bonne journée à toutes et à tous :)
@Gérard,
je ne suis pas revenu sur le fil car après analyse, ton fichier qui fonctionne super bien ne peut pas être intégré à mon fichier de travail et c'est, encore une fois de ma faute :mad:

En effet, pour que ce soit adapté, il aurait fallu que je fasse un fichier test exactement mon fichier de travail et comme c'est toujours long à faire, par manque de temps, je ne l'avais pas fait !

Je suis en train de le faire et je reviens dès que c'est prêt :)
(Je garde précieusement ton fichier dans ma bibliothèque "Gérard")
@plus :)
lionel,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, _Thierry, le Forum,

J'ai pu terminer le fichier test pour mon besoin.
Voici comment j'ai besoin que ça fonctionne ...
Dans l'onglet "Images', chaque image est nommée comme suit : "Client + le n° du Client"

en Feuille "SuivisAppels"
au 1er clic sur le bouton "CaCh"
Pas de photo affichée
si la ligne active contient le n° 1 en colonne "J", la photo "Client 1" est crée et s'affiche
si la ligne active contient le n° 5 en colonne "J", la photo "Client 5" est crée et s'affiche etc...

au second clic sur le bouton "CaCh"
1 photo affichée
la photo affichée est "supprimée et ...
si la ligne active contient le n° 1 en colonne "J", la photo "Client 1" est crée et s'affiche
si la ligne active contient le n° 5 en colonne "J", la photo "Client 5" est crée et s'affiche etc...

je continue à chercher pour faire le bon code ... mais pas certain de pouvoir le faire.

Je joins le fichier test,
Avec mes remerciements,
Je vous souhaite une belle journée à toutes et à tous,
Amicalement,
lionel :)
 

Pièces jointes

  • Image_Affiche_TsOngletsM_forum.xlsm
    633.2 KB · Affichages: 3
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel,

Pas bien difficile d'adapter la macro du post #5 :
VB:
Sub Image_Clients1()
Dim c As Range, lig&, s As Shape
Set c = ActiveCell
lig = c.Row
For Each s In ActiveSheet.Shapes
    If s.Name Like "Client*" Then s.Delete
Next
If Not IsNumeric(CStr(Cells(lig, "J"))) Or lig < 7 Then Exit Sub
On Error Resume Next
Sheets("Images").Shapes("Client " & Cells(lig, "J")).Copy
If Err Then MsgBox "L'image " & Cells(lig, "J") & " n'existe pas...": Exit Sub
Cells(lig, "K").Select 'ou ailleurs...
ActiveSheet.Paste
c.Select 'désélectionne l'image
End Sub
A+
 

Pièces jointes

  • Image_Affiche_TsOngletsM_forum(1).xlsm
    634.3 KB · Affichages: 9

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
Vraiment super et je n'aurais pas été capable de le faire :)
Encore un autre "GRAND MERCI"
C'est nickel comme d'hab,
Merci_Gerard2.gif
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
Ca fonctionne super bien !
Je reviens pour une dernière"p'tite" amélioration :)

Tu l'as compris, afficher l'image du client traité (ligne active) permet de voir le "Cahier des charges" et donc permet de l'avoir sous les yeux sans avoir à consulter les documents papier et la, ça devient très très pratique et rapide :)

Toutefois,quand on a plus besoin de l'afficher, je voudrais qu'on puisse détruire l'image sans en créer forcément une autre.

En partant de ton code, j'ai fait ceci :
VB:
Sub Supprimer_Images()
Application.ScreenUpdating = False
Dim c As Range, s As Shape
For Each s In ActiveSheet.Shapes
    If s.Name Like "Client*" Then s.Delete
Next
Application.ScreenUpdating = True
End Sub
Plaggia lol
Mais ça m'oblige à créer un autre bouton (y'en a déjà bcp dans la feuille) et j'aimerais :
que si une l'image est déjà affichée et si clic une seconde fois sur le bouton "CaCh", "si je suis toujours sur la même ligne active", que l'image soit détruite sans la création d'une autre.
Cela me permettrait de tout faire avec un seul bouton.

Je cherche comment faire mais, la aussi ... pas sur que je sois capable de le coder.
Un dernier coup de "doigts" ?
Merci Gérard :)
Si je trouve avant (lol ça m'étonnerait), je te dirai,
lionel,
 

Discussions similaires

Statistiques des forums

Discussions
312 185
Messages
2 086 016
Membres
103 093
dernier inscrit
Molinari