Image qui change en fonction du contenu de la cellule active
Résolu
Woochi
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Woochi Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Woochi Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je voudrait faire un code vba qui permet de changer une image en fonction du contenu de la cellule active.
J'ai réussit à rédiger le code ci-dessous (en l'adaptant d'un code trouvé sur internet).
L'image est en background d'un objet-forme.
1/ J'ai un problème sur la sélection de l'objet-forme.
Lorsque je clic sur une cellule contenant le "texte1" par exemple, l'objet-forme se sélectionne automatiquement et je voudrait éviter cela car je voudrait que ma cellule active reste sélectionnée.
2/ Dans le code que j'ai trouvé il y avait "Application.ScreenUpdating = False" mais je ne sait pas si il est bien utile, ni à quoi il sert, car le code fonctionne sans... Est-ce que je doit le gardé ?
3/ C'est la seul méthode que j'ai trouvé pour faire changer une image en fonction d'un contenu de cellule. Mais si il existe une autre méthode plus simple pour arrivé à faire ce genre de chose, je suis preneur.
merci d'avance pour vos réponses.
J'ai réussit à rédiger le code ci-dessous (en l'adaptant d'un code trouvé sur internet).
L'image est en background d'un objet-forme.
1/ J'ai un problème sur la sélection de l'objet-forme.
Lorsque je clic sur une cellule contenant le "texte1" par exemple, l'objet-forme se sélectionne automatiquement et je voudrait éviter cela car je voudrait que ma cellule active reste sélectionnée.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Déclaration de la variable qui contient le chemin des images
Dim PathDossierImage As String
PathDossierImage = "C:\images\"
If Target.Cells.Count > 1 Then Exit Sub
' Application.ScreenUpdating = False
' Réinitialise en blanc la conteneur de l'image
' Condition de la ellule active
If ActiveCell.Value Like "*texte1*" Then
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Select
With Selection.ShapeRange.Fill
.UserPicture _
PathDossierImage & "1.png"
End With
End If
If ActiveCell.Value Like "*texte2*" Then
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Select
With Selection.ShapeRange.Fill
.UserPicture _
PathDossierImage & "2.png"
End With
End If
' Application.ScreenUpdating = True
End Sub
2/ Dans le code que j'ai trouvé il y avait "Application.ScreenUpdating = False" mais je ne sait pas si il est bien utile, ni à quoi il sert, car le code fonctionne sans... Est-ce que je doit le gardé ?
3/ C'est la seul méthode que j'ai trouvé pour faire changer une image en fonction d'un contenu de cellule. Mais si il existe une autre méthode plus simple pour arrivé à faire ce genre de chose, je suis preneur.
merci d'avance pour vos réponses.
A voir également:
- Image qui change en fonction du contenu de la cellule active
- Fonction si et - Guide
- Changer de dns - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Image iso - Guide
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image - Forum Excel
1 réponse
Bonjour,
1/ C'est l'instruction Select qui sélectionne ta forme. Je pense que tu peux raccourcir ainsi :
2/ ça sert à ne pas mettre à jour l'affichage. En pratique, ça sert à éviter les clignotements quand il y a beaucoup d'opérations qui sont effectuées.
3/ voir 1
A+
1/ C'est l'instruction Select qui sélectionne ta forme. Je pense que tu peux raccourcir ainsi :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Déclaration de la variable qui contient le chemin des images Dim PathDossierImage As String PathDossierImage = "C:\images\" If Target.Cells.Count > 1 Then Exit Sub ' Condition de la ellule active If ActiveCell.Value Like "*texte1*" Then ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Fill.UserPicture PathDossierImage & "2.png" If ActiveCell.Value Like "*texte2*" Then ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Fill.UserPicture PathDossierImage & "2.png" End Sub
2/ ça sert à ne pas mettre à jour l'affichage. En pratique, ça sert à éviter les clignotements quand il y a beaucoup d'opérations qui sont effectuées.
3/ voir 1
A+
Ton code fonctionne très bien sauf si la cellule active renvoie une erreur.
J'ai écrit "=nb" par erreur dans une cellule et là j'ai eu un msg d'erreur sur le code... je pense qu'il faudrait rajouté une condition si la cellule ne contient pas d'erreur... mais je ne sait pas faire.
Est-ce que tu peux qqch pour moi ?