XL 2013 Comment retranscrire la MFC d'un texte dans une Shape?

Halffy

XLDnaute Occasionnel
Bonsoir à tous,

Je butte actuellement sur un problème touchant la MFC d'un texte retranscrit dans une shape...
Je sais recopier le texte initial dans la shape; mais j'ignore comment retranscrire sa MFC :(
Ci-joint un fichier explicatif de mon problème.
Si vous aviez le temps d'y jeter un oeil / Avec tous mes remerciements par avance.

Cordialement,
Halffy.
 

Pièces jointes

  • Shape(1).xlsm
    17.1 KB · Affichages: 5
Solution
Re,
Ca ne change rien, il suffit de modifier :
VB:
Valeur = Sheets("Feuil1").Range("C4")
en
Valeur = Sheets("Feuil2").Range("C4")
Voir PJ.

Ensuite, si votre XL est équipé de VBA version 7, vous avez accès à l'instruction :
Code:
Sheets("Feuil2").Range("C4").DisplayFormat.Interior.Color
et
Sheets("Feuil2").Range("C4").DisplayFormat.Font.Color
Ce qui est une autre approche, il suffit de recopier les couleur de la MFC.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Halfy,
Je ne connait pas d'autre solution que de coder la MFC dans la macro... mais peut être est ce possible !
En PJ un essai avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C4")) Is Nothing Then
         Application.ScreenUpdating = False
        ActiveSheet.Shapes.Range(Array("Report")).Select 'Sélection Shape "Report"
        Selection.Formula = "=Feuil1!C4" 'Màj. Shape "Report", Fct Cell("Jauges!C4")
        Valeur = Sheets("Feuil1").Range("C4")
        With Sheets("Feuil1").Shapes("Report") 'Sélection Feuille "Feuil1", Shape "Report"
            .TextFrame.Characters.Font.Size = 10 ' Taille de la Police: 10
            .TextFrame.Characters.Font.Name = "Book Antiqua" 'Police imposée
            .TextFrame.Characters.Font.Bold = True 'Mise en forme: Gras
            If Valeur > 0 Then
                .TextFrame.Characters.Font.Color = RGB(0, 255, 0) 'Couleur de police de la Shape: Blanc
            Else
                .TextFrame.Characters.Font.Color = RGB(255, 0, 0) 'Couleur de police de la Shape: Blanc
            End If
        End With
    End If
Fin:
[A1].Select
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Shape(1).xlsm
    17.7 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • Shape(1).xlsm
    24.8 KB · Affichages: 2

Halffy

XLDnaute Occasionnel
Re Sylvanu,

Comme promis, je reviens donc vers toi / Et Merci de ta réponse rapide, celle-ci fonctionne donc très bien (dans le cas présenté) mais...

