Appel macro dans userform

O

Ovide

Guest
Comment appeler une macro dans un userform ?

j'ai écrit :
Private Sub CommandButton1_Click()
If Controls(ctl1).Value = True Then
mamacro(ctl1)
End If
End Sub

Mais ça ne marche pas (mamacro étant définie dans module). Comment faire ? J'ai essayé avec Function mais idem !

Merci pour votre aide.

Ovide
 

iperhgtl

XLDnaute Nouveau
Re : Appel macro dans userform

Je me trouve dans un cas similaire.
contexte :
J'ai un userform où on doit saisir 2 dates sur des calendriers dynamiques. Je souhaite ensuite générer un planning entre ces 2 dates pour ensuite l'imprimer.

Problème :
J'ai donc créé une macro pour le générer mais je n'arrive pas à l'appeler depuis le code associé au bouton VALIDATION du userform:confused:. "Erreur de compilation. Attendu: =" (C'est une erreur de syntaxe est pas un bug lors de l'exécution).

Code du bouton du userform "frmCalendar"
Code:
Private Sub VALIDATION_Click()
'genere le planning
    Dim date1 As Date
    Dim date2 As Date
    date1 = Calendar1.Value
    date2 = Calendar2.Value
    If CheckBox1.Value = True Then
        Module8.PlanningTemporel (date1, date2) 'c'est la qu'il y a le message d'erreur
    End If
End Sub

Code de la macro appelée (je le met au cas où)
Code:
Sub PlanningTemporel(date1, date2)
    'imprime le planning defini par une periode temporelle fixe
    StopProtection 'autre macro
    Sheets("Planning Temporel").Select
    With Sheets("Planning Temporel")
            .Select
            .Range("A1", Cells.SpecialCells(xlCellTypeLastCell)).Clear
            .Range("A1").FormulaR1C1 = "Machines"
            .Range("B1").FormulaR1C1 = "Dates"
            .Range("C1").FormulaR1C1 = "Interventions"
        End With
        'tri du listing par prochaine date d'intervention
        With Worksheets("Listing").Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("E:E")
            .SetRange Range("B:AF")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        'création du tableau a imprimer
        Worksheets("Planning Temporel").ListObjects _
            .Add(xlSrcRange, Range("$A$1:$C$1"), , xlYes) _
            .Name = "TabPlanningTemporel"
        'on parcourt ttes les lignes a partir de la 2e
        For Li = 2 To Worksheets("Listing").Cells.SpecialCells(xlCellTypeLastCell).Rows.Count
            If Worksheets("Listing").Cells(Li, "E").IsEmpty = False Then      'si la prochaine date dintervention est definie
                Worksheets("Planning Temporel") _
                    .ListObjects("TabPlanningTemporel").ListRows.Add (1)
                With Worksheets("Listing")
                    .Cells(Li, "I").Content.Copy (Worksheets("Planning Temporel") _
                        .ListObjects("TabPlanningTemporel").Range(1, 1))
                    .Cells(Li, "E").Content.Copy (Worksheets("Planning Temporel") _
                        .ListObjects("TabPlanningTemporel").Range(1, 2))
                    .Cells(Li, "M").Content.Copy (Worksheets("Planning Temporel") _
                        .ListObjects("TabPlanningTemporel").Range(1, 3))
                End With
                'voir si lintervention dapres est a imprimer
                'ie periode dintervention < intervalle du planning
                'a faire
            End If
        Next
    Sheets("Planning Temporel").Range("A1").Select
End Sub

Merci de m'aider :D
 

Discussions similaires

Réponses
13
Affichages
268
Réponses
17
Affichages
416

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane