Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécuter des macros en "sous-marin" ?

7 réponses
Avatar
Tatane
Bonjour,

Je voudrais "figer" ma feuille mais j'ai un petit souci d'affichage quand
j'exécute des macros à l'ouverture du fichier: Les pages bougent dans tous
les sens.

J'ai beau insérer des "Application.ScreenUpdating = False" et
"Application.ScreenUpdating = True" çà et là mais rien n'y fait.
Je me demande même si c'est bien cette fonction qui convient...

Je joins mon fichier (au cas où...) http://cjoint.com/?hnp6BgsiBX

Par avance, merci si vous pouviez m'aider.

Tatane.
--
www.club-assun-billard.fr
http://8pool.over-blog.com/

7 réponses

Avatar
JP25
Bonjour,
En examinant un petit peu ton code, je pense que tu devarais déja éviter les
"Select"
Exemple au lieu de faire
Range("Z20:AA20").Select
Selection.clearcontents
Tu fais simplement
Range("Z20:AA20").ClearContents
Ce qui évite ton curseur de se ballader en permanence
Tu peux aussi éviter de sélectionner une feuille pour écrire des données,
Sheets(x).activate
Range("x,y").select ...
Tu peux simplement trouver les positions ou écrire puis
Sheets(x).cells(x,y) = rrrr
C'est aussi efficace et ça allège ton code

--
Cordialement
JP25


"Tatane" a écrit dans le message de news:

Bonjour,

Je voudrais "figer" ma feuille mais j'ai un petit souci d'affichage quand
j'exécute des macros à l'ouverture du fichier: Les pages bougent dans tous
les sens.

J'ai beau insérer des "Application.ScreenUpdating = False" et
"Application.ScreenUpdating = True" çà et là mais rien n'y fait.
Je me demande même si c'est bien cette fonction qui convient...

Je joins mon fichier (au cas où...) http://cjoint.com/?hnp6BgsiBX

Par avance, merci si vous pouviez m'aider.

Tatane.
--
www.club-assun-billard.fr
http://8pool.over-blog.com/


Avatar
Tatane
Merci "JP25", je vais essayer ce que tu me porposes et je te tiens au courant
lundi.

Bon WE.

--
http://www.club-assun-billard.fr/
http://8pool.over-blog.com/



Bonjour,
En examinant un petit peu ton code, je pense que tu devarais déja éviter les
"Select"
Exemple au lieu de faire
Range("Z20:AA20").Select
Selection.clearcontents
Tu fais simplement
Range("Z20:AA20").ClearContents
Ce qui évite ton curseur de se ballader en permanence
Tu peux aussi éviter de sélectionner une feuille pour écrire des données,
Sheets(x).activate
Range("x,y").select ...
Tu peux simplement trouver les positions ou écrire puis
Sheets(x).cells(x,y) = rrrr
C'est aussi efficace et ça allège ton code

--
Cordialement
JP25


"Tatane" a écrit dans le message de news:

Bonjour,

Je voudrais "figer" ma feuille mais j'ai un petit souci d'affichage quand
j'exécute des macros à l'ouverture du fichier: Les pages bougent dans tous
les sens.

J'ai beau insérer des "Application.ScreenUpdating = False" et
"Application.ScreenUpdating = True" çà et là mais rien n'y fait.
Je me demande même si c'est bien cette fonction qui convient...

Je joins mon fichier (au cas où...) http://cjoint.com/?hnp6BgsiBX

Par avance, merci si vous pouviez m'aider.

Tatane.
--
www.club-assun-billard.fr
http://8pool.over-blog.com/







Avatar
Tatane
Re... Bon WE ?

Cela fonctionne mais j'ai toujours le souci avec ce code:
-------------
Sub Plage_Clients()
Feuil3.Activate
Application.ScreenUpdating = False
Range("A2").Select
Dim MASELECTION As Range
Dim a As Variant
While IsEmpty(ActiveCell) = False
ActiveCell.Offset(1, 0).Activate
Wend
a = ActiveCell.Offset(-1).Address
Set MASELECTION = Range("A2" & ":" & a)
MASELECTION.Select
MASELECTION.Name = "CLIENTS"
Range("A1").Select
Application.ScreenUpdating = True
End Sub
-------------
Si j'applique ta solution, cela ne fonctionne pas pour le code ci-dessus, il
garde la page affichée (feuil1 au lieu de feuil3) pour faire la sélection et
donc définit une plage fausse.

J'ai essayé la commande "With" sans succès. Aurais-tu une solution pour ce
cas ?

Par avance, merci.

--
http://www.club-assun-billard.fr/
http://8pool.over-blog.com/



Merci "JP25", je vais essayer ce que tu me porposes et je te tiens au courant
lundi.

Bon WE.

--
http://www.club-assun-billard.fr/
http://8pool.over-blog.com/



Bonjour,
En examinant un petit peu ton code, je pense que tu devarais déja éviter les
"Select"
Exemple au lieu de faire
Range("Z20:AA20").Select
Selection.clearcontents
Tu fais simplement
Range("Z20:AA20").ClearContents
Ce qui évite ton curseur de se ballader en permanence
Tu peux aussi éviter de sélectionner une feuille pour écrire des données,
Sheets(x).activate
Range("x,y").select ...
Tu peux simplement trouver les positions ou écrire puis
Sheets(x).cells(x,y) = rrrr
C'est aussi efficace et ça allège ton code

--
Cordialement
JP25


"Tatane" a écrit dans le message de news:

Bonjour,

Je voudrais "figer" ma feuille mais j'ai un petit souci d'affichage quand
j'exécute des macros à l'ouverture du fichier: Les pages bougent dans tous
les sens.

J'ai beau insérer des "Application.ScreenUpdating = False" et
"Application.ScreenUpdating = True" çà et là mais rien n'y fait.
Je me demande même si c'est bien cette fonction qui convient...

Je joins mon fichier (au cas où...) http://cjoint.com/?hnp6BgsiBX

Par avance, merci si vous pouviez m'aider.

Tatane.
--
www.club-assun-billard.fr
http://8pool.over-blog.com/









Avatar
Francois L
Re... Bon WE ?

Cela fonctionne mais j'ai toujours le souci avec ce code:



Bonjour,

La macro du Thisworbook :
'----------------------------------
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Call Plage_Clients
Call Plage_Fournisseurs
Call Plage_Prestations
Call RAZ_Devis
Feuil1.Activate
Application.ScreenUpdating = True
End Sub
'-----------------------------------

Supprimer les
Application.ScreenUpdating
des macros appelées par la macro précédente.

--
François L

Avatar
Tatane
Bonjour "Francois L" et merci car cela fonctionne bien.

Donc, si je comprend bien : Les macros lancées au démarrage font partie de
la procédure "Workbook open" et ne sont pas gérées indépendemment du fait que
ma procédure reviens terminer le "Workbook open" après avoir traité les
macros.

Bonne journée.
--
http://www.club-assun-billard.fr/
http://8pool.over-blog.com/



Re... Bon WE ?

Cela fonctionne mais j'ai toujours le souci avec ce code:



Bonjour,

La macro du Thisworbook :
'----------------------------------
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Call Plage_Clients
Call Plage_Fournisseurs
Call Plage_Prestations
Call RAZ_Devis
Feuil1.Activate
Application.ScreenUpdating = True
End Sub
'-----------------------------------

Supprimer les
Application.ScreenUpdating
des macros appelées par la macro précédente.

--
François L




Avatar
Francois L
Bonjour "Francois L" et merci car cela fonctionne bien.

Donc, si je comprend bien : Les macros lancées au démarrage font partie de
la procédure "Workbook open" et ne sont pas gérées indépendemment du fait que
ma procédure reviens terminer le "Workbook open" après avoir traité les
macros.

Bonne journée.


Re,

La procédure à l'ouverture appelle les autres macros. Si elles
contiennent un application.screenpdating = true (qui s'applique à
l'application comme son nom l'indique), le rafraichissement est rétabli
jusqu'au prochain application.screenupdating = false d'où ce que tu as
constaté dans ta procédure initiale.

--
François L

Avatar
Tatane
Merci de la précision. Bonne journée.
--
http://www.club-assun-billard.fr/
http://8pool.over-blog.com/



Bonjour "Francois L" et merci car cela fonctionne bien.

Donc, si je comprend bien : Les macros lancées au démarrage font partie de
la procédure "Workbook open" et ne sont pas gérées indépendemment du fait que
ma procédure reviens terminer le "Workbook open" après avoir traité les
macros.

Bonne journée.


Re,

La procédure à l'ouverture appelle les autres macros. Si elles
contiennent un application.screenpdating = true (qui s'applique à
l'application comme son nom l'indique), le rafraichissement est rétabli
jusqu'au prochain application.screenupdating = false d'où ce que tu as
constaté dans ta procédure initiale.

--
François L