modif du moment d'activation macro

charette63

XLDnaute Occasionnel
bonjour,

j'ai une macro qui change le nom de l'onglet de la feuille suivant la valeur d'une cellule.
Cette valeur est liée à une données qui provient d'une autre feuille du classeur.
Elle s'active lorsque je clic sur cet onglet (evenement "Worksheet Activate).

la macro:

Code:
Sub Worksheet_Activate()
Activesheet.Name = Range("e2").Value
End Sub

y-a-t-il moyen d'activer cette macro directement au changement de la valeur sans devoir ouvrir la feuille qui va "changer" de nom. Autrement dit, y-a-t-il moyen que le nom de l'onglet change avant d'ourir la feuille.

Merci
 

charette63

XLDnaute Occasionnel
sympa de t'interesser à mon cas JNP

ce qui pourrait définir la nouvelle affectation, c'est la VALEUR des cellules de la colonne B de la feuil1 de mon second classeur (se sont les onglets de mon second classeur que je cherche, maintenant, à modifier) , valeur qui est générer par un lien provenant de mon premier classeur. Il semblerais que la macro que tu m'as transmise (transformée en rapport aux données (noms, n° de colonne) de mon deuxième classeur et placée (forcement) dans celui-ci) prenne en compte la formule des cellules de la colonne B et non la valeur de cette même colonne.

En résumé (ce sera, je l'espere plus clair) est-il possible de "dire" à la macro de lire la valeur de la cellule (qui peut-etre variable) et non sa formule (qui est invariable---->donc, pas de changement de nom de l'onglet).

merci
 

JNP

XLDnaute Barbatruc
Re : modif du moment d'activation macro

Re :),
En principe,
Code:
Feuille.Range("E2")
renvoie le résultat de la formule, et non la formule, mais par sécurité, tu peux mettre
Code:
Feuille.Range("E2").Value
Après, il peut y avoir une différence de vitesse entre la modification des résultats de formule et le VBA, à ce moment-là, il sera possible de mettre une temporisation :p...
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : modif du moment d'activation macro

Re :),
Non, à ma connaissance, il n'y a aucune événementielle qui détectera le changement du résultat d'une formule :eek:...
Si tes liaisons sont vers un classeur fermé, modifié par une autre personne, il n'y aura aucune solution :rolleyes:...
Si tes liaisons sont avec un classeur ouvert, et que c'est toi qui fait les modifications, alors tu peux mettre la boucle dans l'événementielle
Code:
Private Sub Workbook_Activate()
comme cela, la mise à jour se fera au retour dans le classeur :p...
Au pire, tu peux mettre l'événement dans le code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
de la feuille, un simple changement de sélection fera la mise à jour, mais dis toi que chaque changement de sélection lancera la boucle :(...
Voilà, je crois qu'on a fait le tour de la question...
Bon courage :cool:
 

charette63

XLDnaute Occasionnel
Re : modif du moment d'activation macro

Bonjour JPN,

J'ai eu une idée de génie, (autant s'envoyer des fleurs non?), puisque une macro ne lit pas la valeur d'une cellule mais son contenu (formule ou fonction ou lien), je "copier-collage spécial-valeur" de la cellule par macro, et ça marche.

Je sollicite de nouveau ta bienveillance pour deux (petits) problèmes

1- j'ai crée la macro du "copier-coller" via l'éditeur, j'ai donc un code pour chaque cellules copiées, est-il possible de ne créer qu'un code (dans le fichier attaché, je n'ai que trois lignes pour exemple et test, mais dans la réalité....)

2-dans le woorkbook_sheetchange, est-il possible d'avoir deux colonnes cibles pour le lancement de la macro (If target.column <>1 OU <>2 then exit sub) Actuellement, la macro ne se lance qu'au changement de nom mais l'initiale du prénom est prise en compte et ne sera dès lors pas modifiée.

avec tout mes remerciements

le fichier:
 

Pièces jointes

  • test onglets bis.xls
    42.5 KB · Affichages: 39
Dernière édition:

JNP

XLDnaute Barbatruc
Re : modif du moment d'activation macro

Re :),
1)
Code:
Range("C5:C7").Copy
Range("D5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
2) Ou <>1, ou <>2, pour moi, c'est la même chose que >2 :p...
Bonne suite :cool:
 

charette63

XLDnaute Occasionnel
salut JNP,

ben mon idée de génie, c'est de la daube. Je peux copier/coller valeur tant que je veux, c'est l'evenement "change" qui importe et l'evenement "change" s'effectue toujours en valeur sur ma colonne 3 et la macro lit le formule

Pour le point "2" , ben oui, maintenant que tu le dis, c'est évident.

grand grand merci pour ta participation, je vais explorer d'autres pistes pour mon premier problème

Cordialement
Thierry
 

Discussions similaires

Réponses
2
Affichages
268
Réponses
2
Affichages
320
Réponses
7
Affichages
370

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia