Même macro sur plusieurs onglet d'un classeur

Fermé
Camillou93 Messages postés 3 Date d'inscription jeudi 30 mai 2013 Statut Membre Dernière intervention 31 mai 2013 - Modifié par Camillou93 le 30/05/2013 à 12:33
Camillou93 Messages postés 3 Date d'inscription jeudi 30 mai 2013 Statut Membre Dernière intervention 31 mai 2013 - 31 mai 2013 à 10:47
Bonjour,

C'est la première fois que je pose une question sur le forum, j'espère que je vais faire les choses comme il faut.

Mon problème est le suivant.
J'utilise une macro qui me permet d'afficher la date du dernier enregistrement de mon fichier.
Maintenant je voudrai appliquer cette macro sur plusieurs onglets d'un même classeur. Mais l'appliquer distinctement pour chaque onglet.

Pour être certaine d'être claire, mon classeur contient des listes d'invitations pour chaque ville.
feuille 1 = LYON, feuille 2 = NANTES...etc
Je voudrais donc, quand j'enregistre une modification sur Nantes, que la date ne change pas sur Lyon, Strasbourg...etc.

Je travaille sur Excel 2011 et je suis sur mac.

Voici le code de la macro:

Private Sub Workbook_beforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Worksheets("LYON")
.Range("C3") = Now()
End With
End Sub

J'ai évidement essayé de mettre le même code (en changeant le nom de l'onglet à chaque fois) plusieurs fois à la suite dans ThisWoorBook mais à ce moment là j'ai un message d'erreur qui me dit "nom ambigue detecté : workbook_BeforeSave" et la première ligne du code est surligné en jaune.

J'ai le sentiment que c'est un tout petit truc qui me manque mais ça fait 3 jours que je suis dessus et j'abandonne.
Si quelqu'un a une solution, je le remercie par avance !
A voir également:

3 réponses

.Grincheux. Messages postés 211 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 22 octobre 2016 84
Modifié par .Grincheux. le 30/05/2013 à 14:00
Bonjour Camille,

Tu ne peux avoir qu'une seule fonction Workbook_beforeSave(...), d'où l'erreur lorsque tu la recopies en plusieurs fois.

Pour enregistrer la date sur chaque feuille, c'est le bloc de ligne suivant qu'il faut recopier plusieurs fois :
With Worksheets("LYON")
.Range("C3") = Now()
End With 

Ce qui donnerait quelque chose comme ceci, en optimisant un peu :
Private Sub Workbook_beforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Worksheets("LYON").Range("C3") = Now()
    Worksheets("NANTES").Range("C3") = Now()
    Worksheets("PARIS").Range("C3") = Now()
    'Etc.
End Sub 

Par contre, cette formule va mettre à jour les dates de toutes les feuilles, même celles qui n'ont pas été modifiées.

Pour y remédier, il vaut peut-être mieux que tu utilises la fonction suivante, à recopier dans chaque feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Range("C3") = Now()
End Sub

Bonne journée !
1
Camillou93 Messages postés 3 Date d'inscription jeudi 30 mai 2013 Statut Membre Dernière intervention 31 mai 2013
Modifié par Camillou93 le 30/05/2013 à 15:14
Merci vraiment beaucoup Grincheux de t'être penché sur mon cas !!! C'est vraiment chouette le concept de forum !!

Alors j'ai fait ce que tu m'as dit, j'ai utilisé le nouveau code que tu m'as donné et dans la fenêtre de projet, je l'ai copié sur chaque feuille et j'ai effacer le code de la feuille ThisWorkBook.

Et oui ça marche !!!! enfin presque....

La date se met à jour mais pas quand je fais cmd + S mais quand je me mets sur la cellule et que je fais Suppr.

Donc sur le principe, c'est bon, mais ça ne se fait pas automatiquement, il faut que j'y pense...

As-tu un explication/solution ?
0
.Grincheux. Messages postés 211 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 22 octobre 2016 84
30 mai 2013 à 18:42
Normalement, la date se met à jour dès que le contenu d'une cellule est modifié. Ce n'est pas le cas ?

J'imaginais que l'objectif pour toi était d'enregistrer la date de la dernière modification. Ma solution ne fonctionne pas, en effet, si tu ouvres le fichier puis l'enregistre sans rien modifier.
0
Camillou93 Messages postés 3 Date d'inscription jeudi 30 mai 2013 Statut Membre Dernière intervention 31 mai 2013
31 mai 2013 à 10:47
Bonjour Bonjour i

Tu avais très bien imaginé !! C'est exactement ce que je voulais faire ! Saufe que je n'avais absolument pas envisagé que la date pouvait se mettre à jour juste en modifiant une cellule. C'est encore mieux !!
En fait, je n'avais compris et donc pas essayé de modifié une cellule....

Bref, c'est génial !
Un grand merci à toi !!!!
0