Bonjour, j'ai créé une macro permettant à partir d'une feuille contenant un tableau de mettre au premier ou dernier plan des formes situées dans un autre document.
J'ai fais une boucle du type :
Pour i allant de 1 à 50
Voir si forme 50=vrai (dans la page 2)
alors mettre forme 50 en arrière plan (dans la page 3)
...
Et je suis obligé de rendre chaque page active 2 puis 3 à chaque selection.
Je voudrais que la page active reste la page 2 tout en changeant les formes de la page 3 (en arrière plan) car le calcul devient long.
Voici mon code :
Dites moi si je peux eviter ce sheets select à chaque fois qui rallonge énormément mon calcul.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 Sub Bouton4_clic() Dim y, z z = 2 For y = 1 To z Sheets("Base").Copy After:=Sheets(ThisWorkbook.Sheets.Count) ActiveSheet.Name = "S" & 42 + y Sheets("Plan").Select Dim nom_reseau As String Dim case_init As Range Set case_init = ActiveSheet.Range("C42") Dim i As Integer Dim j As Integer j = Range("E1").Value - 42 For i = 0 To 59 Sheets("Plan").Select case_init.Offset(j, i).Select nom_reseau = case_init.Offset(0, i).Value Sheets("S" & 42 + y).Select If case_init.Offset(j, i) = 0 Then ActiveSheet.Shapes(nom_reseau).Select Selection.ShapeRange.ZOrder msoSendToBack ActiveSheet.Shapes(nom_reseau & "b").Select Selection.ShapeRange.ZOrder msoSendToBack ActiveSheet.Shapes(nom_reseau & "c").Select Selection.ShapeRange.ZOrder msoSendToBack ElseIf case_init.Offset(j, i) = 1 Then ActiveSheet.Shapes(nom_reseau).Select Selection.ShapeRange.ZOrder msoSendToFront ActiveSheet.Shapes(nom_reseau & "b").Select Selection.ShapeRange.ZOrder msoSendToFront ActiveSheet.Shapes(nom_reseau & "c").Select Selection.ShapeRange.ZOrder msoSendToFront Else ActiveSheet.Shapes(nom_reseau).Select Selection.ShapeRange.ZOrder msoSendToFront ActiveSheet.Shapes(nom_reseau & "b").Select Selection.ShapeRange.ZOrder msoSendToBack ActiveSheet.Shapes(nom_reseau & "c").Select Selection.ShapeRange.ZOrder msoSendToBack End If Next Next y End Sub
Merci d'avance
Partager