Insertion lignes sans rafraichissement écran

  • Initiateur de la discussion Initiateur de la discussion kadelmalin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kadelmalin

XLDnaute Occasionnel
Bonjour,
J'ai créée une macro pour supprimer des lignes dont je ne m'en sers pas mais en même temps je les remplace par des lignes vides à la fin de la base pour éviter que la plage utilisée dans des formules ne soient pas modifiées. La syntaxe qui suit ne m'est d'aucun secours : Sheets("MOUV").Rows("666:676").Insert Shift:=xlDown
L'opération est bien exécutée mais l'écran s'efface un bon bout de temps.Je vous remercie de votre coup de pouce.
 
Re : Insertion lignes sans rafraichissement écran

Bonsoir kadelmalin,

Essaie en ajoutant "Application.ScreenUpdating = False" sur la première ligne de ta macro et "Application.ScreenUpdating = True" sur la dernière.

Toutefois, il doit y avoir d'autres raisons de ralentissement car je ne pense pas que l'insertion de 10 lignes puisse prendre beaucoup de temps.

A l'occasion, tu peux joindre une copie de ton classeur en supprimant d'éventuelles données confidentielles.

A +

Cordialement.

Edit: Bonsoir Lone Wolf.
 
Re : Insertion lignes sans rafraichissement écran

Bonsoir Lone-wolf, Bonsoir Papou-net,
Non, il ne s'agit pas d'un ralentissement mais d'un rafraichissement de l'écran quoique j'ai bien désactivé la mise à jour de l'écran au début de la macro. Le problème est avec lnsert pas avec le nombre de lignes que ce soit une ou plusieurs l'écran devient vierge pendant un moment puis réapparait. Merci de vous être penché sur mon problème.
 
Re : Insertion lignes sans rafraichissement écran

Voila le code dans un module:
Sub AnnuleBon()
Dim TBb As Worksheet, TBc As Worksheet, TBm As Worksheet, Zx As Range, Zy As Range, I As Integer, j As Integer, K As String, Ln As Integer, Lf As Integer
Dim Lire1 As String, Lire2 As String, Lire3 As String, TBr As Worksheet, Zw As Range, NbArt As Integer, Nlig As Integer, MotDePasse As String
On Error Resume Next
Lire1 = "?????????"
Lire2 = "?????????"
Lire3 = "pour info.Vous êtes sûr de bien vouloir continuer ?"
MotDePasse = "1111111111"
Set TBc = ThisWorkbook.Worksheets("CONSULT")
Set TBb = ThisWorkbook.Worksheets("RECAP_BONS")
Set TBm = ThisWorkbook.Worksheets("MOUV_STK")
Set TBr = ThisWorkbook.Worksheets("Creances")
j = TBc.Range("T7").Value - 1
K = TBc.Range("T9").Value
NbArt = TBm.Range("R1").Value
Set Zx = TBb.Columns(1).Find(What:=TBc.[Bon_Ndx].Value)
Set Zy = TBm.Columns(1).Find(What:=TBc.[Bon_Ndx].Value)
Set Zw = TBr.Columns(1).Find(What:=TBc.Range("F7").Value)
Application.ScreenUpdating = False
Ln = Zy.Row
Lf = Ln + j
Nlig = (Lf - Ln)
'---------------
If Zx Is Nothing Then
Exit Sub
Else
If MsgBox(Lire1 + vbCrLf + Lire2 + vbCrLf + Lire3, vbQuestion + vbYesNo, NomApp) = vbYes Then
For I = 0 To 4 Step 1
Zx.Offset(0, 17 + I).Value = Zx.Offset(0, 8 + I).Value
Zx.Offset(0, 8 + I).ClearContents
Next I
Zx.Offset(0, 22).Value = Zx.Offset(0, 15).Value
Zx.Offset(0, 15).ClearContents
Zx.Offset(0, 16).Value = 1
Zx.Offset(0, 23).ClearContents
Zx.Offset(0, 24).ClearContents
Zx.Offset(0, 25).ClearContents
Zx.Offset(0, 26).ClearContents
Zx.Offset(0, 27).Value = IIf(K = "E", "ENTREE ANNULEE", "FACTURE ANNULEE")
Sheets("MOUV").Rows(Ln & ":" & Lf).Delete
Sheets("MOUV").Rows(NbArt & ":" & NbArt + Nlig).EntireRow.Insert Shift:=xlDown
TBc.Unprotect Password:=MotDePasse
TBc.Rows(22 & ":" & 40).EntireRow.Hidden = True
TBc.Protect Password:=MotDePasse
End If
End If
If K = "S" Then
If Zw Is Nothing Then Exit Sub
For I = 1 To 12 Step 1
Zw.Offset(0, 3 + I).ClearContents
Next I
End If
Application.ScreenUpdating = True
End Sub
 
Re : Insertion lignes sans rafraichissement écran

Re,

kadelmalin clique sur le bouton "Aller en mode avancé", clique sur le bouton #

Tu verra les balises CODE, ne touche pas au [ ] et met le code entre les deux.

Code:
[QUOTE]
Lire1 = "?????????"
Lire2 = "?????????"
Lire3 = "pour info.Vous êtes sûr de bien vouloir continuer ?"[/QUOTE]

:confused::confused::confused::confused::confused::confused:  I Don't Not   [ATTACH]650962.vB[/ATTACH]
 

Pièces jointes

  • effraye.gif
    effraye.gif
    10.2 KB · Affichages: 8
  • effraye.gif
    effraye.gif
    10.2 KB · Affichages: 28
Dernière édition:
Re : Insertion lignes sans rafraichissement écran

Re,

remplace

For I = 0 To 4 Step 1
Zx.Offset(0, 8 + I).ClearContents
Next I

Zx.Offset(0, 23).ClearContents
Zx.Offset(0, 24).ClearContents
Zx.Offset(0, 25).ClearContents
Zx.Offset(0, 26).ClearContents


Par

Zx.Offset(0, 0).EntireRow.Delete

For col = 23 to 26
Zx.Offset(0, col).ClearContents
Next col
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour