Raccourcir un code

Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016 - 17 avril 2015 à 10:58
Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016 - 21 avril 2015 à 03:23
Bonjour tout le monde,
Je suis debutant en VBA mais curieux et veux apprendre
J'ai actuellement un code VBA qui fonctionne. Mais les operateurs qui utilise le logiciel disent que l'execution de la macro prend trop temps.
La macro copie les informations dans un fichier Backup pour garder une trace des livraisons effectuer avec quelle compagnie de transport, a quelle prix etc..

Je ne vous demande de pas de retaper tout le code, mais plutot des axes de progres ou des facons de diminiuer ce code (notamment pour la protection et de protection du fichier).

Voici le code, (Vous allez surement criser par la qualite du code, c'est du bon bidouillage de forum a forum, mais mon premier code).

Je vous remercie d'avance.




If Range("C10").Value > 0 Then

Application.ScreenUpdating = False

Sheets("Transportation matrix").Select
ActiveSheet.Unprotect "261191"
Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False
Sheets("Backup information").Select
ActiveSheet.Unprotect "261191"
Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False
Sheets("Backup").Select
ActiveSheet.Unprotect "261191"
Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False


Sheets("Transportation matrix").Select
Range("C13").Select
Selection.Copy

Sheets("Backup information").Select
Range("B9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Sheets("Transportation matrix").Select
Range("B3").Select
Selection.Copy
Sheets("Backup information").Select
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Transportation matrix").Select
Range("C10").Select
Selection.Copy
Sheets("Backup information").Select
Range("B8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Transportation matrix").Select
Range("C14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Backup information").Select
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Transportation matrix").Select
Range("C12").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Backup information").Select
Range("B14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Transportation matrix").Select
Range("C35").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Backup information").Select
Range("B11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Sheets("Backup information").Select
Range("B1:B17").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

Sheets("Backup information").Select
Range("C1:C17").Select

Selection.Copy
Sheets("Backup").Select


Range("A1").Select
Cells(Rows.Count, 1).End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True


Sheets("Transportation matrix").Select
Range("B20,E20,E21,B14,C14,D14,E14").Select
Selection.ClearContents

Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
Range("B20,E20,E21,B14,C14,D14,E14").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect "261191"

Sheets("Backup information").Select
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect "261191"

Sheets("Backup").Select
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect "261191"

Sheets("Calculation").Select

Range("M2:M35").Select
Selection.ClearContents

ActiveWorkbook.Save

Sheets("Calculation").Select
Range("M2").Select
MsgBox "Please start a new shipment, or re-enter drum amount if there was a mistake"
Application.ScreenUpdating = True

Else
MsgBox "Please choose another column"
End If

End Sub

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 17/04/2015 à 14:38
Bonjour,
Commence s'il te plait par mettre un terme à cette très mauvaise habitude de travailler à grands coups de Select, Activate, Selection, etc ...
On agit directement sur les objets Excel.
Ainsi, par exemple (pris dans ton tas) :
Sheets("Backup").Select
ActiveSheet.Unprotect "261191"
Cells.Select
Selection.Locked = False
Selection.FormulaHidden = False

n'est rien d'autre que :
with Sheets("Backup")
.Unprotect "261191"
.Cells(locked) = False
.FormulaHidden = False
end with

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
1
Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016
20 avril 2015 à 08:13
Salut ucfoutu,

Merci pour ta reponse, je comprends plus ou moins ce que tu veux dire, Rien ne sert de faire deux fois la meme jour,
Du coup j'ai fait un petit nettoyage ce qui me donne ca:

Sub Supplier4() 
'
' Supplier1 Macro


If Range("E10").Value > 0 Then
' Macro
Application.ScreenUpdating = False

With Sheets("Transportation matrix")
.Unprotect "261191"
.Cells(Locked) = False
.FormulaHidden = True
End With

With Sheets("Backup information")
.Unprotect "261191"
.Cells(Locked) = False
.FormulaHidden = True
End With

With Sheets("Backup")
.Unprotect "261191"
.Cells(Locked) = False
.FormulaHidden = True
End With

With Sheets("Transportation matrix")
Range("E13").Select
.Copy
End With



Mais la macro bloque a :



.
Cells(Locked) = False 
.FormulaHidden = True


Avec comme message d'erreur: error 1004: Application-defined or object defined error, J'ai essaye avec un Cells.select mais cela ne marche non plus.

Est ce du a la suite du code?
Merci d'avance pour ton aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 avril 2015 à 09:07
Locked est une propriété !
cells n'est pas une fonction, mais un objet range !

La syntaxe générale de la propriété la_propriété d'un objet un_objet est :
un_objet.la_propriété
et non
un_objet(la_propriété)
0
Littleshoe Messages postés 20 Date d'inscription lundi 2 mars 2015 Statut Membre Dernière intervention 4 août 2016
21 avril 2015 à 03:23
Salut ucfoutu, merci piur ton aide
j'avais mal compris la syntaxe.
0
Rejoignez-nous