Appel de macro et ScreeUpdating

Gérard DEZAMIS

XLDnaute Accro
Appel de macro et ScreenUpdating

Bonsoir à tous
En essayant de porter secours à CDavid2007, je me trouve confronté un à petit problème que je m'empresse de vous soumettre :confused:

Pour éviter les "scintillement" j'utilise Application.ScreenUpdating = False et True cf ci-dessous

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
If Not Application.Intersect(Target, Range("Tablo")) Is Nothing Then
Target.Select
Selection.Copy
Range("IV65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
End If
Call Classement
Application.ScreenUpdating = True
End Sub

Cela "clignote" encore alors que la macro "Classement" ne bouge pas d'un poil !

Sub Classement()
Application.ScreenUpdating = False
Application.Goto Reference:="Result"
Selection.Sort Key1:=Range("C3"), Order1:=xlDescending, Key2:=Range("F3") , Order2:=xlAscending, Header:=xlGuess
Range("B2").Select
Sheets("Pointage").Select
Range("A1").Select
Application.ScreenUpdating = True
End Sub

J'ai bien essayé de prendre le code de "Classement" et de le mettre à la place de Call Classement pour éviter cette dérivation mais .... message d'erreur.

Fichier trop lourd (zip de 62 ko) pour être joint 1000 excuses d'avance de ne pouvoir vous proposer la bête pour la décortiquer

Merci d'avance pour une recette de derrière les fagots... comme d'habitude.:rolleyes:

@+GD
 
Dernière édition:

CB60

XLDnaute Barbatruc
Re : Appel de macro et ScreeUpdating

Bonsoir Gérard
Je ne connais pas trop les macro , tu lance ta premiere procedure avec un "Application.ScreenUpdating = False" cette procedure n'étant pas terminé puisque tu utilise un "Call classement" dans la seconde tu ne devrais pas avoir de Application.ScreenUpdating.
A voir.
Bruno
 

Eric 45

XLDnaute Occasionnel
Re : Appel de macro et ScreeUpdating

bonsoir à tous
Bonsoir Gérard

N'ayant pas le fichier sous les yeux => pas facile, juste une petite remarque :

*********
....
If Not Application.Intersect(Target, Range("Tablo")) Is Nothing Then
Target.Select
'Selection.Copy 'A SUPPRIMER
Range("IV65536").End(xlUp).Offset(1, 0).Value = Target.Value 'LIGNE MODIFIEE
'ActiveSheet.Paste 'A SUPPRIMER
End If
....
*********

en plus, à quoi servent tous ces 'select" dans la sub classement ?

A+
 

Gérard DEZAMIS

XLDnaute Accro
Re : Appel de macro et ScreeUpdating

Bonsoir à tous
Merci déjà à Bruno et Eric

Le premier qui me permet de supprimer les ScreenUpdating de la macro "classement" lorsque j'utilise le Call. Cela améliore "un peu" le problème (moins de scintillement) mais qui ne le resoud pas entièrement... je voudrais éviter de passer par cette dérivation...

Eric qui optimise (l'enregistreur est en grande partie à l'origine de mon code ...:cool: )

Bien joué pour le :

Selection.Copy 'A SUPPRIMER
Range("IV65536").End(xlUp).Offset(1, 0).Value = Target.Value 'LIGNE MODIFIEE
'ActiveSheet.Paste 'A SUPPRIMER

Economique !
Dans le Sub Classement
Range("B2").Select ........est effectivement de trop et je l'ai supprimé
La plage "Result" sur laquelle je travaille se trouve sur la feuille nommée "Classement Général" donc pour faire une nouvelle saisie il me faut retrouver ma feuille "Pointage" et me replacer en haut et à gauche d'où le A1 comme sélection d'aterrissage ...par :

Sheets("Pointage").Select
Range("A1").Select

Pas très orthodoxe ?

Merci encore à tous les deux
@+GD
 

myDearFriend!

XLDnaute Barbatruc
Re : Appel de macro et ScreeUpdating

Bonsoir Gérard DEZAMIS, CB60, Eric 45,

Je suis comme les petits camarades, sans le fichier, il est très difficile d'analyser et régler ton problème Gérard...
Cela dit, "à l'aveugle" et sans pouvoir tester, je te propose l'adaptation suivante :

Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE LA FEUILLE[/I][/B][/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] Worksheet_BeforeDoubleClick([COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range, Cancel [COLOR=NAVY]As Boolean[/COLOR])
    [COLOR=NAVY]If Not[/COLOR] Application.Intersect(Target, Range("Tablo")) [COLOR=NAVY]Is Nothing Then[/COLOR]
        Range("IV65536").[COLOR=NAVY]End[/COLOR](xlUp).Offset(1, 0).Value = Target.Value
    [COLOR=NAVY]End If[/COLOR]
    Classement
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Code:
[SIZE=2][COLOR=NAVY]Sub[/COLOR] Classement()
    [COLOR=NAVY]With[/COLOR] Sheets("Classement Général")
        .Range("Result").Sort Key1:=.Range("C3"), Order1:=xlDescending, Key2:=.Range("F3"), Order2:=xlAscending, Header:=xlGuess
    [COLOR=NAVY]End With
End Sub[/COLOR][/SIZE]
La totalité de tes Select sont inutile quand tu travailles en VBA, c'est la raison pour laquelle tu obtiens ces scintillements d'écran non souhaités (pour info, un Application.Goto... est l'équivalent d'un Select aussi).

Par ailleurs, je n'ai pas trop compris pourquoi tu stockes les valeurs en colonne IV mais je suppose que tu as tes raisons...

Content de te revoir plus régulièrement parmi nous en tout cas :)
Amicalement,
 

Gérard DEZAMIS

XLDnaute Accro
Re : Appel de macro et ScreeUpdating

Bonsoir à tous
Re Bruno et Eric
Salut Didier

et Hop ! une de plus ... je parle de mes problèmes résolus !

Mes respect Môssieu l' "autodidacte à 100%" !
Une fois encore je découvre pas à pas et grace à toi les méandres de ce si limpide VBA (qu'ils disent ....)

Effectivement MonCherAmi tu as mis le doigt dessus
ça marche !

Tu sais je crois que les neurones foutent le camp à la vitesse grand V et il faut que je note tous les trucs, recettes, astuces .... en espérant les retrouver en cas de besoin.

En ce qui concerne

"Par ailleurs, je n'ai pas trop compris pourquoi tu stockes les valeurs en colonne IV mais je suppose que tu as tes raisons..."

Le coeur, mon ami, le coeur, celui qui a des raisons que la raison ne connait pas ! à l'aise Blaise...
Non en fait ma plage "Result" je l'ai planquée tout au fond du bi du bout de la feuille de façon qu'un farceur n'aille pas (par hasard) y mettre le bouzin....

Puéril hein ?
Bon encore un grand MERCI

@+GD


PS: je reviens tout doucement, je n'ai pas fini de vous ........er.*
(*) completer à volonté



Je vais mettre "remercier" pour l'instant.
 

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal