Impression zone de texte dans les graphiques

nicoach

XLDnaute Nouveau
Bonjour,

J'ai fait un classeur qui calcule des tas d'indicateurs. Tous ces indicateurs sont représentés sous forme de graphique dans un onglet "graphique".
Pour chaque graphique, j'affiche un "smiley" en zone de texte pour indiquer si l'objectif est atteint ou non.
Pour chaque Smiley, j'ai fait un code permettant de mettre à jour la couleur en auto (type MFC).
Code:
Private Sub Worksheet_Activate()
    Dim tb As Excel.TextBox
    Dim rng As Range
            
    For Each tb In Me.TextBoxes
        Set rng = Worksheets(Split(tb.Formula, "'")(1)).Range(Split(tb.Formula, "!")(1))
        tb.Font.Color = IIf(rng.Value = "J", vbGreen, vbRed)
    Next tb
End Sub
Pour que mon code fonctionne il faut que les zones de texte soit sur la feuille de calcul et non dans les graphiques.
Jusque là tout fonctionne bien...

Le problème c'est que je veux ensuite imprimer chaque graphique indépendament en cliquant depuis puis en cliquant sur "impression".

Pour faire cela, j'ai intégré dans "ThisWoorkbook" ce code, aucune erreur n'est remontée mais l'impression n'affiche pas les smiley ...
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim ch As ChartObject
    
    For Each ch In Worksheets("Graphiques").ChartObjects
        ch.PrintObject = True
    Next ch
End Sub
Est ce quelqu'un peut m'aider ?

Ci joint mon classeur.

Merci par avance

Nicoach
 

Pièces jointes

  • Bilanterie qualité 2008.zip
    46.5 KB · Affichages: 48

nicoach

XLDnaute Nouveau
Re : Impression zone de texte dans les graphiques

Bonjour,

Dans mon premier post j'ai mis "bilanterie qualité 2008.zip".

C'est mon fichier de boulot ou j'ai simplement masqué tous mes calculs d'indicateurs pour ne pas "noyer le poisson".
La feuille qui me pose problème est "Graphiques".
 

Staple1600

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

RE


En adaptant

ici imprime tous les graphique de la feulle Graphiques
Code:
Sub Imprime_GRAPH() 
Application.ScreenUpdating=False
    'Dim Feuille As Object 
    Dim Graph As ChartObject 
'ici pour imprimer tous les graphiques d e toutes les feuilles du classeur actif
    'For Each Feuille In ActiveWorbook.Sheets
        For Each Graph In Worksheets("Graphiques").ChartObjects 
            Graph.Activate 
            ActiveChart.ChartArea.Select 
            ActiveWindow.SelectedSheets.PrintOut 
        Next 
    'Next 
Application.ScreenUpdating=True
End Sub
 
Dernière édition:

nicoach

XLDnaute Nouveau
Re : Impression zone de texte dans les graphiques

Merci pour le code, il me permet en effet d'automatiser l'impression de tous les graphiques de cette feuille (chose que je comptais faire... voilà c'est fait !;))
Par contre, comment faire pour que les smileys soient imprimés avec les graphiques sachant qu'il sont "collés" sur la feuille de calcul et non sur les graphiques (pour que la "MFC" fonctionne) ?

Merci pour votre aide

Nicoach
 

Staple1600

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

Re

En cherchant dans l'aide VBA, j'ai trouvé dans les exemples de code

Sub test()
ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, _
100, 100, 200, 50) _
.TextFrame.Characters.Text = "Test Box"
End Sub

En repensant ton code et en créant des zones de texte liées aux graphiques
cela devrait etre plsusimple pour l'impression non?
 

nicoach

XLDnaute Nouveau
Re : Impression zone de texte dans les graphiques

Là, tu m'as largué ....!!
Comment lier ma zone de texte. Si je la regroupe, je ne connais pas le nom VBE de la text box pour la MFC ?
A quoi sert le code que tu mentionnes ?
Merci pour ton aide et ta patience ppour me faire progresser mais je pense que je dois partir de la BASE...
Pourquoi est ce que mon code ne fonctionne pas ?
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim ch As ChartObject
    
    For Each ch In Worksheets("Graphiques").ChartObjects
        ch.PrintObject = True
    Next ch
End Sub

Je souhaite accélérer sur ce sujet car il faut que je puisse valider ce fichier avec mes boss demain.
En parralèle, je vais fouiller dans les tutos VBE (pour les Nuls...)!!!!:eek:
 

Staple1600

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

RE


Non, non je cherche, je cherhce


Pour patienter
Code:
Sub testII()
Dim i As Byte
Dim z As Byte
Dim NBR_SHAPES As Byte
NBR_SHAPES = ActiveSheet.Shapes.Count
z = 1
For i = 1 To NBR_SHAPES
If ActiveSheet.Shapes(i).Type = 3 Then
MsgBox "Nombre de graphiques: " & z & Chr(13) _
& "NOM: " & ActiveSheet.Shapes(i).Name & Chr(13) _
& "Type de la forme: " & ActiveSheet.Shapes(i).Type
End If
z = z + 1
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

Re

Tu dis :
Le problème c'est que je veux ensuite imprimer chaque graphique indépendament en cliquant depuis puis en cliquant sur "impression".

Mais il n'y a pas de macro nommé Impression

Dans ce code
Code:
Private Sub Worksheet_Activate()
    Dim tb As Excel.TextBox
    Dim rng As Range
            For Each tb In Me.TextBoxes
        Set rng = Worksheets(Split(tb.Formula, "'")(1)).Range(Split(tb.Formula, "!")(1))
        tb.Font.Color = IIf(rng.Value = "J", vbGreen, vbRed)
    Next tb
End Sub
Rien ne lance l'impression, et ci-dessous non plus.

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim ch As ChartObject
    
    For Each ch In Worksheets("Graphiques").ChartObjects
        ch.PrintObject = True
    Next ch
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

Re

A la rigueur tu peux aussi créer 16 macros de ce type
Code:
Sub vidageqex_QuandClic() 'ici macro pour la graphique portant ce nom
'code pour l'impression
[B]'edit: solution 1a tester[/B]
Worksheets("Graphiques").Activate 
    Chart("vidageqex").Activate 
    ActiveChart.PrintOut Copies:=1 
End Sub
Clic-droit sur le graphique > Affecter une macro

Tu peux aussi créer une seule macro et l'appeler dans chaque bouton
(EDIT: ca devrait au moins imprimer le graphique
mais peut-etre pas la zone de texte
Code:
Sub vidageqex_QuandClic()

'[B]edit: solution 2[/B]
'call impression
End Sub
Code:
Sub impression()
'le code qui va bien


En sub
EDIT3: Testes ces codes:
-> testIII : pour indentifier les graphiques
-> testIV: toutes les shapes présents sur la feuille active
Code:
Sub testIII()
Dim i As Byte
Dim zx As Byte
Dim NBR_SHAPES As Byte
NBR_SHAPES = ActiveSheet.Shapes.Count
zx = 1
For i = 1 To NBR_SHAPES
If ActiveSheet.Shapes(i).Type = 17 Then
MsgBox "Nombre de TextBox: " & zx & Chr(13) _
& "NOM: " & ActiveSheet.Shapes(i).Name & Chr(13) _
& "Type de la forme: " & ActiveSheet.Shapes(i).Type
End If
zx = zx + 1
Next
End Sub
Code:
Sub testIV()
Dim i As Byte
Dim NBR_SHAPES As Byte
NBR_SHAPES = ActiveSheet.Shapes.Count
i = 1
For i = 1 To NBR_SHAPES
MsgBox NOM: " & ActiveSheet.Shapes(i).Name & Chr(13) _
& "Type de la forme: " & ActiveSheet.Shapes(i).Type
End If
i= i+ 1
Next
End Sub
 
Dernière édition:

CB60

XLDnaute Barbatruc
Re : Impression zone de texte dans les graphiques

Bonjour
Peut être de cette façon, tu pourrais gerer tes icones Windings en te servant d'un titre des graphiques.
J'ai repris la macro de Stapple pour colorer les formes en fonction d'une cellule.
Regarde si cela peut te servir
 

Pièces jointes

  • Bilanterie 1.zip
    47.4 KB · Affichages: 50

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 248
Messages
2 086 595
Membres
103 250
dernier inscrit
keks974