Macro de Validation lente

Bonjour à tous,

J'ai crée une macro dans un formulaire de saisie me permettant de remplir automatiquement les informations de mon bon lorsque je valide les infos du formulaire, le programme marche correctement mais les manipulations de retour au formulaire sont apparente et cela fais des bug d'affichage quand je l'utilise,

Voici ma macro :

Sub Valider()

'

' Valider Macro

'

'

Range("I6").Select

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("E15").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I9").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("C15").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I12").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("F18").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I14:I15").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("B23:D24").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I17").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("F24:H24").Select

ActiveSheet.Paste

Sheets("Formulaire saisie").Select

Range("I19").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("G15:H17").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I22").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("A13:B13").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("I24").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Bon d'enlèvement").Select

Range("F25:H25").Select

ActiveSheet.Paste Link:=True

Sheets("Formulaire saisie").Select

Range("L23").Select

Application.CutCopyMode = False

ActiveCell.FormulaR1C1 = ""

Range("D29").Select

End Sub

Si quelqu'un aurait une idée pour m'aider je suis preneur, grand merci à vous

Bonjour,

Compliqué de voir comment l'optimisé sans un fichier

Mais vous pouvez essayer d’intégrer ces 2 petites lignes de codes

Une au début de votre programme et la seconde a la fin de celui-ci

Application.ScreenUpdating = False

Application.ScreenUpdating = True

A voir si cela peut vous aider

Cognomen

Bonjour, merci de ta réponse

J'ai essayé je n'ai malheureusement pas vue de changement mais je transmet ci-joint le fichier

Cordialement

15test-formulaire.zip (286.17 Ko)

Je ne vois pas comment raccourcir l’exécution autrement

Même si cela ne fait que gagner un temps minime, cela vous évitera d'avoir l'écran qui clignote lors de l’exécution de la macro en rajoutant "Application.ScreenUpdating"

A savoir que dans le fichier que vous avez donné les "Application.ScreenUpdating" sont mal placés

[spoiler=Spoiler]

Sub Valider()

'Valider Macro

Application.ScreenUpdating = False

Range("I6").Select
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("E15").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("C15").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I12").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("F18").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I14:I15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("B23:D24").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("F24:H24").Select
ActiveSheet.Paste
Sheets("Formulaire saisie").Select
Range("I19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("G15:H17").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("A13:B13").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("I24").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Bon d'enlèvement").Select
Range("F25:H25").Select
ActiveSheet.Paste Link:=True
Sheets("Formulaire saisie").Select
Range("L23").Select

Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("D29").Select

Application.ScreenUpdating = True

End Sub

[spoiler=Spoiler]

C'est déjà très bien, je viens de tester et ça fonctionne parfaitement !

Merci beaucoup

Après on votre macro Effacer est simplifiable

[spoiler=Spoiler][code]

Sub Effacer()

'

' Effacer Macro

'

Application.ScreenUpdating = False

Range("I6").Select

Application.CutCopyMode = False

ActiveCell.FormulaR1C1 = ""

Range("I7").Select

Sheets("Bon d'enlèvement").Select

Range("C15:C16,E15,G15:H17,D18:E18,F24:H24,F25:H25,B23:D24,A13:B13,C13").Select

Selection.ClearContents

Sheets("Formulaire saisie").Select

Range("L23").Select

Application.ScreenUpdating = True

End Sub

[code][spoiler=Spoiler]

Ca fonctionne aussi et bien mieux !

Rechercher des sujets similaires à "macro validation lente"