Afficher des images diférentes en fonction du résultat d'une cellule.
3 réponses
Changuy
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un
petit problème.
Le problème de départ est le suivant:
Je souhaite afiicher un dessin différent en fonction du résultat d'une
cellule.
Exemple simple avec des notes d'élève,
si la note est inférieure à 10, afficher une tête de bonhomme triste rouge
si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A" et
"DESSIN B" .
Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits,
cercle, rectangle ..)
J'ai positionné en feuil2 une liste déroulante permettant un choix entre la
valeur "A" et "B".
Le résultat de cette "liste déroulante" est affiché dans la cellule
C8.(Cellule Liée)
Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la
liste déroulante et inversement pour "B".
Voici le code que j'ai developper après quelques recherches:
(Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes
If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then
' Ce test est nécessaire sinon je suprime tous les dessin y
compris la liste déroulante ???? je ne comprend pas pourqoi !
img.Delete
End If
Next
If Range("C8") = 1 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN A").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
If Range("C8") = 2 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN B").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ?
Cette macro est elle affecter à une cellule?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonsoir. Utilise les caractères J et L avec la police wingdings et la couleur appropriée. =SI(A1<10;"J";"L") Cordialement. Daniel "Changuy" a écrit dans le message de news:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme triste rouge si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix entre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?
Je vous remercie de votre aide par avance.
JC
Bonsoir.
Utilise les caractères J et L avec la police wingdings et la couleur
appropriée.
=SI(A1<10;"J";"L")
Cordialement.
Daniel
"Changuy" <j.changarnier@wanadoo.fr> a écrit dans le message de news:
eQwFXyioHHA.4120@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un
petit problème.
Le problème de départ est le suivant:
Je souhaite afiicher un dessin différent en fonction du résultat d'une
cellule.
Exemple simple avec des notes d'élève,
si la note est inférieure à 10, afficher une tête de bonhomme triste rouge
si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A"
et "DESSIN B" .
Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits,
cercle, rectangle ..)
J'ai positionné en feuil2 une liste déroulante permettant un choix entre
la valeur "A" et "B".
Le résultat de cette "liste déroulante" est affiché dans la cellule
C8.(Cellule Liée)
Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la
liste déroulante et inversement pour "B".
Voici le code que j'ai developper après quelques recherches:
(Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes
If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then
' Ce test est nécessaire sinon je suprime tous les dessin y
compris la liste déroulante ???? je ne comprend pas pourqoi !
img.Delete
End If
Next
If Range("C8") = 1 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN A").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
If Range("C8") = 2 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN B").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ?
Cette macro est elle affecter à une cellule?
Bonsoir. Utilise les caractères J et L avec la police wingdings et la couleur appropriée. =SI(A1<10;"J";"L") Cordialement. Daniel "Changuy" a écrit dans le message de news:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme triste rouge si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix entre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?
Je vous remercie de votre aide par avance.
JC
Duarrab81
Bonjour, Une réponse très simple (simpliste ?!) est d'utiliser dans chaque cellule où doit s'afficher le "bonhomme" le formule conditionnelle suivante :
=SI(B1>10;"J";"L")
toutes les cellules doivent être au format Wingdings.
Salut
"Changuy" a écrit dans le message de news:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme triste rouge si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix entre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?
Je vous remercie de votre aide par avance.
JC
Bonjour,
Une réponse très simple (simpliste ?!) est d'utiliser dans chaque cellule où
doit s'afficher le "bonhomme" le formule conditionnelle suivante :
=SI(B1>10;"J";"L")
toutes les cellules doivent être au format Wingdings.
Salut
"Changuy" <j.changarnier@wanadoo.fr> a écrit dans le message de news:
eQwFXyioHHA.4120@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un
petit problème.
Le problème de départ est le suivant:
Je souhaite afiicher un dessin différent en fonction du résultat d'une
cellule.
Exemple simple avec des notes d'élève,
si la note est inférieure à 10, afficher une tête de bonhomme triste rouge
si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A"
et "DESSIN B" .
Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits,
cercle, rectangle ..)
J'ai positionné en feuil2 une liste déroulante permettant un choix entre
la valeur "A" et "B".
Le résultat de cette "liste déroulante" est affiché dans la cellule
C8.(Cellule Liée)
Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la
liste déroulante et inversement pour "B".
Voici le code que j'ai developper après quelques recherches:
(Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes
If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then
' Ce test est nécessaire sinon je suprime tous les dessin y
compris la liste déroulante ???? je ne comprend pas pourqoi !
img.Delete
End If
Next
If Range("C8") = 1 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN A").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
If Range("C8") = 2 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN B").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ?
Cette macro est elle affecter à une cellule?
Bonjour, Une réponse très simple (simpliste ?!) est d'utiliser dans chaque cellule où doit s'afficher le "bonhomme" le formule conditionnelle suivante :
=SI(B1>10;"J";"L")
toutes les cellules doivent être au format Wingdings.
Salut
"Changuy" a écrit dans le message de news:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme triste rouge si la note est supérieure à 10, afficher une tête sourirante et verte !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DESSIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes traits, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix entre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 Then '-- suppression For Each s In ActiveSheet.Shapes If s.Type = 13 Then If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then s.Delete End If End If Next s '-- Sheets("status").Shapes(Application.Substitute(Target, " ", "")).Copy Target.Offset(0, 1).Select ActiveSheet.Paste Selection.ShapeRange.Left = ActiveCell.Left + 9 Selection.ShapeRange.Top = ActiveCell.Top + 5 Target.Select End If End Sub
JB
On 29 mai, 22:04, "Changuy" wrote:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme trist e rouge si la note est supérieure à 10, afficher une tête sourirante et ver te !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DES SIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes trai ts, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix e ntre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
'-- suppression
For Each s In ActiveSheet.Shapes
If s.Type = 13 Then
If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then
s.Delete
End If
End If
Next s
'--
Sheets("status").Shapes(Application.Substitute(Target, " ",
"")).Copy
Target.Offset(0, 1).Select
ActiveSheet.Paste
Selection.ShapeRange.Left = ActiveCell.Left + 9
Selection.ShapeRange.Top = ActiveCell.Top + 5
Target.Select
End If
End Sub
JB
On 29 mai, 22:04, "Changuy" <j.changarn...@wanadoo.fr> wrote:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un
petit problème.
Le problème de départ est le suivant:
Je souhaite afiicher un dessin différent en fonction du résultat d'une
cellule.
Exemple simple avec des notes d'élève,
si la note est inférieure à 10, afficher une tête de bonhomme trist e rouge
si la note est supérieure à 10, afficher une tête sourirante et ver te !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DES SIN A" et
"DESSIN B" .
Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes trai ts,
cercle, rectangle ..)
J'ai positionné en feuil2 une liste déroulante permettant un choix e ntre la
valeur "A" et "B".
Le résultat de cette "liste déroulante" est affiché dans la cellule
C8.(Cellule Liée)
Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la
liste déroulante et inversement pour "B".
Voici le code que j'ai developper après quelques recherches:
(Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes
If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then
' Ce test est nécessaire sinon je suprime tous les dessin y
compris la liste déroulante ???? je ne comprend pas pourqoi !
img.Delete
End If
Next
If Range("C8") = 1 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN A").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
If Range("C8") = 2 Then
Sheets("Feuil1").Select
ActiveSheet.Shapes("DESSIN B").Select
Selection.Copy
Sheets("Feuil2").Select
Range("F7").Select
ActiveSheet.Paste
End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ?
Cette macro est elle affecter à une cellule?
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 Then '-- suppression For Each s In ActiveSheet.Shapes If s.Type = 13 Then If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then s.Delete End If End If Next s '-- Sheets("status").Shapes(Application.Substitute(Target, " ", "")).Copy Target.Offset(0, 1).Select ActiveSheet.Paste Selection.ShapeRange.Left = ActiveCell.Left + 9 Selection.ShapeRange.Top = ActiveCell.Top + 5 Target.Select End If End Sub
JB
On 29 mai, 22:04, "Changuy" wrote:
Bonjour à tous,
Je débute dans la programmation en VBA Excel et j'ai besoin d'aide sur un petit problème.
Le problème de départ est le suivant: Je souhaite afiicher un dessin différent en fonction du résultat d'une cellule. Exemple simple avec des notes d'élève, si la note est inférieure à 10, afficher une tête de bonhomme trist e rouge si la note est supérieure à 10, afficher une tête sourirante et ver te !
Pour faire quelques essais, j'ai créé 2 dessins que j'ai nommé "DES SIN A" et "DESSIN B" . Ils sont placés dans la 'Feuil1' (regroupement de plusieurs formes trai ts, cercle, rectangle ..) J'ai positionné en feuil2 une liste déroulante permettant un choix e ntre la valeur "A" et "B". Le résultat de cette "liste déroulante" est affiché dans la cellule C8.(Cellule Liée) Le but est d'afficher le "DESSIN A" lorsque "A" est sélectionné dans la liste déroulante et inversement pour "B". Voici le code que j'ai developper après quelques recherches: (Cette macro est affectée à la liste déroulante)
Dim img As Object
For Each img In Sheets("Feuil2").Shapes If img.Name = "DESSIN A" Or img.Name = "DESSIN B" Then ' Ce test est nécessaire sinon je suprime tous les dessin y compris la liste déroulante ???? je ne comprend pas pourqoi ! img.Delete End If Next
If Range("C8") = 1 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN A").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
If Range("C8") = 2 Then Sheets("Feuil1").Select ActiveSheet.Shapes("DESSIN B").Select Selection.Copy Sheets("Feuil2").Select Range("F7").Select ActiveSheet.Paste End If
End Sub
Ya-t il des moyens plus simple pour obtenir le même résultat ? Cette macro est elle affecter à une cellule?