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 = TrueA 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
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 !