Oui je sais il y a toujours un "mais" / Car je pensais pouvoir adapter à mon fichier, mais cela ne marche malheureusement pas :(.

En effet pour tout te dire, ma cellule "C4" de référence en fait, n'est pas vraiment en Feuil1, mais plutôt en Feuil2; tandis que ma shape elle, est bien en feuil1... en conséquence ça ne marche plus (comme tu te doutes).

Maintenant que je vous ai donné toutes les billes (voir new fichier ci-joint), cela te dérangerait-il de jeter à nouveau un oeil? Si la réponse était négative, saches que je le comprendrais très bien.
Dans le cas contraire, encore merci du temps que tu me consacres.

Re, Hasco,
L'appareil photo ne marche toujours pas dans le cas présent. ;)
 

Pièces jointes

  • New_Shape(1).xlsm
    17.3 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Ca ne change rien, il suffit de modifier :
VB:
Valeur = Sheets("Feuil1").Range("C4")
en
Valeur = Sheets("Feuil2").Range("C4")
Voir PJ.

Ensuite, si votre XL est équipé de VBA version 7, vous avez accès à l'instruction :
Code:
Sheets("Feuil2").Range("C4").DisplayFormat.Interior.Color
et
Sheets("Feuil2").Range("C4").DisplayFormat.Font.Color
Ce qui est une autre approche, il suffit de recopier les couleur de la MFC.
 

Pièces jointes

  • New_Shape(1).xlsm
    17.2 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc


Je verrai ça demain sur votre nouveau fichier, mais il n'y a pas de raison....
Bonsoir à tous
étonnant cet fonction
je l'ai mis et "enregistrer la macro"
et bien ca me sort u truc vraiment étonnant qui bien sur ne fonctionne plus quand on lance la macro enregistrée
voilà le code que ça me sort
VB:
Sub Macro3()
'
    Range("A1:A2").Select
    Selection.Copy
    ActiveSheet.Shapes.AddShape(, 215.25, 61.5, 72#, 72#).Select
    ActiveSheet.Shapes.Range(Array("Picture 15")).Select
    Application.CutCopyMode = False
End Sub
 

Halffy

XLDnaute Occasionnel
Re,
Ca ne change rien, il suffit de modifier :
VB:
Valeur = Sheets("Feuil1").Range("C4")
en
Valeur = Sheets("Feuil2").Range("C4")
Voir PJ.
Bonjour Sylvanu,

Je te remercie avant tout d'avoir eu la gentillesse de jeter un nouvel oeil /
Donc effectivement, il suffisait de modifier "Feuil1" en "Feuil2", et cela marche comme souhaité :cool:...
Peut-être était-ce parce que je travaillais sur mon fichier depuis le matin qui faisait que je n'arrivais plus à aligner les idées :rolleyes:/ De plus j'avais inséré un "_" dans le nom de ma shape et que j'avais zappé; donc ça marchait moins bien ;)
Quant au VBA équipant ma version d'XL, je n'ai pas encore regardé (mais je te ferai un retour).

Donc encore merci de ton aide et je valide ta réponse comme solution adoptée.
Bon week-end et Cordiales salutations.
 

Halffy

XLDnaute Occasionnel


Je verrai ça demain sur votre nouveau fichier, mais il n'y a pas de raison....
Bonjour Hasco,

Donc comme je disais à Sylvanu, j'ai adopté sa solution qui fonctionne à souhait...
Concernant la fonction de l'appareil photo, je ne me l'explique toujours pas / J'ai refais des essais ce matin, et l'appareil sort bien la photo dans la dite-feuille initiale, mais refuse de me la sortir sur une autre feuille :rolleyes:.
Ceci étant dit, je ne vais pas chercher le pourquoi du comment, dans la mesure où Sylvanu a parfaitement répondu à ma problématique ;).

Toutefois Merci également du temps que tu as voulu me consacrer... et même si je ne peux retenir ta solution, je n'en minimise pas moins le temps offert pour m'aider.
Je te souhaite néanmoins un Bon week-end, et au plaisir de probablement vous re-solliciter un jour sûrement 😄
 

Halffy

XLDnaute Occasionnel
Bonsoir à tous
étonnant cet fonction
je l'ai mis et "enregistrer la macro"
et bien ca me sort u truc vraiment étonnant qui bien sur ne fonctionne plus quand on lance la macro enregistrée
voilà le code que ça me sort
VB:
Sub Macro3()
'
    Range("A1:A2").Select
    Selection.Copy
    ActiveSheet.Shapes.AddShape(, 215.25, 61.5, 72#, 72#).Select
    ActiveSheet.Shapes.Range(Array("Picture 15")).Select
    Application.CutCopyMode = False
End Sub
Au passage, Bonjour Patrick 😉
 

Halffy

XLDnaute Occasionnel
Si votre XL est équipé de VBA version 7, vous avez accès à l'instruction :
Code:
Sheets("Feuil2").Range("C4").DisplayFormat.Interior.Color
et
Sheets("Feuil2").Range("C4").DisplayFormat.Font.Color
Ce qui est une autre approche, il suffit de recopier les couleur de la MFC.
Re,

Donc après recopie du code ci-dessus à l'intérieur de ma macro, il semblerait que je ne soit pas sous VBA v.7 puisque ni la couleur interne de la cellule, ni la couleur de la police ne sont retranscrites; toutefois la première solution apportée, elle fonctionne à merveille, et c'est bien là le principal au regard de mon fichier.

mais cela voudrait également dire que VBA cherche à se moderniser quant à une utilisation "plus intuitive" pour des novices comme moi, ce qui serait une bonne chose par ailleurs 😄

Salutations /.
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote