Erreur pour prendre la valeur d'un bouton dans un userform

Bonjour le forum,

Je débute avec les userform et j'aimerais récupérer une valeur suivant le bouton cliqué cependant j'ai une erreur de compilation : attribut incorrect dans une procédure sub ou function.

Voilà la partie concernée de la macro et ensuite le userform.

Option Explicit
Sub Workbook_Open()
    Dim Wbk As Workbook, Cht As Chart, RngTit As Range, RngDon As Range, _
    ColDate As Long, Col As Long, Sér As Series, Titre As String, ligne As Long, dat As Date, lig As Long
    Dim mot As String, lign As Long, d, t, i&, repetitions() As Variant, clefs() As Variant, compteur As Long, element, nbrele
    Public graph As Integer
    For Each Wbk In Application.Workbooks
        If Wbk.Name <> ThisWorkbook.Name Then Exit For
    Next Wbk
    Set RngDon = Wbk.Worksheets(1).UsedRange
    For ColDate = 1 To RngDon.Columns.Count + 2
        If IsDate(RngDon(2, ColDate).Value) Then Exit For
    Next ColDate
    If ColDate > RngDon.Columns.Count Then
        ColDate = 1
    End If
    Set RngTit = RngDon.Rows(1)
    Set RngDon = RngDon.Rows(2).Resize(RngDon.Rows.Count - 1)

    For Col = 1 To RngTit.Columns.Count
        If Col <> ColDate Then
                 Titre = RngTit.Columns(Col)
                On Error Resume Next
                Set Cht = Wbk.Charts(Titre)
                If Err Then Set Cht = Wbk.Charts.Add: Cht.Name = Titre
                With Cht.SeriesCollection
                    Do While .Count > 1: .Item(1).Delete: Loop
                    Err.Clear: Set Sér = .Item(1): If Err Then Set Sér = .NewSeries
                    End With
                On Error GoTo 0
                Sér.Name = RngTit.Columns(Col)
                Sér.XValues = RngDon.Columns(ColDate)
                Sér.Values = RngDon.Columns(Col)
                UserForm1.Show
                graph = UserForm1.Value
                If graph = 1 Then
                    Cht.ChartType = xlLine
                ElseIf graph = 3 Then
                    Cht.ChartType = xlPie
                    Cht.ChartStyle = 259
                Else
                   Cht.ChartType = xlColumnClustered
                End If
                Unload UserForm1
            End If
    Next Col
Private Sub CommandButton1_Click()
1
End Sub

Private Sub CommandButton2_Click()
2
End Sub

Private Sub CommandButton3_Click()
3
End Sub

Bonjour,

Sans lire le reste, tes procédures boutons ne font strictement rien !!!

Alors, que voudrais-tu qu'elles fassent ?

Je voudrais récuperer une valeur différente suivant le bouton choisi qui correspond à un type de graphique que je voudrais faire( bouton 1 une courbe le 2 un histogramme et le dernier un graphique par secteur ). Cette valeur je voulais la récuperer dans ma variable graph pour l'utiliser avec mon if.

D'une part, il conviendrait de placer toutes tes déclarations en tête de procédure, on s'y retrouvera mieux, et VBA aussi car il réservera les espaces mémoire dévolus aux variables dès le début...

D'autre part :

Public graph As Integer

cette déclaration ne peut figurer dans une procédure. Elle doit être déclarée dans un module, et un Module standard, qui est public (ThisWorkbook est un module privé) pour pouvoir l'appeler directement.

Elle sera alors initialisée par tes proc. boutons :

Private Sub CommandButton1_Click()
    graph = 1
End Sub

Mais si tu entends opérer avec une procédure Workbook_Open, celle-ci s'exécute à l'ouverture, soit avant que tu aies eu le loisir d'appuyer sur le moindre bouton, et ta variable sera donc toujours =0 à ce moment !

Cordialement.

merci de votre réponse mais du coup il y a quand même une solution pour avoir ce que je souhaite ?

Si tu mets ta procédure graphique ailleurs que dans Workbook_Open, tu peux la faire lancer par tes boutons...

Mais dans ce cas, tu n'as plus besoin de variable publique ou non, tu passes 1, 2 ou 3 en argument à ta procédure :

Sub MaProcGraphique(graph As Integer)
Private Sub CommandButton1_Click()
    MaProcGraphique 1
End Sub

Cordialement.

Oui mais justement le fichier contenant la macro agit sur un autre fichier contenant un tableau et fait les graphiques de ce tableau dès l'ouverture du fichier contenant la macro (avant le fichier avec le tableau doit être ouvert)

Le fichier qui doit être ouvert, tu l'ouvres à l'ouverture.

Comme c'est ensuite que tu choisis le type de graphique, tu construis ton graphique après avoir choisi.

d'accord merci

Rechercher des sujets similaires à "erreur prendre valeur bouton userform"