Aide sur Macro excel evennementielle

Fermé
Dom51 - 20 oct. 2007 à 13:19
 Dom51 - 20 oct. 2007 à 18:28
Bonjour, à tous !
Comme pas mal de monde j'ai un petit souci de syntaxe. Je suis en train d' essayer de faire une macro pour qu'a un jour donné (le Vendredi) a l'ouverture du classeur excel me propose d'imprimer telle ou telle feuille.Cela fonctionne mais nécéssite une petite amélioration :
Le classeur contient une 15 de feuilles Je suis oblige d'ouvrir une feuille par défaut (Di pair) dans laquelle j'ai place une formule WeekDay;
Le problème c'est que ce n'est pas forcément la feuille que les opérateurs utilisent et ca les perturbent qu'une autre feuille soit ouverte par défaut
La classe serait que je n'ai pas à ouvrir la feuille Di pair mais de laisser la feuille affichée à la dernière fermeture du classeur et que VBa détermine tout seul si je suis vendredi
Or je sais que la fonction WeekDay(Date,FirstDayOfWeek=vbMonday) existe dans VBA mais je n'arrive pas à l'utilisée

D'avance merci à tous!
Dom

Sub Auto_Open() ' déclanchement à l'ouverture du classeur

Sheets("Di pair").Select
If Range("U11") = 6 Then ' Condition que joursemaine = vendredi


If Weekday = 6 Then
msg = "Voulez-vous imprimer la feuille d'absence de la semaine paire ?"
confirmation = MsgBox(msg, vbYesNo + vbExclamation, "Nous sommes vendredi, vous devez afficher le planning des absences")

Else
Exit Sub
End If

If confirmation = vbYes Then
Sheets("Abs pair").PrintOut Copies:=1
Exit Sub
End If

If confirmation = vbNo Then
msg = "Voulez-vous imprimer la feuille d'absence de la semaine impaire ?"
confirmation = MsgBox(msg, vbYesNo + vbExclamation, "Nous sommes vendredi, vous devez afficher le planning des absences")
End If

If confirmation = vbYes Then
Sheets("Abs imp").PrintOut Copies:=1
End If
End Sub
A voir également:

2 réponses

Utilisateur anonyme
20 oct. 2007 à 13:48
Bonjour,

Private Sub Workbook_Open() ' déclanchement à l'ouverture du classeur

    Dim strFeuille As String, intConfirmation As Integer, strMsg As String

    strFeuille = ActiveSheet.Name
    Sheets("Di pair").Select
    If (Range("U11") = 6) Then ' Condition que joursemaine = vendredi
        If (Weekday(Now) = 6) Then
            strMsg = "Voulez-vous imprimer la feuille d'absence de la semaine paire ?"
            intConfirmation = MsgBox(strMsg, vbYesNo + vbExclamation, "Nous sommes vendredi, vous devez afficher le planning des absences")
            If (intConfirmation = vbYes) Then
                Sheets("Abs pair").PrintOut Copies:=1
            Else
                If (intConfirmation = vbNo) Then
                    strMsg = "Voulez-vous imprimer la feuille d'absence de la semaine impaire ?"
                    intConfirmation = MsgBox(strMsg, vbYesNo + vbExclamation, "Nous sommes vendredi, vous devez afficher le planning des absences")
                    If (intConfirmation = vbYes) Then
                        Sheets("Abs imp").PrintOut Copies:=1
                    End If
                End If
            End If
        End If
    End If
    Sheets(strFeuille).Select

End Sub
'


L'utilisation de l'instruction "Exit Sub" n'est pas souhaitable, repenser votre algorithme de résolution
afin d'en utilisé le moins possible.

Lupin



Lupin
1
Bonjour,
Super ca fonctionne , En fait ecris de cette manière je comprends mieux l'arboressence, Il faut mettre toutes les conditions IF et à la fin fermer avec les End If
Merci de ton aide. Je suis vraiment un débutant en VBA
Dom51
0
OK Merci je vais essayer ça pour voir
Merci pour votre aide
Dom51
0