Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Pas besoin de macro dans les feuilles, uniquement dans ThisWorkbook :
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.[B1].Formula <> "=SUM(A1:A3)" Then Sh.[B1] = "=SUM(A1:A3)"
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Workbook_SheetActivate Sh
End Sub
'celle-ci n'est pas absolument indispensable
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Workbook_SheetActivate Sh
End Sub
Ceci est beaucoup mieux car les cellules B1 sont remplies dès l'ouverture du classeur :
Code:
Private Sub Workbook_Open()
Dim w As Worksheet
For Each w In Worksheets
Workbook_SheetChange w, w.[B1]
Next
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
If Sh.[B1].Formula <> "=SUM(A1:A3)" Then Sh.[B1] = "=SUM(A1:A3)"
End Sub
Vous aurez compris que les formules en B1 ne peuvent plus être effacées.
Gilbert, le code fonctionne, seulement dès qu'une entrée est tapée dans une feuille, la macro change de feuille immédiatement, ce qui n'est évidemment pas pratique.
Par ailleurs, les codes de Job ont l'avantage d'être plus simples. Merci.
Job, j'avoue ne pas avoir compris la différence entre les deux codes. Je tâtonne en Vba, vous devez certainement vous en souvenir.
Vous aurez compris que les formules en B1 ne peuvent plus être effacées.
Pour la suite, j'aurai donc deux questions si vous voulez bien.
1/ Est il possible d'exclure certaines feuilles de ce code ? Mon classeur en contient près d'une soixantaine.
2/ Est il judicieux de suivre cette voie, sachant que mon idée était de transformer un classeur empli de formules et de les remplacer par du code. Ce classeur fait 20 Mo; je pensais l'alléger (enfin apprendre à essayer) en le transformant en Vba, mais je me rends compte que le code sur lequel j'ai demandé une explication ne fait que remplir les cellules avec des formules. Je n'ai donc pas l'impression que cela fera une différence à la fin. J'ai également dans l'idée qu'il faudrait programmer directement en Vba, ce dont je me sens bien incapable pour l'instant.
Private Sub Workbook_Open()
Dim w As Worksheet
For Each w In Worksheets
Workbook_SheetChange w, w.[B1]
Next
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim a, i As Integer
a = Array("Feuil1", "Feuil2", "Feuil3") 'CodeNames des feuilles à exclure
For i = 0 To UBound(a)
If Sh.CodeName = a(i) Then Exit Sub
Next
If Sh.[B1].Formula <> "=SUM(A1:A3)" Then Sh.[B1] = "=SUM(A1:A3)"
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD