eretyk_1er
XLDnaute Nouveau
Bonjour à tous,
J'ai l'habitude de fouiller dans les forums pour trouver ce dont j'ai besoin, mais là je bloque...
Explication :
J'ai réalisé une macro excel qui agrandit/rétrécit un graphique, associée à l'événement 'cliquer sur le graphique'. Cela permet à l'utilisateur de réduire le graphique s'il n'en a pas besoin.
Tout fonctionnait bien, jusqu'à aujourd'hui. J'ai relancé le classeur, cliqué sur le graphique, et l'éxécution du code se stoppe (ligne surlignée en jaune).
En appuyant sur F5, la macro repart comme si de rien n'était (graphique redimensionné, variables modifiée comme il faut).
Le pas-à-pas fonctionne aussi sans problème. Pourquoi bloque-t-il alors?
Ci-joint le code. Le blocage se fait dans les deux derniers paragraphes, au niveau du .height
Remarque 1 : en inversant .height et .width, le blocage apparait sur .width
Remarque 2 : Le blocage se fait à l'agrandissement ET à la réduction du graphique
[EDIT] Remarque 3 : l'erreur au blocage est "erreur d'exécution '-2147417848 (80010108)': La méthode 'height' de l'objet 'Shape' a échouée"
D'avance merci aux bonnes âmes qui se pencheront sur la question
J'ai l'habitude de fouiller dans les forums pour trouver ce dont j'ai besoin, mais là je bloque...
Explication :
J'ai réalisé une macro excel qui agrandit/rétrécit un graphique, associée à l'événement 'cliquer sur le graphique'. Cela permet à l'utilisateur de réduire le graphique s'il n'en a pas besoin.
Tout fonctionnait bien, jusqu'à aujourd'hui. J'ai relancé le classeur, cliqué sur le graphique, et l'éxécution du code se stoppe (ligne surlignée en jaune).
En appuyant sur F5, la macro repart comme si de rien n'était (graphique redimensionné, variables modifiée comme il faut).
Le pas-à-pas fonctionne aussi sans problème. Pourquoi bloque-t-il alors?
Ci-joint le code. Le blocage se fait dans les deux derniers paragraphes, au niveau du .height
Remarque 1 : en inversant .height et .width, le blocage apparait sur .width
Remarque 2 : Le blocage se fait à l'agrandissement ET à la réduction du graphique
[EDIT] Remarque 3 : l'erreur au blocage est "erreur d'exécution '-2147417848 (80010108)': La méthode 'height' de l'objet 'Shape' a échouée"
Code:
Sub Agrandir_Graph_Gén()
' Créé en 2011 par J. Hoché
Dim Virgule As Boolean
Dim ListeDEtiquettes As String, ListeDeValeurs As String
Dim cellul As Range
Virgules = False
Set feuil = Sheets("Généralités")
Application.ScreenUpdating = False
'_____________On met à jour les données du graphiques, en ignorant les données nulles.
'_____________On stocke les données dans la liste 'ListeDeValeurs
'_____________On stocke les étiquettes dans la liste ListeDEtiquettes
For lign = 2 To 6
Set cellul = Range("CALCULS_Tableau_Récapitulatif").Cells(lign, 3)
If cellul.Value <> 0 Then
ListeDEtiquettes = ListeDEtiquettes & ",CALCULS!" & cellul.Offset(0, -2).Address(ReferenceStyle:=xlR1C1)
ListeDeValeurs = ListeDeValeurs & ",CALCULS!" & cellul.Address(ReferenceStyle:=xlR1C1)
If Virgules = False Then
ListeDEtiquettes = Right(ListeDEtiquettes, Len(ListeDEtiquettes) - 1)
ListeDeValeurs = Right(ListeDeValeurs, Len(ListeDeValeurs) - 1)
End If
Virgules = True
End If
Next
'_____________Si Virgules est faux, tous les totaux sont nuls => pas de données => on efface le graphique en entier
'_____________Dans l'autre cas, on indique au graphique ses nouvelles données.
With feuil.ChartObjects("Graphique 394").Chart
If Virgules = faux Then
.SeriesCollection(1).XValues = ""
.SeriesCollection(1).Values = ""
Else
.SeriesCollection(1).XValues = "=(" & ListeDEtiquettes & ")"
.SeriesCollection(1).Values = "=(" & ListeDeValeurs & ")"
End If
End With
'_____________On agrandit/rétrécit le graphique. Quand on le rétrécit, on met un shape
'_____________rectangulaire semi-transparent devant pour inciter l'utilisateur à cliquer dessus.
With feuil.Shapes("Graphique 394")
If Sheets("CALCULS").Range("Calculs_GraphGrand").Value = True Then
Sheets("CALCULS").Range("Calculs_GraphGrand").Value = False
feuil.Shapes("RctgleAgrandir").Visible = True
.Top = feuil.Range("AB13").Top
.Left = feuil.Range("AB13").Left
.Height = 100
.Width = 130
Else
Sheets("CALCULS").Range("Calculs_GraphGrand").Value = True
feuil.Shapes("RctgleAgrandir").Visible = False
.Top = feuil.Range("T22").Top
.Left = feuil.Range("T22").Left
.Height = 290
.Width = 360
End If
End With
Application.ScreenUpdating = True
End Sub
D'avance merci aux bonnes âmes qui se pencheront sur la question
Dernière édition: