Excel Vba

Salut à tous.

 

Un petit moment d'absence mais je reviendrai bientôt! =)

 

J'ai un petit souis avec une macro excel.

Je sais qu'ici il y a des pros ^^ (@Lucas) :p

ça ne concerne pas trop le dessin à proprement dis, mais ça reste de la technique.

 

J'aimerai taper dans une colonne un code article, pour que dans la colonne d'à côté s'affiche une image associé au texte de gauche.

 

J'ai trouvé une macro VBA qui permet de faire çela via une bibliothéque de photos qui se trouve dans le même dossier que le classeur excel.

 

Mais bon, la mise en page n'allait pas, j'ai donc modifié un peu le code, mais je ne m'en sort pas.

 

 

 

 

 

 

2 « J'aime »

Le voici :

 

Option Explicit


Sub Affiche_Image()
Dim Ws As Worksheet                   ' Sert à manipuler plus facilement l'objet feuille
Dim Image As String                   ' Contiendra le nom de l'image
Dim Lg As Long                        ' Numéro de la dernière ligne colonne B

  Set Ws = Sheets("Bon de commande")                                           ' Nom de la feuille

  Application.ScreenUpdating = False                                  ' Interdit le raffraîchissement d'écran
 
  Efface_Images
 
  With Ws
 
    For Lg = 2 To .Range("B65536").End(xlUp).Row                      ' Parcourt de toute la colonne B
    
      Image = ThisWorkbook.Path & "\Catalogue\" & .Cells(Lg, "A")        ' Répertoire à actualiser
        
      On Error Resume Next                                            ' On s'affranchit des erreurs
      With .Pictures.Insert(Image).ShapeRange                         ' On insère l'image dont le nom est en colonne B 

2 « J'aime »

        .LockAspectRatio = msoFalse                                   ' On peut la redimmensionner comme on veut
        .Left = Ws.Cells(Lg, "B").Left                                ' Position gauche
        .Top = Ws.Cells(Lg, "B").Top                                  ' Position Haut
        .Width = Ws.Cells(Lg, "B").Width                              ' Largeur
        .Height = Ws.Cells(Lg, "B").Height                            ' hauteur
      End With
      If Err.Number > 0 Then                                          ' Si une erreur (image non présente)
        MsgBox .Cells(Lg, "A") & vbCr & "Image inexistante"           ' On le signale
      End If
    Next Lg
  End With
End Sub


Sub Efface_Images()
Dim Ws As Worksheet                   ' Sert à manipuler plus facilement l'objet feuille
Dim Sh As Shape                       ' Sert à manipuler les formes (images) déjà affichées

  Set Ws = Sheets("Bon de commande")                                           ' Nom de la feuille

  With Ws
 
    For Each Sh In .Shapes                                            ' Parcourt de toute la collection formes (images)
      If Not Intersect(.Columns(1), Sh.TopLeftCell) Is Nothing Then   ' si elle est dans la colonne 1
        Sh.Delete                                                     ' On l'efface
      End If
    Next Sh
  End With
 
End Sub

 

2 « J'aime »

Désolé, ça ressemble un peu à du "flood"...

 

Donc en résumé, j'ai une colonne "A" ou je met le numéro d'article (en commencant par la ligne 2)

 

Et en colonne "B" L'image correspondant au numéro d'article s'affiche quand je clique sur le bouton (il y à 2 boutons avec la macro, un pour afficher les images un pour effacer)

2 « J'aime »

Bon ba en faite.....

 

Post à la ... J'ai trouvé tout seul comme un grand :p

 

Je pense qu'il peut être éffacé.

 

Bonne journée à vous!

3 « J'aime »

Donne nous la marche a suivre via un mini tuto si possible

ca peut le cas échéant servir a d'autre

merci @ + ;-)

1 « J'aime »