VBA Même itération sur deux procédures différentes

Y compris Power BI, Power Query et toute autre question en lien avec Excel
i
idiise
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 13 janvier 2020

Message par idiise » 13 janvier 2020, 11:44

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
Avatar du membre
GVIALLES
Membre dévoué
Membre dévoué
Messages : 815
Appréciations reçues : 73
Inscrit le : 28 novembre 2017
Version d'Excel : 2016, 360
Téléchargements : Mes applications

Message par GVIALLES » 17 janvier 2020, 15:33

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
elle est très longue
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.
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
.
Cordialement,

Gérard
i
idiise
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 13 janvier 2020

Message par idiise » 20 janvier 2020, 09:21

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.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message