Utilisation de Application.ScreenUpdating

D

damos

Guest
Bonjour à tous,

Est ce que quelqu'un saurait me dire pourquoi dans un code en VBA, alors que j'utilise la ligne suivante:
Application.ScreenUpdating = False
La valeur de Application.ScreenUpdating est toujours True dans la procédure????

Merci d'avance.

A+ Damos
 
@

@+Thierry

Guest
Bonsoir Damos, le Forum

Bizarre ton histoire, je viens de faire ce test (horrible test il y a des Select de partout !! lol) dans un classeur vierge contenant trois feuilles :

Sub AppliUpDateScreenTest()
Dim i As Byte, y As Byte
Dim TheTest As Boolean

Application.ScreenUpdating = False

TheTest = Application.ScreenUpdating
MsgBox TheTest

For i = 1 To 3
With Sheets(i)
.Select
For y = 1 To 100
.Cells(y, 1).Select
Selection.Value = Now
Next
End With
Next

Application.ScreenUpdating = True

TheTest = Application.ScreenUpdating
MsgBox TheTest
End Sub

On lance la macro et on ne voit rien se passer sauf qu'on fini en feuille trois. Le Message apparait 2 fois : une Fois False, une Fois True....

Essaies, et dis-nous ?

Bonne Soirée
@+Thierry


PS !!
Si un jour vous devez marquer la date et l'heure courante sur toutes les celulles de A1 à A100 de la feuille 1 à 3, (macro hyper ultra utile !!!) surtout n'utilisez pas le test ci-dessus mais plutôt ceci :

Sub TheTest()
Dim i As Byte, y As Byte

For i = 1 To 3
With Sheets(i)
For y = 1 To 100
.Cells(y, 1) = Now
Next
End With
Next
End Sub
 
D

damos

Guest
Merci Thierry pour ta réponse rapide.

En effet ton test est concluant, mais pourquoi lorsque j'exécute le code en pas à pas (F8) et que je positionne le curseur sur application.screenupdating:
- l'info bulle me donne la valeur vrai
- Un espion me donne la valeur faux
- et l'écran est bien mis à jour en permanence

Etrange??

A+ Damos
 
@

@+Thierry

Guest
Re Damos, le Forum

Le curseur en mode débogage, m'affiche à moi aussi la valeur True, après passage en False, ce n'est pas bien inquiétant, je soupsonne simplement que le PopUp du Curseur affiche la valeur par défaut...

Ce qui est plus ennuyeux c'est que tu dis que l'écran est bien mis à jour en permanence...

Même avec mon test ci-dessus ?

@+Thierry
 
@

@+Thierry

Guest
Arf !!

Oui en mode débogage, en pas à pas détaillé c'est normal !! toutes les actions se produisent les unes après les autres y compris les Select !

Maximize la fenetre VBE et Hop plus de problème en mode débogage !!!

Non je croyais que tu avais "cassé" ton Excel et çà le fesait en mode RunTime !

Alors tout va bien !
@+Thierry
 
@

@+Thierry

Guest
Re Damos,

Pas sûr de comprendre ta dernière question... Mais à toutes fins utiles :

Sub TheScrolling()
Dim TheRow As Integer
Dim i As Integer

For i = 1 To 10000
If UCase(Cells(i, 1)) = "TOTO" Then
TheRow = Cells(i, 1).Row
ActiveWindow.ScrollRow = TheRow
MsgBox TheRow
End If
Next i
End Sub

On pourrait éviter de passer par TheRow en plus directe, mais c'était pour faire un exemple...

Sub TheScrolling()
Dim i As Integer

For i = 1 To 10000
If UCase(Cells(i, 1)) = "TOTO" Then
ActiveWindow.ScrollRow = Cells(i, 1).Row
End If
Next i
End Sub

Bye
@+Thierry
 
D

damos

Guest
La fonction scrollrow permet de modifier la zone affichée à l'écran en positionnant une cellule en haut à gauche de l'écran.

Je vais essayer d'être un peu plus clair quand à ce que je voudrais obtenir...
Je prends un exemple:
Dans une classeur affiché à l'écran,j'aperçois les cellules A13 à L44.
Ce que je voudrais obtenir, c'est un test , sous VBA, qui me permette de savoi que la cellule A48 n'est pas visible actuellement par l'utilisateur avant de déplacer la zone visible.


je pense que c'est plus clair.

Damos
 
@

@+Thierry

Guest
Re Damos,

Ce que tu demandes est un peu prendre le problème à l'envers. J'ai déjà vu des Posts où on a peut-être monté des "usines à gaz" pour faire ceci mais de toutes manières ton programme sera toujours tributaire de la taile et de la résolution de l'écran...

Imagine qu'en ce moment je suis sur une TV TFT 19 (Samsung) et que si je mets un feuille Excel en Top à A13, la cellule du bas à droite est Q64, comme je travaille actuellement sur VBE je "ne" suis "qu'" en 1280 x 1024, mais si je veux "élagir un peu" je pourrais passer en 1600 x 1200.... Par contre au bureau j'ai toujours des collaborateurs, bien qu'ils aient de super TFT 17 sont en 800 x 600 !! alors tu te donneras énormément de mal pour des résultats assez aléatoires.

Enfin c'est mon avis perso, peut-être quelqu'un a une meilleure solution que le ScrollRow que l'on peut combiner à ScrollColumn si nécessaire.

Bon Courage
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 190
Messages
2 106 987
Membres
109 733
dernier inscrit
chardou