Mettre un shape dans une cellule avec condition

libellule85

XLDnaute Accro
Bonjour le forum,

J'aimerais quand j'écris par exemple AM dans une cellule qu'un shape ou une forme vienne se mettre dans la cellule qui a été renseignée de cette façon. Et si on supprime AM le shape ou la forme disparaisse de la cellule.
Je pense que le vba est la meilleure solution !
D'avance merci beaucoup pour votre aide.
 

Pièces jointes

  • Libellule85 shape dans cellule.xlsm
    8.9 KB · Affichages: 33

job75

XLDnaute Barbatruc
Bonjour libellule85,

Juste 2 questions à 100 sous :

- faut-il autant de Shapes qu'il y a de cellules "AM" ou une seule qu'on déplace sur la dernière entrée ?

- comment voulez-vous faire pour effacer "AM" une fois que la Shape la recouvre ?

A+
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour le forum,

J'aimerais quand j'écris par exemple AM dans une cellule qu'un shape ou une forme vienne se mettre dans la cellule qui a été renseignée de cette façon. Et si on supprime AM le shape ou la forme disparaisse de la cellule.
Je pense que le vba est la meilleure solution !
D'avance merci beaucoup pour votre aide.
Pourquoi faire une usine à gaz ...
utiliser les MEFC
upload_2017-1-19_15-8-12.png
 

Pièces jointes

  • Libellule85.xlsm
    12.3 KB · Affichages: 27

job75

XLDnaute Barbatruc
Re, salut Pierre, Modeste geedee,

Pas encore regardé ton code Pierre.

Voyez le fichier joint et ce code dans la 1ère feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In r 'si entrées multiples
  If LCase(r) = "am" Then
    Feuil2.Shapes(1).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
Next
ActiveCell.Activate
End Sub

Sub Effacer()
On Error Resume Next
Range(Application.Caller) = ""
Shapes(Application.Caller).Delete
End Sub
A+
 

Pièces jointes

  • Libellule85 shape dans cellule(1).xlsm
    24.4 KB · Affichages: 48

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Voyez le fichier joint et ce code dans la 1ère feuille :
pour continuer dans ce sens :rolleyes:
upload_2017-1-19_19-44-6.png

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In r 'si entrées multiples
  If LCase(r) = "am" Then
    Feuil2.Shapes(1).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
  If LCase(r) = "pm" Then
    Feuil2.Shapes(2).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
  If LCase(r) = "nuit" Then
    Feuil2.Shapes(3).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
  If LCase(r) = "jour" Then
    Feuil2.Shapes(4).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
Next
ActiveCell.Activate
End Sub
 

libellule85

XLDnaute Accro
Bonsoir pierrejean, Modes Geedee, Bisson Nicole, Re job75,

Je suis sur une autre planète, avec toutes vos super réponses ! Je voulais tous vous adresser un grand grand merci d'avoir pris du temps pour moi.
Je vais regarder de plus près toutes vos réponses et je reviens vers vous.
 

libellule85

XLDnaute Accro
Bonsoir le forum,
Je reviens vers vous et plus particulièrement vers job75 et sa solution en post #7 : par contre peut-on mettre un choix dans la même macro ? Si on tape AM c'est le triangle 1 et si on tape PM c'est le triangle 2 qui s'affiche, est ce possible ?
D'avance merci pour votre aide.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In r 'si entrées multiples
  If LCase(r) = "am" Then
    Feuil2.Shapes(1).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
Next
ActiveCell.Activate
End Sub

Sub Effacer()
On Error Resume Next
Range(Application.Caller) = ""
Shapes(Application.Caller).Delete
End Sub
 

Modeste geedee

XLDnaute Barbatruc

job75

XLDnaute Barbatruc
Bonsoir libellule85, bonsoir les autres,

Nommez AM et PM les formes sources et modifiez 2 lignes de la macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In r 'si entrées multiples
  If LCase(r) = "am" Or LCase(r) = "pm" Then
    Feuil2.Shapes(r).Copy 'CodeName de la feuille source
    Me.Paste
    With Selection
      .Left = r.Left
      .Top = r.Top
      .Name = r.Address
    End With
  End If
Next
ActiveCell.Activate
End Sub
A+
 

Pièces jointes

  • Libellule85 shape dans cellule(2).xlsm
    25.5 KB · Affichages: 38

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman