The Incredible Godzy
Messages postés10Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention29 septembre 2008
-
26 sept. 2008 à 16:35
The Incredible Godzy
Messages postés10Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention29 septembre 2008
-
29 sept. 2008 à 09:35
Bonjour à tous!
Je débute en VBA et j'essaye de faire un petit programme qui trace automatiquement des graphes sur Excel, dès qu'on clique sur une colonne. Voilà la source :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ((Target.column <= startH + 6) And (Target.column >= startH)) Then
MsgBox ("Vous avez demandé le tracé d'un graphe" & vbNewLine & "(Cette procédure peut prendre un certain temps)")
Cancel = True
Range("A1").Select
FaireGraphe (Target.column)
End If
End Sub
Alors, petite précision, les start H et startH + 6 ce sont des histoires de domaine de définition : c'est que lorsque l'on clique sur certaines colonnes que cela effectue la fonction FaireGraphe. startH (et aussi startV) définissent la case en haut à gauche de mon tableau.
La fonction FaireGraphe s'écrit comme ceci (au cas où c'est ça qui est embêtant, mais je pense pas) :
Sub FaireGraphe(colonne As Integer)
Dim c1, c2 As Object
Dim ref1, ref2 As Object
Dim plage, Xplage As String
Dim temp1, temp2, min, max As Double
Application.ScreenUpdating = False
'D'abord on sélectionne les X et les Y
Set ref1 = Cells(startV + 1, startH)
Set ref2 = Cells(ref1.End(xlDown).Row, startH)
Xplage = "=NORAD!" & "R" & ref1.Row & "C" & ref1.column & ":" & "R" & ref2.Row & "C" & ref2.column
Set c1 = Cells(startV + 1, colonne)
Set c2 = Cells(c1.End(xlDown).Row, colonne)
plage = "=NORAD!" & "R" & c1.Row & "C" & c1.column & ":" & "R" & c2.Row & "C" & c2.column
'On va redimensionner ce graphe, aux dimensions Excel pourries
'Donc on cherche le min et le max en X
ref1.Select
min = ActiveCell.Value
max = ActiveCell.Value
For i = 1 To (ref2.Row - ref1.Row)
ActiveCell.Offset(1, 0).Select
If min > ActiveCell.Value Then
min = ActiveCell.Value
End If
If max < ActiveCell.Value Then
max = ActiveCell.Value
End If
Next i
'Puis on fait le graphe
[Pas mal de mise en forme et de choses qui ont rien à voir avec le pb..]
Application.ScreenUpdating = True
End Sub
Maintenant ce que je ne comprends pas, c'est qu'une fois sur deux, quand je fais un double clic sur une case quelconque (bonne ou pas), la fonction semble ne pas marcher : elle sélectionne la case toute en bas ou toute en haut de la colonne, selon qu'elle soit remplie ou non, et ne fait rien par la suite (pas grand chose à voir avec le Range("A1").Select).
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 26 sept. 2008 à 18:58
Salut,
le point de depart de ta macro est le double clics ors je ne vois pas dans ce que tu nous as donné la decalration de tes variables startH et startV je ne vois pas non plus d'attribution de valeur donc pour moi elle sont nul et vide !