Aide sur Macro excel evennementielle
Dom51
-
Dom51 -
Dom51 -
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
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:
- Aide sur Macro excel evennementielle
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide
2 réponses
Bonjour,
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
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
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