> Tous les forums > Forum Bureautique
 Lancer macro automatiquement à chaque modif celluleSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
rudika
  Posté le 26/11/2018 @ 14:12 
Aller en bas de la page 
Petite astucienne

Bonjour,

je souhaiterais que la macro s'applique dès que je modifie la valeur dans ma cellule.

Pour résumer, je rentre des noms dans mes cellules de la colonne B. Ces noms sont ceux donnés aux onglets dans lesquels je mets cette macro. Ci-dessous, la macro fait réréfence à la cellule B9 de mon onglet "mode d'emploi". Si je change le nom en B9, je dois cliquer sur l'onglet pour exécuter ma macro.

Private Sub Worksheet_Activate()

ActiveSheet.Name = Sheets("mode_d'emploi").Range("b9")

End Sub

je voudrais faire en sorte de ne pas avoir à cliquer sur l'onglet. Juste modifier nom en B9 et que l'onglet prenne le même nom. Est-ce possible ?

Merci d'avance.

Rudika

[Configuration automatique à compléter]
Windows 7
Chrome 70.0.3538.110

Publicité
ferrand
 Posté le 26/11/2018 à 15:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Réagir à un changement de valeur opéré par l'utilisateur, c'est l'évènement Change !

Et si ton opération concerne plusieurs feuilles, c'est à traiter au niveau classeur.

Cordialement.

rudika
 Posté le 26/11/2018 à 15:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Bonjour ferrand,

c à dire ? comment cela se traduit-il dans ma macro ?

ferrand
 Posté le 27/11/2018 à 14:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Ce n'est pas clair ? Tu veux qu'une procédure se déclenche automiquement lorsque le contenu d'une cellule varie.

Une procédure qui se lance toute seule, c'est qu'elle réagit à un évènement. Une procédure Activate réagit à l'évènement activation d'une feuille, une procédure SelectionChange réagit lorsque la position du curseur est modifiée sur une feuille, et pour l'évènement changement de valeur dans une ou plusieurs cellules c'est une procédure Change qui pourra intervenir.

Si la procédure à construire ne concerne qu'une feuille, on programme l'évènement Change de la feuille.

Si elle concerne plusieurs feuilles, on programme l'évènement SheetChange du classeur (lequel se déclenche lorsqu'un changement intervient dans une quelconque feuille du classeur.

Cordialement.

rudika
 Posté le 28/11/2018 à 15:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Bonjour,

en fait, je bricole en matière de macros.

Si tu pouvais réécrire la macro telle qu'elle devrait être pour fonctionner, je veux bien. Et si j'osais abuser, je voudrais qu'elle opère comme suit, car mes collègues ont décidé d'un autre mode de fonctionnement depuis mon post:

En Feuil1, colonne A, une liste de noms (noms qui vont changer de temps en temps).

En Feuil2, le nom de l'onglet sera le nom contenu dans la cellule A10.

En Feuil3, le nom de l'onglet sera le nom contenu dans la cellule A11.

En Feuil4, le nom de l'onglet sera le nom contenu dans la cellule A12.

ET AINSI DE SUITE..

Quelle macro, dans quelle feuille ?

Sans oublier que le changement devra s'opérer sans avoir à cliquer sur les onglets pour validation.

Alors, pour moi, c'est beaucoup, mais visiblement, pour toi, c'est un jeu d'enfant et je t'envie. Je ne désespère pas de comprendre.

Merci ferrand.

ferrand
 Posté le 29/11/2018 à 10:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Mets un fichier modèle...

Cordialement.

rudika
 Posté le 29/11/2018 à 15:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

ok ferrand.

merci à toi de me consacrer de ton temps. Mais je te promets, je me sers bien de ce que tu m'as déjà donné comme infos précédemment.. Je cherche à comprendre le fonctionnement et réutilise dans divers documents de travail.

voici le lien pour récupérer mon modèle. https://www.cjoint.com/c/HKDo2r6BvOG

cordialement.

rudika

ferrand
 Posté le 01/12/2018 à 07:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

La plage A10:A15 contient les noms actuels de tes feuilles.

Lorsque tu en modifies un, le nom de la feuille change.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim anf$, nnf$
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Me.Range("A10:A15")) Is Nothing Then
nnf = Target
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Undo
anf = Target
Worksheets(anf).Name = nnf
Target = nnf
Application.EnableEvents = True
End If
End Sub

La procédure va dans le module de la feuille.

https://www.cjoint.com/c/HLbf3AtQZSu

NB- Ne pas oublier de rétablir l'extension xlsm du fichier avant de l'ouvrir.

Cordialement.

rudika
 Posté le 01/12/2018 à 15:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

merci beaucoup ferrand.

Cela semble bien fonctionner. je verrai au bureau en l'adaptant.

bon w-end.

Cordialement.

rudika

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique