VBA Même itération sur deux procédures différentes
Bonjour à tous, quand j'exécute ma macro on me dit qu'elle est très longue. Donc j'ai partagé en deux procédures différentes. Cependant je dois utiliser la même boucle pour les deux procédures. Comme
sub macro1()
for i = 2 to 66
ligneRegion = i
workbook("classeur 1").sheets(1).range("B4")=workbook("classeur2").sheets(1).cells(ligneRegion,2)
workbook("classeur 1").sheets(1).range("N17")=workbook("classeur2").sheets(1).cells(ligneRegion,3)
workbook("classeur 1").sheets(1).range("N18")=workbook("classeur2").sheets(1).cells(ligneRegion,4)
''' et ainsi de suite
activeworkbook.saveCopyas filename:= workbook("classeur 1").sheets(1).range("B4")
next
end sub
sub macro2()
for i = 2 to 66
ligneRegion = i
a = Workbooks("classeur2").Sheets(1).Cells.Find("rCSI_finalphase").Column 'Colonne a patir duquel les valeurs sonts extraites
nb_facteurs = Workbooks("classeur2").Sheets(1).Cells(1, a).End(xlToRight).Column - a
for j = 1 to nb_facteurs
if (Left(Workbooks("classeur2").Sheets(1).Cells(1, a + j), 3) = "01_") then
workbook("classeur 1").sheets(2).range("L12") = Workbooks("classeur2").Sheets(1).Cells(1, a + j) & "---" & Str(Workbooks("classeur2").Sheets(1).Cells(ligneRegion, a + j)) & "%"
elseif (Left(Workbooks("Matrice_intermediaire.xlsx").Sheets(1).Cells(1, a + j), 3) = "02_") then
workbook("classeur 1").sheets(2).range("L13") = Workbooks("classeur2").Sheets(1).Cells(1, a + j) & "---" & Str(Workbooks("classeur2").Sheets(1).Cells(ligneRegion, a + j)) & "%"
' ainsi de suite
activeworkbook.savecopy as filename:= workbook("classeur 1").sheets(1).range("B4")
end if
next j
next i
Quand je met tout ensemble le code est très long et ça ne marche pas. Cependant je voudrai que la boucle for i = 2 to 66 soit utiliser pour les deux en même temps à cause de la sauvegade des classeurs.
Merci d'avance pour votre aide
Bonjour Idiise,
Il me semble que l'optimisation de ton code doit passer par d'autres méthodes de celle que tu as choisie.
Outre que l'appréciation
manque singulièrement de précision (parle-t-on en secondes, minutes, heures...), il serait nécessaire de pointer dans ton code les instructions les plus consommatrices en temps.elle est très longue
En utilisant le débogage pas à pas, as-tu pu déterminer ces instructions?
Pour t'aider plus, il serait utile que tu fournisses une version édulcorée de tes classeurs "1" et "2" avec la macro d'origine, celle qui
.est très longue
merci Gérard finalement j'ai trouvé une solution. J'ai remplacé la deuxième procédure par une fonction de paramètre x ensuite en faisant appel à la fonction dans la procédure principale x prend la valeur de la variable d'itération. Merci beaucoup.