XL 2013 Réduire un code

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

maval

XLDnaute Barbatruc
Bonjour

Voila j'ai un code pour afficher des images en fonction du nom qui se trouve sur le label correspondant tous ceci fonctionne très bien mais j'aimerai si possible réduire le code ou le rendre plus propre pour éviter répéter le code 4 fois ?
Voici mon code

Code:
    ' Image Acteur Principal
    Image1.Visible = True
       nom = Me.Label426
       répertoire = "J:\Acteur\"
   If Dir(répertoire & nom & ".jpg") <> "" Then
       Me.Image1.Picture = LoadPicture(répertoire & nom & ".jpg") 
   Else
       Me.Image1.Picture = LoadPicture
  End If

    ' Image Second Acteur
    Image2.Visible = True
       nom = Me.Label427
       répertoire = "J:\Acteur\"
   If Dir(répertoire & nom & ".jpg") <> "" Then
       Me.Image2.Picture = LoadPicture(répertoire & nom & ".jpg") 
   Else
       Me.Image2.Picture = LoadPicture
  End If

    ' Image Troisième Acteur
    Image3.Visible = True
       nom = Me.Label428
       répertoire = "J:\Acteur\"
   If Dir(répertoire & nom & ".jpg") <> "" Then
       Me.Image3.Picture = LoadPicture(répertoire & nom & ".jpg") 
   Else
       Me.Image3.Picture = LoadPicture
  End If

    ' Image réalisateur
    Image4.Visible = True
       nom = Me.TextBox12
       répertoire = "J:\Réalisateur\"
   If Dir(répertoire & nom & ".jpg") <> "" Then
       Me.Image4.Picture = LoadPicture(répertoire & nom & ".jpg")
   Else
       Me.Image4.Picture = LoadPicture
  End If

Je vous remercie d'avance
 
Re : Réduire un code

Bonjour Max

Je ne vois pas trop l'intérêt de le faire 😕. Ton code n'est pas si long.

Sinon, si tu veux vraiment le faire alors il faudra passer par un array et faire une boucle for i= 1 to 4 ... Next, mais là, cela va être plus compliqué à trouver la bonne syntaxe.
 
Re : Réduire un code

Bonjour Maval, Bonjour Michel, 🙂

ça n'a en effet rien d'indispensable, mais si tu y tiens

Code:
For i = 1 To 4        
Me.Controls("Image" & i).Visible = True
        nom = Me.Controls("Label" & 425 + i).Caption
        répertoire = "J:\Acteur\"
        If Dir(répertoire & nom & ".jpg") <> "" Then
            Me.Controls("Image" & i).Picture = LoadPicture(répertoire & nom & ".jpg")
        Else
            Me.Controls("Image" & i).Picture = LoadPicture
        End If
    Next i
 
Re : Réduire un code

Bonjour.

Personnellement je préfèrerais:
VB:
AffImage Image1, "J:\Acteur\", Me.Label426.Caption
AffImage Image2, "J:\Acteur\", Me.Label427.Caption
AffImage Image3, "J:\Acteur\", Me.Label428.Caption
AffImage Image4, "J:\Réalisateur\", Me.TextBox12.Text
' …
End Sub

Sub AffImage(ByVal Img As MSForms.Image, ByVal Rép As String, ByVal NomFic As String)
Img.Visible = True
If Dir(Rép & NomFic & ".jpg") <> "" Then
   Img.Picture = LoadPicture(Rép & NomFic & ".jpg")
Else
   Img.Picture = LoadPicture: End If
End Sub
 
Re : Réduire un code

je l'aurais mis ByRef instinctivement
Je comprend un peu ça.
Mais dans le cas d'un objet, l'attribut s'applique en quelque sorte au pointeur vers les emplacements mémoire contenant l'objet.
Ça ne change donc rien à l'accessibilité de l'objet, simplement avec ByVal un Set qui serait fait dessus dans la procédure ne réinitialiserait pas l'objet qui lui à été passé en paramètre par la procédure appelante.

C'est d'ailleurs pour ça que dans une Worksheet_Change Target est passé ByVal.
Vous pouvez refaire un Set dessus de taille différente si ça vous arrange, c'est juste un variable locale initialisée par la procédure appelante, et non l'adresse d'une variable externe.
 
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

Réponses
3
Affichages
599
  • Question Question
Microsoft 365 VBA insert photos
Réponses
12
Affichages
795
Réponses
1
Affichages
465
Compte Supprimé 979
C
Réponses
0
Affichages
538
Retour