Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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. "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
 

Discussions similaires

Réponses
13
Affichages
318
Réponses
17
Affichages
452
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…