Simplification de code VBA
Bonjour à tous, je suis a un niveau plus que débutant en VBA et pour tout vous avouer, ma façon de faire est très scolaire. Le plus souvent pour faire une macro j'utilise le mode enregistrement et j’effectue une suite de manipulation, et cela se termine par un arrêt qui sauvegarde. Jusque la j'arrivais avec plus ou moins de réussite à obtenir ce que je voulais en complétant ces "macros" avec pas mal de formules dans les cellules pour arriver a mes fins.
Je vous sollicite donc pour m'aider à simplifier "mon" code, de mon coté je suis les cours sur le forum pour compléter mes lacunes mais étant autodidacte que ce soir en Excel et maintenant en VBA un peu de mal à raccrocher les wagons.
Pour vous expliquer en quoi mon fichier consiste, il s’agit d'un fichier pour éditer un carnet de bord pour l'ensemble des véhicules de mon secteur d'activités. L’idée est que chaque onglet reprenne un model en référence, et que chaque feuille se compose de la semaine 1 à 52(53) avec chaque jours de la semaine pour noter l'état ou autre sur chaque véhicule. Je me suis débrouillé pour faire le model et trouver si l'année avait 52 ou 53 semaines. Mais mon souci est que je n'arrive pas à ajouter ces données dans le code...
voici mon code
Sub Macro1()
'
Application.ScreenUpdating = False
'fiche 1
Sheets("model").Copy After:=Sheets(2)
Sheets("model (2)").Name = "1"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "=model!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "=model!RC+1"
'fiche 2
Sheets("1").Copy After:=Sheets(3)
Sheets("1 (2)").Name = "2"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='1'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='1'!RC:R[1]C+1"
'fiche 3
Sheets("2").Copy After:=Sheets(4)
Sheets("2 (2)").Name = "3"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='2'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='2'!RC:R[1]C+1"
'fiche 4
Sheets("3").Copy After:=Sheets(5)
Sheets("3 (2)").Name = "4"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='3'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='3'!RC:R[1]C+1"
'fiche 5
Sheets("4").Copy After:=Sheets(6)
Sheets("4 (2)").Name = "5"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='4'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='4'!RC:R[1]C+1"
'fiche 6
Sheets("5").Copy After:=Sheets(7)
Sheets("5 (2)").Name = "6"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='5'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='5'!RC:R[1]C+1"
'fiche 7
Sheets("6").Copy After:=Sheets(8)
Sheets("6 (2)").Name = "7"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='6'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='6'!RC:R[1]C+1"
'fiche 8
Sheets("7").Copy After:=Sheets(9)
Sheets("7 (2)").Name = "8"
Range("A6").Select
ActiveCell.FormulaR1C1 = "='7'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='7'!RC:R[1]C+1"
'fiche 9
Sheets("8").Copy After:=Sheets(10)
Sheets("8 (2)").Name = "9"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='8'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='8'!RC:R[1]C+1"
'fiche 10
Sheets("9").Copy After:=Sheets(11)
Sheets("9 (2)").Name = "10"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='9'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='9'!RC:R[1]C+1"
'fiche 11
Sheets("10").Copy After:=Sheets(12)
Sheets("10 (2)").Name = "11"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='10'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='10'!RC:R[1]C+1"
'fiche 12
Sheets("11").Copy After:=Sheets(13)
Sheets("11 (2)").Name = "12"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='11'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='11'!RC:R[1]C+1"
'fiche 13
Sheets("12").Copy After:=Sheets(14)
Sheets("12 (2)").Name = "13"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='12'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='12'!RC:R[1]C+1"
'fiche 14
Sheets("13").Copy After:=Sheets(15)
Sheets("13 (2)").Name = "14"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='13'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='13'!RC:R[1]C+1"
'fiche 15
Sheets("14").Copy After:=Sheets(16)
Sheets("14 (2)").Name = "15"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='14'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='14'!RC:R[1]C+1"
'fiche 16
Sheets("15").Copy After:=Sheets(17)
Sheets("15 (2)").Name = "16"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='15'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='15'!RC:R[1]C+1"
'fiche 17
Sheets("16").Copy After:=Sheets(18)
Sheets("16 (2)").Name = "17"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='16'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='16'!RC:R[1]C+1"
'fiche 18
Sheets("17").Copy After:=Sheets(19)
Sheets("17 (2)").Name = "18"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='17'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='17'!RC:R[1]C+1"
'fiche 19
Sheets("18").Copy After:=Sheets(20)
Sheets("18 (2)").Name = "19"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='18'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='18'!RC:R[1]C+1"
'fiche 20
Sheets("19").Copy After:=Sheets(21)
Sheets("19 (2)").Name = "20"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='19'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='19'!RC:R[1]C+1"
'fiche 21
Sheets("20").Copy After:=Sheets(22)
Sheets("20 (2)").Name = "21"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='20'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='20'!RC:R[1]C+1"
'fiche 22
Sheets("21").Copy After:=Sheets(23)
Sheets("21 (2)").Name = "22"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='21'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='21'!RC:R[1]C+1"
'fiche 23
Sheets("22").Copy After:=Sheets(24)
Sheets("22 (2)").Name = "23"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='22'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='22'!RC:R[1]C+1"
'fiche 24
Sheets("23").Copy After:=Sheets(25)
Sheets("23 (2)").Name = "24"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='23'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='23'!RC:R[1]C+1"
'fiche 25
Sheets("24").Copy After:=Sheets(26)
Sheets("24 (2)").Name = "25"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='24'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='24'!RC:R[1]C+1"
'fiche 26
Sheets("25").Copy After:=Sheets(27)
Sheets("25 (2)").Name = "26"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='25'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='25'!RC:R[1]C+1"
'fiche 27
Sheets("26").Copy After:=Sheets(28)
Sheets("26 (2)").Name = "27"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='26'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='26'!RC:R[1]C+1"
'fiche 28
Sheets("27").Copy After:=Sheets(29)
Sheets("27 (2)").Name = "28"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='27'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='27'!RC:R[1]C+1"
'fiche 29
Sheets("28").Copy After:=Sheets(30)
Sheets("28 (2)").Name = "29"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='28'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='28'!RC:R[1]C+1"
'fiche 30
Sheets("29").Copy After:=Sheets(31)
Sheets("29 (2)").Name = "30"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='29'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='29'!RC:R[1]C+1"
'fiche 31
Sheets("30").Copy After:=Sheets(32)
Sheets("30 (2)").Name = "31"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='30'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='30'!RC:R[1]C+1"
'fiche 32
Sheets("31").Copy After:=Sheets(33)
Sheets("31 (2)").Name = "32"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='31'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='31'!RC:R[1]C+1"
'fiche 33
Sheets("32").Copy After:=Sheets(34)
Sheets("32 (2)").Name = "33"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='32'!R[12]C+1"
Range("F2").Select
'fiche 34
Sheets("33").Copy After:=Sheets(35)
Sheets("33 (2)").Name = "34"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='33'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='33'!RC:R[1]C+1"
'fiche 35
Sheets("34").Copy After:=Sheets(36)
Sheets("34 (2)").Name = "35"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='34'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='34'!RC:R[1]C+1"
'fiche 36
Sheets("35").Copy After:=Sheets(37)
Sheets("35 (2)").Name = "36"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='35'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='35'!RC:R[1]C+1"
'fiche 37
Sheets("36").Copy After:=Sheets(38)
Sheets("36 (2)").Name = "37"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='36'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='36'!RC:R[1]C+1"
'fiche 38
Sheets("37").Copy After:=Sheets(39)
Sheets("37 (2)").Name = "38"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='37'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='37'!RC:R[1]C+1"
'fiche 39
Sheets("38").Copy After:=Sheets(40)
Sheets("38 (2)").Name = "39"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='38'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='38'!RC:R[1]C+1"
'fiche 40
Sheets("39").Copy After:=Sheets(41)
Sheets("39 (2)").Name = "40"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='39'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='39'!RC:R[1]C+1"
'fiche 41
Sheets("40").Copy After:=Sheets(42)
Sheets("40 (2)").Name = "41"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='40'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='40'!RC:R[1]C+1"
'fiche 42
Sheets("41").Copy After:=Sheets(43)
Sheets("41 (2)").Name = "42"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='41'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='41'!RC:R[1]C+1"
'fiche 43
Sheets("42").Copy After:=Sheets(44)
Sheets("42 (2)").Name = "43"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='42'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='42'!RC:R[1]C+1"
'fiche 44
Sheets("43").Copy After:=Sheets(45)
Sheets("43 (2)").Name = "44"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='43'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='43'!RC:R[1]C+1"
'fiche 45
Sheets("44").Copy After:=Sheets(46)
Sheets("44 (2)").Name = "45"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='44'!R[12]C+1"
Range("F2").Select
'fiche 46
Sheets("45").Copy After:=Sheets(47)
Sheets("45 (2)").Name = "46"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='45'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='45'!RC:R[1]C+1"
'fiche 47
Sheets("46").Copy After:=Sheets(48)
Sheets("46 (2)").Name = "47"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='46'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='46'!RC:R[1]C+1"
'fiche 48
Sheets("47").Copy After:=Sheets(49)
Sheets("47 (2)").Name = "48"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='47'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='47'!RC:R[1]C+1"
'fiche 49
Sheets("48").Copy After:=Sheets(50)
Sheets("48 (2)").Name = "49"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='48'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='48'!RC:R[1]C+1"
'fiche 50
Sheets("49").Copy After:=Sheets(51)
Sheets("49 (2)").Name = "50"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='49'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='49'!RC:R[1]C+1"
'fiche 51
Sheets("50").Copy After:=Sheets(52)
Sheets("50 (2)").Name = "51"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='50'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='50'!RC:R[1]C+1"
'fiche 52
Sheets("51").Copy After:=Sheets(53)
Sheets("51 (2)").Name = "52"
'changement de date et de numero de semaine
Range("A6").Select
ActiveCell.FormulaR1C1 = "='51'!R[12]C+1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "='51'!RC:R[1]C+1"
'selection des onglets
Sheets(Array("model", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", _
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("model").Activate
Sheets(Array("25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", _
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49")).Select Replace _
:=False
Sheets(Array("50", "51", "52")).Select Replace:=False
Sheets(Array("model", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", _
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "52")).Select
Sheets("52").Activate
Sheets(Array("24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", _
"37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48")).Select Replace _
:=False
Sheets(Array("49", "50", "51")).Select Replace:=False
'impression du fichier pdf creator
Application.ActivePrinter = "PDFCreator sur Ne00:"
ExecuteExcel4Macro _
"PRINT(1,,,1,,,,,,,,2,""PDFCreator sur Ne00:"",,TRUE,,FALSE)"
Range("B2:C3").Select
Selection.Copy
'suppression des onglets aprés travail
Sheets(Array("model", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", _
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24")).Select
Sheets("1").Activate
Sheets(Array("25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", _
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49")).Select Replace _
:=False
Sheets(Array("50", "51", "52")).Select Replace:=False
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25")).Select
Sheets("1").Activate
Sheets(Array("26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", _
"39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50")).Select Replace _
:=False
Sheets(Array("51", "52")).Select Replace:=False
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "52")).Select
Sheets("52").Activate
Sheets(Array("25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", _
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49")).Select Replace _
:=False
Sheets(Array("50", "51")).Select Replace:=False
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.Delete
Sheets("Initialisation").Select
End Sub
comme vous pouvez le voir ma methode ne casse pas des briques, et je ne peux l'ameliorer seul pour l'instant
Merci de votre aide
Bonjour,
Avez-vous le fichier correspondant à cette macro ? Merci.
Sinon pour les "répétitifs" il y a plusieurs sortes de boucle en VBA afin de n'écrire qu'une fois les instructions, sauf qu'il faut trouver la bonne combinaison de variables afin de "décaler" son fonctionnement....
@ bientôt
LouReeD
Bonjour et merci Looreed pour votre réponse, je suis actuellement sur mon lieu de travail et le système informatique de l'entreprise ne me permet pas de télécharger le fichier sur le forum... par contre je peux l'envoyer par mail... si vous le désirez vous pouvez me communiquer votre mail en MP et je vous envois le fichier dans la foulée
En vous remerciant
Merci LouReed pour le fichier "legerement" modifié, vivement que je sache faire ce genre de chose aussi rapidement.
top maitise