Bonsoir à tous,

J'ai un petit soucis avec une programmation en VBA,
Voilà, j'ai un tableau croisé dynamique, jusqu'à là rien de difficile, et quand j'ai une certaine valeur pour disons A, je veux qu'il me crée une forme et y inscrit dedans la valeur de A, çà j'y arrive, également, quand A = 0 qu'il m'efface cette forme, çà j'y arrive aussi, mais quand je modifie la valeur de A, une erreur se produit.
En clair,
Si A <> 0 et Forme de A n'existe pas alors faire la forme et y inscrire la valeur de A
Si A <> 0 et Forme de A existe alors inscrire la valeur
(Si A = 0 et Forme de A n'existe pas alors ne rien faire, se fait naturellement ^^)
Si A = 0 et Forme de A existe alors effacer la Forme de A.

Voici ma macro qui va avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub NVAapparition()
 
    Dim ValTextBox As String
    ValTextBox = Format(Range("F1").Value, "#0.00") & " %"
 
            If Format(Range("F1").Value) <> 0 Then
                ActiveChart.Shapes.AddShape(msoShapeRoundedRectangle, 542.25, 48#, 82.5, _
                    23.25).Select
                Selection.ShapeRange.Fill.Visible = msoTrue
                Selection.ShapeRange.Fill.Solid
                Selection.ShapeRange.Fill.ForeColor.SchemeColor = 43
                Selection.ShapeRange.Fill.Transparency = 0#
                Selection.ShapeRange.Line.Weight = 0.75
                Selection.ShapeRange.Line.DashStyle = msoLineSolid
                Selection.ShapeRange.Line.Style = msoLineSingle
                Selection.ShapeRange.Line.Transparency = 0#
                Selection.ShapeRange.Line.Visible = msoTrue
                Selection.ShapeRange.Line.ForeColor.SchemeColor = 53
                Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
                Selection.ShapeRange.AlternativeText = "NVA"
                Selection.ShapeRange.Name = "NVA"
                Selection.Characters.Text = "NVA: " & ValTextBox
                Selection.AutoScaleFont = False
                With Selection.Font
                    .Name = "Arial"
                    .FontStyle = "Gras"
                    .Size = 10
                    .Strikethrough = False
                    .Superscript = False
                    .Subscript = False
                    .OutlineFont = False
                    .Shadow = False
                    .Underline = xlUnderlineStyleNone
                    .ColorIndex = 3
                End With
                With Selection
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .ReadingOrder = xlContext
                    .Orientation = xlHorizontal
                    .AutoSize = False
                End With
            End If
 
 
            If Format(Range("F1").Value) = 0 Then
                ActiveChart.Shapes("NVA").Delete
            Else
 
            End If
Merci d'avance aux courageux qui m'aideront
Bonne soirée