Affecter une image sous conditions

maval

XLDnaute Barbatruc
Bonjour,

Je souhaiterai affecter suivant les conditions une image en ligne 14, si l'objectif est réaliser ou pas en fonction des objectifs de la ligne 9/10, les images étant stockées sur l'onglet nommé "Images" du classeur.

D'avance merci à qui pourra m'aider.

Cordialement

Maval
 

Pièces jointes

  • Affecter image sous conditions.xlsm
    45.2 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Affecter une image sous conditions

Bonjour maval,

A placer dans le code de Feuil1 (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, ecart
Application.ScreenUpdating = False
Me.DrawingObjects.Delete
For Each cel In [B9,D9,F9,I9]
  If cel <> "" And cel(3) <> "" Then
    ecart = IIf(cel.Column = 9, 2000, 1000)
    If cel(3) >= cel Then
      CopieImage 1, cel
    ElseIf cel - cel(3) <= ecart Then
      CopieImage 2, cel
    Else
      CopieImage 3, cel
    End If
  End If
Next
ActiveCell.Activate
[A1].Copy [A1] 'vide le presse-papier
End Sub

Sub CopieImage(n As Byte, cel As Range)
Sheets("Images").DrawingObjects("Image " & n).Copy
Me.Paste
With cel(6)
  Selection.Top = .Top + (.Height - Selection.Height) / 2
  Selection.Left = .Left + (.Resize(, 2).Width - Selection.Width) / 2
End With
End Sub
Fichier .xls joint.

A+
 

Pièces jointes

  • Affecter image sous condition(1).xls
    89.5 KB · Affichages: 42

job75

XLDnaute Barbatruc
Re : Affecter une image sous conditions

Re,

Un peu plus court avec IIf :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, ecart, n As Byte
Application.ScreenUpdating = False
Me.DrawingObjects.Delete
For Each cel In [B9,D9,F9,I9]
  If cel <> "" And cel(3) <> "" Then
    ecart = IIf(cel.Column = 9, 2000, 1000)
    n = IIf(cel(3) >= cel, 1, IIf(cel - cel(3) <= ecart, 2, 3))
    Sheets("Images").DrawingObjects("Image " & n).Copy
    Me.Paste
    With cel(6)
      Selection.Top = .Top + (.Height - Selection.Height) / 2
      Selection.Left = .Left + (.Resize(, 2).Width - Selection.Width) / 2
    End With
  End If
Next
ActiveCell.Activate
[A1].Copy [A1] 'vide le presse-papier
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Affecter image sous condition(2).xls
    90 KB · Affichages: 35
Dernière édition:

job75

XLDnaute Barbatruc
Re : Affecter une image sous conditions

Re,

L'inconvénient de la Worksheet_SelectionChange c'est qu'on ne peut plus faire de Copier/Coller.

Cette Worksheet_Change n'a pas ce problème :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range, ecart, n As Byte
Application.ScreenUpdating = False
Me.DrawingObjects.Delete
For Each cel In [B9,D9,F9,I9]
  If cel <> "" And cel(3) <> "" Then
    ecart = IIf(cel.Column = 9, 2000, 1000)
    n = IIf(cel(3) >= cel, 1, IIf(cel - cel(3) <= ecart, 2, 3))
    Sheets("Images").DrawingObjects("Image " & n).Copy
    Me.Paste
    With cel(6)
      Selection.Top = .Top + (.Height - Selection.Height) / 2
      Selection.Left = .Left + (.Resize(, 2).Width - Selection.Width) / 2
    End With
  End If
Next
ActiveCell.Activate
Application.EnableEvents = False
[A1].Copy [A1] 'vide le presse-papier
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Affecter image sous condition(3).xls
    89.5 KB · Affichages: 37

Papou-net

XLDnaute Barbatruc
Re : Affecter une image sous conditions

Bonjour maval, job75,

Bien que très "à la bourre", comme j'ai fait par une autre méthode je la propose ici.

J'ai créé sur la feuille 1 des contrôles Image (ActiveX) dans lesquelles je charge des images ("Iconex.jpg) en fonction des résultats. Ces images doivent être placées dans le même répertoire que le classeur, sinon il faut mentionner le chemin dans le code.

Par cette méthode, la feuille 2 peut être supprimée.

Au demandeur de choisir.

Cordialement.

Edit : après décompression, les 4 fichiers doivent être transférés dans un même répertoire sur le DD.
 

Pièces jointes

  • maval.zip
    97.1 KB · Affichages: 26
  • maval.zip
    97.1 KB · Affichages: 74
  • maval.zip
    97.1 KB · Affichages: 25
Dernière édition:

Fo_rum

XLDnaute Accro
Re : Affecter une image sous conditions

Bonjour,

pour le fun (et éviter la manipulation d’images) :
en réduisant les macros comme le fait Job:D, j’ arrive à ne plus en avoir.
Quelques formules et une MFC peuvent alléger le fichier.
Papou-net:D, la recherche de fichiers "image" m'a toujours peu inspiré.
 

Pièces jointes

  • IndicateursTricolores.xls
    34 KB · Affichages: 42

Discussions similaires

Réponses
4
Affichages
226

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz