XL 2013 Tips Appareil Photo (Image Liée avec cellule)

  • Initiateur de la discussion Initiateur de la discussion PMG
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PMG

XLDnaute Junior
Bonjour le fil, le forum,

Je me permets de partager une petite "astuce" que j'ai trouvé en cherchant à résoudre un problème lié à l'utilisation de l'appareil photo.

En effet, lors de l'utilisation de plusieurs images liées (tableaux en particulier) un problème récurrent de lenteur se fait sentir.
Celui-ci serait dû à la mise à jour intempestive de la liaison, rendant l’exécution de code VBA très lente (je suis passé de 3sec à 13sec environ avec 10 tableaux).

Voici l'une des solutions traduite et expliquée (Source: http://dailydoseofexcel.com/archives/2010/05/12/performance-of-linked-pictures/) avec mes connaissances de newbie:

1/ Gestionnaire de nom
Créer un nom: PicOn
Référence: 1

2/Gestionnaire de nom
Créer un nom: Pic1
Référence: =SI(PicsOn=1;Feuil1!$C$3:$I$10;"")

3/VBA
VB:
Sub TurnOffPictures()
    ThisWorkbook.Names("PicsOn").RefersTo = "0"
End Sub

Code:
Sub TurnOnPictures()
    ThisWorkbook.Names("PicsOn").RefersTo = "1"
End Sub

4/Image
Une fois votre image créer, dans la bar de formule remplacer:
=$C$3:$I$10 par =Pics1

5/Utilisation
Intégré les codes VBA (3) avec des boutons ou ds un code.

En espérant que cela puisse en dépanner certains, car l'utilisation de l'appareil photo est vraiment pratique!
Les remarques, modifications, etc, sont les bienvenus!
PMG

Code:
Sub Pics()
Dim f1 As Worksheet, f2 As Worksheet
Application.ScreenUpdating = False

Set f1 = Sheets("Feuil1")
Set f2 = Sheets("Feuil2")

'Défnition de la zone à copier
f1.Range("C3:I10").Copy
'Collage de la photo
With f2
    .Range("E1").Select
    .Pictures.Paste.Name = "Pics1"
    Application.CutCopyMode = False
End With

With ThisWorkbook
    .Names.Add Name:="PicsOn", RefersTo:="=1"
    .Names.Add Name:="Pics1", RefersToR1C1:= _
        "=IF(PicsOn=1,Feuil1!R3C3:R10C9,"""")"
End With
    f2.Shapes.Range(Array("Pics1")).Select
    Selection.Formula = "=Pics1"
End Sub
 

Pièces jointes

Bonjour,

Débutant à peine ma LV4 vba, je n'ai pas tout compris, mais du coup j'ai procédé comme suit (pour un résultat similaire à ceci
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.
) :

1/ Définition du critère de mise à jour :
Gestionnaire de nom
Créer un nom: PicOn
Référence: =1

2/ vba de mise à jour à l'ouverture de l'onglet (dans module de feuille concernée) :
VB:
Private Sub Worksheet_Activate()

ThisWorkbook.Names("PicsOn").RefersTo = "1" 'active la mise à jour des images liées
ThisWorkbook.Names("PicsOn").RefersTo = "0" 'désactive la mise à jour des images liées

End Sub


3/Création d'une image liée :
Sélectionner une plage
collage spécial/image liée

4/Définition de la référence de l'image :
Gestionnaire de nom
Créer un nom: Pic1
Référence : = SI(PicsOn=1;SI($A$1<>"";INDIRECT($B$1);$Z$1);"")

Sachant que :
- en $A$1 se trouve le critère qui détermine mon image (ex : menu déroulant)
- en $B$1 se trouve l'adresse de mon image de la forme ="'"&DROITE(CELLULE("filename";'feuille1'!$BD22);NBCAR(CELLULE("filename";'feuille1'!$BD22))-CHERCHE("]";CELLULE("filename";'feuille1'!$BD22)))&"'!"&CELLULE("adresse";'feuille1'!$BD22) (pour faire apparaitre dynamiquement le nom de la feuille, ici : 'feuille1'!)
- en $Z$1 se trouve rien du tout (pas même de quadrillage) --> permet d'effacer l'image si le critère est vide (lors de la mise à jour automatique).

5/ Associer la référence à l'image liée
cliquer sur l'image liée
dans la barre de formule taper =Pic1

Attention:
Il m'a fallu d'abord associer l'image avant de redéfinir sa référence comme dit précédemment. Sans quoi j'avais un message d'erreur bloquant ("La référence n'est pas valide").
Ainsi j'ai momentanément créé le nom : Pic1 avec pour ref : =$Z$1
J'ai associé mon image avec Pic1, puis j'ai redéfini la référence de Pic1 dans le gestionnaire de nom.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
77
Réponses
2
Affichages
717
Réponses
2
Affichages
374
Retour