Raccourcir un code

Signaler
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016
-
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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.
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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é)
Messages postés
20
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
4 août 2016

Salut ucfoutu, merci piur ton aide
j'avais mal compris la syntaxe.