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 = True

Mets simplement

Application.ScreenUpdating = True

Cordialement

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 Sub

Cordialement

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 bienvenu en vba !) :

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

Rechercher des sujets similaires à "figer ecran lors execution macro"