[VBA] Le même code dans plusieurs feuilles

Fermé
LordHorus - 18 mai 2017 à 17:50
 LordHorus - 18 mai 2017 à 20:41
Bonjour,

je dois faire un changement de couleur automatique en fonction d'une valeur saisie dans la cellule en VBA. Je sais comment faire sur une feuille mais je ne sais pas comment écrire le même code sur beaucoup de feuilles sans avoir à C/C dans chaque feuille associée, comment puis-je faire ?

Merci d'avance !

A voir également:

13 réponses

Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 105
Modifié le 18 mai 2017 à 18:03
Bonjour,

Si j'ai bien compris, une solution rapide, tu ouvres ta Thiswokbook dans le VBA et tu colles le code dans cette syntaxe
le fait de basculer sur tes feuilles le code s'active

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' et ici ton code
' ou tu fais référence à ta macro précédé de Call comme ci dessous
Call le nom de ta macro
End Sub

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
1
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 105
18 mai 2017 à 19:27
Re,

dans la Thiswokbook, comme cela

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Target = "Test"
End Sub

1
Bonjour, merci pour ta réponse rapide, j'ai trouvé la méthode correspondante, c'est Workbook_SheetChange() car je veux appeler une procédure au changement de valeur d'une cellule. Merci d'avoir confirmé ma piste :)
0
Je met un lien très explicatif pour les prochains qui viendront sur ce topic en quête d'une réponse : https://www.excel-pratique.com/fr/vba/evenements_classeur.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Par contre je ne comprends pas, si je modifie une cellule, la cellule A1 n'est-elle pas censée prendre "Test" comme valeur ?

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Range("A1") = "Test"
End Sub
0
Ça ne fait rien :/ Quand je met par exemple dans une feuille spécifique :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox("Test")
End Sub

Ça m'affiche bien le message quand je modifie une cellule, mais quand je met ce code dans ThisWorkbook ça marche plus
0
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 105
18 mai 2017 à 20:03
Re,

ce que tu as écrit ne veux rien dire, explique exactement ce que tu veux faire
0
Non c'est bon j'ai réussi à régler le problème merci :) En fait j'avais deux feuilles ThisWorkbook (ThisWorkbook et ThisWorkbook1) je ne sais pas pourquoi et j'avais mis dans la premier. Mais quand j'ai mis dans ThisWorkbook1 ça a marché
0
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 105
18 mai 2017 à 20:12
Re,

comment ça deux Thiswokbook, par classeur tu n'en as qu'une
0
Bah j'ai repris le fichier de quelqu'un et y en avait deux et ils sont tous les deux insupprimables
0
Cf. screenshot : http://www.noelshack.com/2017-20-1495131412-sans-titre.png
0
Mike-31 Messages postés 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 105
18 mai 2017 à 20:26
Re,

oui je vois bien qu'il y en a deux, mais ce n'est pas logique et encore plus bizarre est que celui qui fonctionne est le doublon Thiswokbook(1)
pour la part je referais mon dossier à partir d'un nouveau fichier, mais bon cela n'engage que moi et demande un peu de travail
0
Je suis juste stagiaire dans l'entreprise mais je dirai qu'il faudra refaire un dossier l'an prochain (mais bon je suis le seul informaticien donc je verrai) ^^
0