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 :
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
Dites moi si je peux eviter ce sheets select à chaque fois qui rallonge énormément mon calcul.
Merci d’avance