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

Comment bloquer le rafaichissement d'écran ?

7 réponses
Avatar
Zit
Rebonjour à tous
Lors de l'exécution de ma macro je fais appel à d'autres feuilles
dans lesquelles je copie, colle et effectue des calculs.
Je souhaite avoir en permanence toujours la même feuille a écran
Je pensais avoir résolu le problème avec Application.ScreenpUdating = False
mais j'ai encore des variations lors des calculs.
Existe t il un moyen de "figer" complètement l'écran lors des calculs
et de le "défiger" ensuite ?
Merci

7 réponses

Avatar
JLuc
*Bonjour Zit*,
Il faut eviter de mettre du code de type .Select ou .Activate
Ex. :
Sheets("Feuil1").Activate
Range("A1").Select
Selection.value = 1

A remplacer par :
Sheets("Feuil1").Range("A1").Value = 1

Ca fera la meme chose mais sans rafraichissement d'ecran. En plus, tu
gagnera du temps sur le deroulement de la macro

Rebonjour à tous
Lors de l'exécution de ma macro je fais appel à d'autres feuilles
dans lesquelles je copie, colle et effectue des calculs.
Je souhaite avoir en permanence toujours la même feuille a écran
Je pensais avoir résolu le problème avec Application.ScreenpUdating = False
mais j'ai encore des variations lors des calculs.
Existe t il un moyen de "figer" complètement l'écran lors des calculs
et de le "défiger" ensuite ?
Merci



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
Zit
Merci Jl
Mais le probleme est que je dois copier des valeurs d'une feuille et les
coller vers une autre feuile
dans laquelle je remets en forme et calcul ces valeurs.
je suis donc obliger d'utiliser 'Select' sinon la macro plante.
Avatar
JLuc
*Bonjour Zit*,
Post un bout de ton code ou tu doit faire un select, on regardera ce
qu'on peut faire...

Merci Jl
Mais le probleme est que je dois copier des valeurs d'une feuille et les
coller vers une autre feuile
dans laquelle je remets en forme et calcul ces valeurs.
je suis donc obliger d'utiliser 'Select' sinon la macro plante.



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
Zit
Voici un bout du code
Bon courage ;-)
N'empeche avec une fonction figer ecran, sniff

'**********Sélectionne et copie les données de "data_sociétaire"
cherche_nom = societaire.choix_societaire.Value 'Nom correspondant au
societaire choisi

Sheets("data_sociétaire").Select
compteur = 1
Do Until Sheets("data_sociétaire").Cells(compteur, 2) = cherche_nom
compteur = compteur + 1
Loop
compteur1 = compteur
Do While Sheets("data_sociétaire").Cells(compteur1, 2) = cherche_nom
compteur1 = compteur1 + 1
Loop

With Sheets("data_sociétaire") 'Sélection de plusieurs colonnes non
contigues
Union(Range(Cells(compteur, 2), Cells(compteur1 - 1, 2)), _
Range(Cells(compteur, 5), Cells(compteur1 - 1, 6)), _
Range(Cells(compteur, 9), Cells(compteur1 - 1, 9))).Select
End With
Selection.Copy
Sheets("data_sociétaire").Cells(1, 1).Select

'*********Colle les données dans "calcul"
Sheets("calcul").Select
Sheets("calcul").Cells(1, 1).Select
ActiveSheet.Paste
Sheets("calcul").Cells(1, 1).Select

'********Trie les données par dates
Sheets("calcul").Range(Cells(1, 1), Cells(compteur1 + 1, 4)).Select
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Sheets("calcul").Cells(1, 1).Select

'*******Calcul pour la modification du compte courant
If compteur1 <> compteur Then
compt = 1
Do Until Sheets("calcul").Cells(compt, 2).Value = ""
compt = compt + 1
Loop
For i = 1 To compt - 1
If i = 1 Then
Sheets("calcul").Cells(i, 5).Value = Sheets("calcul").Cells(i,
2).Value
Else
Sheets("calcul").Cells(i, 5).Value = Sheets("calcul").Cells(i - 1,
5).Value + Sheets("calcul").Cells(i, 2).Value
End If
date_debut = Sheets("calcul").Cells(i, 3).Value
If Sheets("calcul").Cells(i + 1, 3).Value = "" Then
date_fin = Calendrier_calcul_interets.Value 'Date à choisie pour le
calcul des interets
Else
date_fin = Sheets("calcul").Cells(i + 1, 3).Value
End If
ecartdate = date_fin - date_debut
interets = Round((date_fin - date_debut) * (pourcentagejournalier / 100
/ 365) * Sheets("calcul").Cells(i, 5).Value, 2)
Sheets("calcul").Cells(i, 6).Value = interets
Sheets("calcul").Cells(compt, 6).Value = Sheets("calcul").Cells(compt,
6).Value + interets 'Somme des interets
Next i
Else
End
End If

