XL 2021 Recherche solution pour actualiser automatiquement un code VBA

  • Initiateur de la discussion Initiateur de la discussion riton00
  • 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 !

riton00

XLDnaute Impliqué
Bonsoir au forum

Je cherche une solution permettant à l'icône "image" d'apparaître automatiquement dans la colonne E lorsque je change de date.

Actuellement, pour effectuer cette action, je dois cliquer sur la cellule correspondante dans la colonne D (par exemple, D7), puis cliquer sur la barre de formule, et enfin appuyer sur Entrée pour faire apparaître l'icône.

Slts
 

Pièces jointes

Solution
Bonjour.
Voilà :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim Shp As Shape
   If Target.Column = 3 And Target.CountLarge = 1 Then
       '-- suppression
      For Each Shp In Me.Shapes
         If Shp.TopLeftCell.Address = Target.Offset(0, 2).Address Then Shp.Delete: Exit For
         Next Shp
      If Target.Offset(, 1).Value <> "" Then
         Feuil5.Shapes(Target.Offset(, 1).Value).Copy
         Target.Offset(0, 2).Select
         Me.Paste
         CadrerShape Selection.ShapeRange(1), Target.Offset(, 2)
         Target.Select
         End If
      End If
   End Sub
Private Sub CadrerShape(ByVal Shp As Shape, ByVal Rng As Range)
   Shp.Left = Rng.Left + (Rng.Width - Shp.Width) / 2
   Shp.Top = Rng.Top...
Bonjour.
Voilà :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim Shp As Shape
   If Target.Column = 3 And Target.CountLarge = 1 Then
       '-- suppression
      For Each Shp In Me.Shapes
         If Shp.TopLeftCell.Address = Target.Offset(0, 2).Address Then Shp.Delete: Exit For
         Next Shp
      If Target.Offset(, 1).Value <> "" Then
         Feuil5.Shapes(Target.Offset(, 1).Value).Copy
         Target.Offset(0, 2).Select
         Me.Paste
         CadrerShape Selection.ShapeRange(1), Target.Offset(, 2)
         Target.Select
         End If
      End If
   End Sub
Private Sub CadrerShape(ByVal Shp As Shape, ByVal Rng As Range)
   Shp.Left = Rng.Left + (Rng.Width - Shp.Width) / 2
   Shp.Top = Rng.Top + (Rng.Height - Shp.Height) / 2
   End Sub
 
Bonjour à tous, pour info
@Dranreb , ta solution sur mon excel se plante fréquemment en erreur 1004 sur le Me.paste ( mais pas en pas à pas ) .
J'ai réussi à le résoudre en mettant le paste juste après le copy
1742996482296.png

VB:
        If Target.Offset(, 1).Value <> "" Then
            Target.Offset(0, 2).Select
            Feuil5.Shapes(Target.Offset(, 1).Value).Copy
            Me.Paste
            CadrerShape Selection.ShapeRange(1), Target.Offset(, 2)
            Target.Select
        End If
 
- 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

Retour