Problème avec Worksheet_BeforeDoubleClick

The Incredible Godzy Messages postés 10 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 29 septembre 2008 - 26 sept. 2008 à 16:35
The Incredible Godzy Messages postés 10 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 29 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).

Merci d'avance!
Godzy.

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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 !

Donne plus d'info concernant c'est 2 variables
0
The Incredible Godzy Messages postés 10 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 29 septembre 2008
29 sept. 2008 à 09:35
startH et startV sont définies globalement et valent actuellement chacune 2.
0
Rejoignez-nous