Activer une sub sur toutes les feuilles
Fermé
Marillies
-
Modifié par Marillies le 15/09/2011 à 10:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 17 sept. 2011 à 08:04
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 17 sept. 2011 à 08:04
A voir également:
- Activer une sub sur toutes les feuilles
- Comment activer chromecast sur tv - Guide
- Comment activer windows 10 - Guide
- Activer le pavé tactile - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
- Activer clavier pc portable - Guide
6 réponses
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
15 sept. 2011 à 10:04
15 sept. 2011 à 10:04
Bonjour Marillies,
Et si tu places ton code dans un module? Cela ne résoudrait pas ton problème?
Et si tu places ton code dans un module? Cela ne résoudrait pas ton problème?
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
15 sept. 2011 à 10:14
15 sept. 2011 à 10:14
Dans un module, j'ai créé un Public Sub.
Dans chaque feuille, j'ai créé un évènement OnChange et dans le OnChange, j'ai fait un
J'ai essayé en faisant cet appel sur chaque feuille, m'évitant de retaper toute la macro à chaque fois et ça fonctionne.
Dans chaque feuille, j'ai créé un évènement OnChange et dans le OnChange, j'ai fait un
Call FonctionContenueDansModule(Argument)
J'ai essayé en faisant cet appel sur chaque feuille, m'évitant de retaper toute la macro à chaque fois et ça fonctionne.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 15/09/2011 à 10:22
Modifié par pijaku le 15/09/2011 à 10:22
Bonjour,
1- je ne comprends pas l'utilité de cette procédure...
Application.Goto d.Offset(0, 45) ?????
Mais bon cela ne me regarde pas.
2- Lorsque tu utilises des "With Sheets(1) ... End With", pour agir sur la feuille 1, il faut ajouter un point . devant les objets que tu souhaites manipuler.
Exemple :
Cordialement,
Franck P
1- je ne comprends pas l'utilité de cette procédure...
Application.Goto d.Offset(0, 45) ?????
Mais bon cela ne me regarde pas.
2- Lorsque tu utilises des "With Sheets(1) ... End With", pour agir sur la feuille 1, il faut ajouter un point . devant les objets que tu souhaites manipuler.
Exemple :
Sheets(1).Select 'tu sélectionnes la feuille 1 (select à éviter, c'est juste pour l'exemple) With Sheets(2) Range("A10").Value = 100 ' sans le point devant Range, va agir sur la Feuille 1 (feuille sélectionnée préalablement) .Range("A10").Value = "ABCD" 'va agir sur la feuille 2 (feuille concernée par le with) End With
Cordialement,
Franck P
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Heremion : Je ne comprend pas. Il faut que je l'écrive dans chaque feuille ?
Pijaku : 1- C'est une bidouille de mon prédécesseur que je n'ai pas l'autorisation de modifier. Cela centre sur le numéro de la semaine en cours.
2- Est ce que tu peux me montrer dans ma macro ou est ce que je dois modifier directement, parce que j'ai essayé de mettre des sh. mais ça bug.
-> Autre question : il faut que je mette le nom de la feuille à chaque fois, ou sh remplace ce nom la ?
-> Je ne suis pas informaticienne de base ^^
Pijaku : 1- C'est une bidouille de mon prédécesseur que je n'ai pas l'autorisation de modifier. Cela centre sur le numéro de la semaine en cours.
2- Est ce que tu peux me montrer dans ma macro ou est ce que je dois modifier directement, parce que j'ai essayé de mettre des sh. mais ça bug.
-> Autre question : il faut que je mette le nom de la feuille à chaque fois, ou sh remplace ce nom la ?
-> Je ne suis pas informaticienne de base ^^
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 15/09/2011 à 10:57
Modifié par pijaku le 15/09/2011 à 10:57
Ta macro modifiée, comme ça devrait fonctionner ... ou pas (non testé) :
Sub Auto_Open() Dim sh As Worksheet Dim TODAY As Integer Dim d As Range For Each sh In ThisWorkbook.Worksheets With sh TODAY = NoSemaineISO(Now) For Each d In .Range("A4:HP5") 'j'ai ajouté un point devant Range If d.Value = TODAY Then Application.Goto d.Offset(0, 0) Application.Goto d.Offset(0, 45) Application.Goto ActiveCell.Offset(2, -45) End If Next d End With Next sh End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
15 sept. 2011 à 14:17
15 sept. 2011 à 14:17
Que contient ta fonction NoSemaineISO?
Function NoSemaineISO() ?????? End function
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
17 sept. 2011 à 08:04
17 sept. 2011 à 08:04
Alors essaye ceci :
Sub Auto_Open()
Dim sh As Worksheet
Dim TODAY As Integer
Dim Cel As Range
For Each sh In ThisWorkbook.Worksheets
With sh
TODAY = NoSemaineISO(Now)
For Each Cel In .Range("A4:HP5") 'j'ai ajouté un point devant Range
If Cel.Value = TODAY Then
Application.Goto Cel.Offset(0, 0)
Application.Goto Cel.Offset(0, 45)
Application.Goto ActiveCell.Offset(2, -45)
End If
Next Cel
End With
Next sh
End Sub
Sub Auto_Open()
Dim sh As Worksheet
Dim TODAY As Integer
Dim Cel As Range
For Each sh In ThisWorkbook.Worksheets
With sh
TODAY = NoSemaineISO(Now)
For Each Cel In .Range("A4:HP5") 'j'ai ajouté un point devant Range
If Cel.Value = TODAY Then
Application.Goto Cel.Offset(0, 0)
Application.Goto Cel.Offset(0, 45)
Application.Goto ActiveCell.Offset(2, -45)
End If
Next Cel
End With
Next sh
End Sub
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
15 sept. 2011 à 10:53
15 sept. 2011 à 10:53
En fait, tu mets ta fonction ou ton sub dans le module Module1 par exemple, précédé bien évidemment du mot "public".
Et dans chaque feuille, dans l'évènement sur lequel tu veux que ton code s'exécute, tu fais un
Et dans chaque feuille, dans l'évènement sur lequel tu veux que ton code s'exécute, tu fais un
Call TaFonctionDuModule(argument)