'***********************************************************************************
'***************************cherche les informations dans "data_sociétaire"
compteur = 2
Do Until Sheets("data_sociétaire").Cells(compteur, 2).Value = ""
Select Case Sheets("data_sociétaire").Cells(compteur, 2).Value
Case Is = societaire.choix_societaire.Value
int_vers = int_vers + Sheets("data_sociétaire").Cells(compteur, 9).Value
'somme des interets deja perçu
End Select
compteur = compteur + 1
Loop
Avatar
JLuc
*Bonjour Zit*,
Voila, je l'ai remanier de telle facon que tu peux faire un copier
coller. Pour verifier je te propose de mettre des reperes avant et
apres ce que tu a fourni comme code, ensuite tu met tout ce code en
commentaire et tu recopie celui ci dessous puis tu teste et tu nous dis
B-)
Voici un bout du code
Bon courage ;-)
N'empeche avec une fonction figer ecran, sniff

'**********Sélectionne et copie les données de "data_sociétaire"
cherche_nom = societaire.choix_societaire.Value 'Nom correspondant au

societaire choisi

' Sheets("data_sociétaire").Select
' Celle ci n'est pas necessaire

compteur = 1
Do Until Sheets("data_sociétaire").Cells(compteur, 2) = cherche_nom
compteur = compteur + 1
Loop
compteur1 = compteur
Do While Sheets("data_sociétaire").Cells(compteur1, 2) = cherche_nom
compteur1 = compteur1 + 1
Loop

' La, avec union je sais pas trop... SI
With Sheets("data_sociétaire") 'Sél de colonnes non contigues
Union(Range(Cells(compteur, 2), Cells(compteur1 - 1, 2)), _
Range(Cells(compteur, 5), Cells(compteur1 - 1, 6)), _
Range(Cells(compteur, 9), Cells(compteur1 - 1, 9))).Copy
'au lieu de .Select dans le Union utilise directement .Copy
End With
' Selection.Copy
' Plus besoin

' Sheets("data_sociétaire").Cells(1, 1).Select
' Inutile

'*********Colle les données dans "calcul"
' Sheets("calcul").Select

' Inutile

' Sheets("calcul").Cells(1, 1).Select
' ActiveSheet.Paste
'Pour ces deux lignes :
Sheets("calcul").Cells(1, 1).Paste

' Sheets("calcul").Cells(1, 1).Select
' Inutile

'********Trie les données par dates
' Sheets("calcul").Range(Cells(1, 1), Cells(compteur1 + 1, 4)).Select
' Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, _
' Header:=xlGuess, _
' OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
' DataOption1:=xlSortNormal
' A remplacer par :
Sheets("calcul").Range(Cells(1, 1), Cells(compteur1 + 1, 4)).Sort _
Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


' Sheets("calcul").Cells(1, 1).Select
' Inutile

'*******Calcul pour la modification du compte courant
If compteur1 <> compteur Then
compt = 1
Do Until Sheets("calcul").Cells(compt, 2).Value = ""
compt = compt + 1
Loop
For i = 1 To compt - 1
If i = 1 Then
Sheets("calcul").Cells(i, 5).Value = _
Sheets("calcul").Cells(i, 2).Value
Else
Sheets("calcul").Cells(i, 5).Value = _
Sheets("calcul").Cells(i - 1,5).Value + _
Sheets("calcul").Cells(i, 2).Value
End If
date_debut = Sheets("calcul").Cells(i, 3).Value
If Sheets("calcul").Cells(i + 1, 3).Value = "" Then
date_fin = Calendrier_calcul_interets.Value 'Date des interets
Else
date_fin = Sheets("calcul").Cells(i + 1, 3).Value
End If
ecartdate = date_fin - date_debut
interets = Round((date_fin - date_debut) * _
(pourcentagejournalier / 100 / 365) * _
Sheets("calcul").Cells(i, 5).Value, 2)
Sheets("calcul").Cells(i, 6).Value = interets
Sheets("calcul").Cells(compt, 6).Value = _
Sheets("calcul").Cells(compt, 6).Value + interets 'interets
Next i
Else
End
End If

'***********************************************************************
'*******************cherche les informations dans "data_sociétaire"
compteur = 2
Do Until Sheets("data_sociétaire").Cells(compteur, 2).Value = ""
Select Case Sheets("data_sociétaire").Cells(compteur, 2).Value
Case Is = societaire.choix_societaire.Value
int_vers = int_vers + _
Sheets("data_sociétaire").Cells(compteur, 9).Value
'somme des interets deja perçu
End Select
compteur = compteur + 1
Loop


--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
Zit
OK
Merci JLuc

Je vais me repencher sur ma macro
et la remodeler

Sympa de ta part de m'avoir consacrer du temps

Zit
Avatar
JLuc
*Bonjour Zit*,
Je t'en prie, si personne consacrait du temps, personne poserait de
questions :')
OK
Merci JLuc

Je vais me repencher sur ma macro
et la remodeler

Sympa de ta part de m'avoir consacrer du temps

Zit



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS