Figer l'écran lors d'exécution macro
Bonjour à tous,
Je sais qu'il y a eu beaucoup de sujets sur ce thème mais je ne parviens pas à appliquer les formules à mon code vba.
J'ai une macro qui agit sur deux feuilles différentes. J'ai placé un bouton sur chaque feuille qui lance ma macro. Mais je voudrais que lorsque je lance la macro la feuille ne bouge pas (si j'appuie sur le bouton sur la première feuille alors celle-ci ne bouge pas, et surtout sur la deuxième feuille car il s'agit d'une map)
Lorsque j'utilise Application.ScreenUpdating = False au début et Application.ScreenUpdating = True à la fin de la macro, la macro me renvoie toujours à la première feuille .
J'espère avoir été clair, quelqu'un saurait comment faire svp ?
Je rajoute le morceau de code qui pose problème je pense :
'triage des données dans l'ordre sur la feuille Europe view
Range("C6:C25").Select
ActiveWorkbook.Worksheets("Europe view").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Europe view").Sort.SortFields.Add Key:=Range("C6") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Europe view").Sort
.SetRange Range("A6:D25")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Coloration des formes libres dans la deuxième feuille map
linit_tab = 6
cinit_tab = 3
Blue = 20
Red = 5
Green = 90
j = 0
While j < 9
Country_name = ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, 1)
Set Country = Worksheets("Map").Shapes(Country_name)
ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, cinit_tab).Interior.Color = RGB(Red, Green, Blue)
Country.Fill.ForeColor.RGB = RGB(Red, Green, Blue)
Country.Fill.Solid
Red = Red + 25
Blue = Blue + 5
Green = Green + 15
j = j + 1
Wend
Red = 255
Green = 255
Blue = 0
While j < 20
Country_name = ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, 1)
Set Country = Worksheets("Map").Shapes(Country_name)
ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, cinit_tab).Interior.Color = RGB(Red, Green, Blue)
Country.Fill.ForeColor.RGB = RGB(Red, Green, Blue)
Country.Fill.Solid
Green = Green - 25
j = j + 1
Wend
ActiveWorkbook.Worksheets("Map").Application.ScreenUpdating = True
Bonjour
Lorsque j'utilise Application.ScreenUpdating = False au début et Application.ScreenUpdating = True à la fin de la macro, la macro me renvoie toujours à la première feuille .
On n'a pas tout le code, dès lors pas facile de comprendre quand tu dis que la feuille bouge ou que tu es renvoyé à la première feuille.
Toutefois à la fin du code, pourquoi cette instruction ?
ActiveWorkbook.Worksheets("Map").Application.ScreenUpdating = TrueMets simplement
Application.ScreenUpdating = TrueCordialement
Bonjour Dan,
voilà tout le code, je ne peux malheureusement pas mettre le fichier trop volumineux.
La feuille qui devrait rester figée est la feuille "map" lorsque je lance la macro mais je suis renvoyé à la fin de l'exécution à la feuille "Europe overview"
J'avais oublié d'enlever le ActiveWorkbook.Worksheets (je n'ai pas encore bien compris l'utilisation de cete fonction) mais cela ne change rien...
Sub European_Diesel_mapping()
'
' Tri_Auto Macro
'
Dim j As Integer
Dim cinit_tab As Integer
Dim linit_tab As Integer
Dim Green As Integer
Dim Red As Integer
Dim Country As Shape
Dim Country_name As String
Dim Blue As Integer
Dim LaDate As String
Dim Mois As String
Dim Année As String
Application.ScreenUpdating = False
linit_tab = 6
cinit_tab = 3
For j = 0 To 19
ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, cinit_tab).Interior.ColorIndex = xlColorIndexNone
Next
Mois = 12
Année = 2014
LaDate = Mois & "/01/" & Année
Mois = InputBox("Entrez le mois en chiffres:", "Mois Voulu", Mois)
Année = InputBox("Entrez l'année:", "Année Voulue", Année)
LaDate = Mois & "/01/" & Année
Worksheets("Europe View").Cells(4, 3) = LaDate
'triage des données dans l'ordre sur la feuille Europe view
Range("C6:C25").Select
ActiveWorkbook.Worksheets("Europe view").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Europe view").Sort.SortFields.Add Key:=Range("C6") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Europe view").Sort
.SetRange Range("A6:D25")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Coloration des formes libres dans la deuxième feuille map
linit_tab = 6
cinit_tab = 3
Blue = 20
Red = 5
Green = 90
j = 0
While j < 9
Country_name = ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, 1)
Set Country = Worksheets("Map").Shapes(Country_name)
ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, cinit_tab).Interior.Color = RGB(Red, Green, Blue)
Country.Fill.ForeColor.RGB = RGB(Red, Green, Blue)
Country.Fill.Solid
Red = Red + 25
Blue = Blue + 5
Green = Green + 15
j = j + 1
Wend
Red = 255
Green = 255
Blue = 0
While j < 20
Country_name = ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, 1)
Set Country = Worksheets("Map").Shapes(Country_name)
ActiveWorkbook.Worksheets("Europe view").Cells(j + linit_tab, cinit_tab).Interior.Color = RGB(Red, Green, Blue)
Country.Fill.ForeColor.RGB = RGB(Red, Green, Blue)
Country.Fill.Solid
Green = Green - 25
j = j + 1
Wend
Application.ScreenUpdating = True
End Sub
Bonjour à vous deux,
Un truc peut être tout simple. Dans les propriétés de la feuille concernées, cibler la plage dans la propriété ScrollArea
Exemple ScrollArea $A$1:$F$40
la page ne peut être baladée que dans cette limite.
Attention, cette donnée est volatile. Au redemarrage elle disparait. Il est possible de le mettre dans le thisworkbook.
Genre:
Private Sub Workbook_Open()
Feuil1.ScrollArea = $A$1:$F$40
End SubCordialement
Bonjour,
Merci mais lorsque j'effectue le code sur la feuille "Map" (j'appuie sur le bouton) quand la macro se termine je "retombe" toujours sur la feuille "Europe Overview"...
Mais merci ddept88 tu as répondu à ma prochaine question
J'ai finalement contourner le problème avec un activate qui me renvoie la feuille avec la carte et avec la fonction de ddept88 ça se tient (je me suis un peu compliqué pour rien
Sheets("Ma_Feuille").Activate
Sur chaque bouton j'ai mis la même macro mais avec cette fonction à la fin pour afficher l'une ou l'autre des feuilles.
Merci pour votre aide