Appliquer une macro à tout le classeur
Résolu
Pimpoye
Messages postés
87
Date d'inscription
Statut
Membre
Dernière intervention
-
Pimpoye Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
Pimpoye Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une macro qui me permet de mettre une date dans une cellule via un calendrier (plus pratique qu'une liste)
Ma question, comment appliquer cette macro à tout le classeur qui est composé de 12 feuilles identiques (12 mois)
Voici la macro (qui n'est pas de moi, merci à son auteur) :
Sub Calendar1_Click()
' Met la date sélectionnée dans la cellule active
ActiveCell.Value = Calendar1.Value
' Masque le calendrier
Calendar1.Visible = False
End Sub
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Row >= 3 And Target.Row <= 24 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
If Target.Column = 8 And Target.Row >= 3 And Target.Row <= 24 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
End If
End If
End Sub
Merci à toutes les bonnes ames pour leur aide.
J'ai une macro qui me permet de mettre une date dans une cellule via un calendrier (plus pratique qu'une liste)
Ma question, comment appliquer cette macro à tout le classeur qui est composé de 12 feuilles identiques (12 mois)
Voici la macro (qui n'est pas de moi, merci à son auteur) :
Sub Calendar1_Click()
' Met la date sélectionnée dans la cellule active
ActiveCell.Value = Calendar1.Value
' Masque le calendrier
Calendar1.Visible = False
End Sub
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Row >= 3 And Target.Row <= 24 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
If Target.Column = 8 And Target.Row >= 3 And Target.Row <= 24 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
End If
End If
End Sub
Merci à toutes les bonnes ames pour leur aide.
A voir également:
- Appliquer une macro à tout le classeur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Comment supprimer une application préinstallée sur android - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
4 réponses
Bonjour
Cette macro est dans la Worksheet de la 1ere feuille
Il te suffit de la copier et de la coller 11 fois dans le worksheet de chacune des 11 autres feuilles
Cdlmnt
Cette macro est dans la Worksheet de la 1ere feuille
Il te suffit de la copier et de la coller 11 fois dans le worksheet de chacune des 11 autres feuilles
Cdlmnt
Bonjour à tous,
ou bien dans ThisWorkbook utiliser :
Sh te passe l'objet feuille de l'évènement.
Tu peux tester sh.name si tu veux le restreindre à quelques feuilles.
eric
ou bien dans ThisWorkbook utiliser :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) .... End Sub
Sh te passe l'objet feuille de l'évènement.
Tu peux tester sh.name si tu veux le restreindre à quelques feuilles.
eric
Bonjour,
La première solution comme la deuxième me donne la même erreur que je suis incapable de résoudre.
Erreur 424 sur cette ligne : Calendar1.Visible = False
Merci et encore merci d'une nouvelle aide.
La première solution comme la deuxième me donne la même erreur que je suis incapable de résoudre.
Erreur 424 sur cette ligne : Calendar1.Visible = False
Merci et encore merci d'une nouvelle aide.
Bonjour,
Tu devrais le mettre dans un formulaire et afficher ce formulaire, ça évitera d'être lié à la feuille.
Par ailleurs je te déconseille d'utiliser les contrôles calendrier de microsoft. Selon la version d'excel installée il peut très bien ne pas être présent (moi je ne l'ai pas exemple), et c'est une bagarre sans fin à chaque fois si tu changes de version ou si tu dois l'installer sur plusieurs postes.
Intègre dans ton code un formulaire de sélection de date, comme celui de gb par exemple : https://www.cjoint.com/?DCmkomfE7Xb
Ou bien installe sur les postes mDF XLcalendar, très performant et joli.
Ensuite si tu as toujours des soucis n'oublie pas de joindre ton fichier réduit au nécessaire.
Déposer le fichier xls sur cjoint.com et coller ici le lien fourni.
eric
Tu devrais le mettre dans un formulaire et afficher ce formulaire, ça évitera d'être lié à la feuille.
Par ailleurs je te déconseille d'utiliser les contrôles calendrier de microsoft. Selon la version d'excel installée il peut très bien ne pas être présent (moi je ne l'ai pas exemple), et c'est une bagarre sans fin à chaque fois si tu changes de version ou si tu dois l'installer sur plusieurs postes.
Intègre dans ton code un formulaire de sélection de date, comme celui de gb par exemple : https://www.cjoint.com/?DCmkomfE7Xb
Ou bien installe sur les postes mDF XLcalendar, très performant et joli.
Ensuite si tu as toujours des soucis n'oublie pas de joindre ton fichier réduit au nécessaire.
Déposer le fichier xls sur cjoint.com et coller ici le lien fourni.
eric
Bonjour et merci pour vos réponses.
Eric, je ne comprends pas ta solution mais je te remercie de t'être penché sur mon cas.
J'ai repris la solution de via55 (qui me parait la plus simple à mon niveau VBA) et j'ai finalement trouvé la solution de l'erreur.
Il faut créer un calendrier par page avec des numéros différents.
Ensuite, il suffit de copier/coller et de changer le numéro du calendrier en rapport avec la page.
Merci à tous et à bientôt pour d'autres questions (et oui, je me lance dans le VBA, pas d'inquiétude, j'ai du stock en aspirine).
Eric, je ne comprends pas ta solution mais je te remercie de t'être penché sur mon cas.
J'ai repris la solution de via55 (qui me parait la plus simple à mon niveau VBA) et j'ai finalement trouvé la solution de l'erreur.
Il faut créer un calendrier par page avec des numéros différents.
Ensuite, il suffit de copier/coller et de changer le numéro du calendrier en rapport avec la page.
Merci à tous et à bientôt pour d'autres questions (et oui, je me lance dans le VBA, pas d'inquiétude, j'ai du stock en aspirine).