Bonjour le Forum!
Je développe actuellement un bout de code pour réaliser une action sur plusieurs feuilles: modifier certaines plages en indiquant la valeur de la cellule à la place de la formule.
D'autres feuilles ne doivent, elles, pas être modifiées (celles-ci sont connues et leur nom restera figé).
Puisque je veux parer l'ajout de nouveaux onglets dont je ne connaitrai pas le nom, j'ai tenté de mettre en place une solution dynamique qui compte les feuilles, puis applique l'action que je souhaite sur ces dernières tout en évitant cette action sur celles qui ne doivent pas être modifiées.
Concrètement:
- Un ensemble de feuilles connues ne doit pas être modifié,
- Un ensemble variable de feuilles de nom inconnu doit être modifié.
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Sub Essai() Dim myRange As Range, myRange1 As Range, myRange2 As Range, myRange3 As Range Dim derniereLigne As Long Dim i As Integer derniereLigne = Range("E7").End(xlDown).Row For i = 1 To Worksheets.Count If Worksheets(i).Name = "Data" Or Worksheets(i).Name = "Budget_2015" _ Or Worksheets(i).Name = "Budget_2016" Or Worksheets(i).Name = "Budget_2017" _ Or Worksheets(i).Name = "Liste des centres" Or Worksheets(i).Name = "CA_Moyens" Then Else 'Ici je peux voir que le nom de chaque apparait bien par des MsgBox successifs, mais l'action suivante ne fonctionne pas MsgBox Worksheets(i).Name With Worksheets(i).Name Set myRange = Range(Cells(10, 3), Cells(derniereLigne, 10)) Set myRange1 = Range(Cells(10, 14), Cells(derniereLigne, 15)) Set myRange2 = Range(Cells(10, 19), Cells(derniereLigne, 20)) Set myRange3 = Range(Cells(10, 22), Cells(derniereLigne, 25)) myRange.Value = myRange.Value myRange1.Value = myRange1.Value myRange2.Value = myRange2.Value myRange3.Value = myRange3.Value End With End If Next i End Sub
L'action s'effectue bien si je me place sur la feuille en question, mais pas d'action sur les autres en revanche.
J'imagine qu'il doit y avoir un lien avec le With, mais je ne vois pas trop pourquoi ni comment...
Merci d'avance pour votre aide ou vos axes de réflexions!
Bonne journée,
Esculape.
Partager