Executer une macro plusieurs fois
bonjour le forum
j'ai un fichier ou je teste des combinaisons mais j'ai plusieurs centaines de combinaisons et le faire une par une c'est assez long.
j'ai fait une macro qui prend la premiere ligne W2:AF2 qui la copie en D2:M2, elle fait le calcul puis prend la ligne D2:T2 et la copie en W2. Mais maintenant il faudrait qu'elle prenne la deuxieme ligne W3 qu'elle fasse la meme opération et ainsi de suite jusqu'a la fin du fichierW2:AF...
comment faut-il modifier la macro.
merci
Bonsoir Jad, bonsoir le forum,
Peut-être comme ça :
Public Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TL As Variant 'déclare la variable TL (Tableau de Ligne)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = Sheets("test") 'définit l'onglet O (à adapter à ton cas)
O.Select 'sélectionne l'onglet O
TC = O.Range("W2").CurrentRegion 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucles sur toutes les lignes I du tableau de cellules TC
TL = Application.Index(TC, I) 'définit le tableau de ligne TL (=ligne I du tableau TC)
O.Range("D2").Resize(1, UBound(TC, 2)) = TL 'renvoie le tableau TL dans la cellule D2 redimensionnée
O.Range("O2:T2").Copy 'copie la plage O2:T2
O.Cells(I + 1, 34).PasteSpecial (xlPasteValues) 'colle les valeurs dans la cellule ligne I + 1 colonne 34 (=AH)
Next I 'prochaine ligne de la boucle
Application.CutCopyMode = False 'supprime le clignotement lié au copié
O.Range("N1").Select 'sélectionne la cellue N1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
[Édition]
Bonsoir Bigdady on s'est croisé...
bonjour bigdaddy, le forum
merci pour ta réponse mais elle ne fait pas ce que je recherche.
Elle recopie seulement la plage W2:AF35 en D2:M35, hors ce que je recherche c'est faire le calcul de chaque combinaisons
et copier le résultat en face de la combinaison dans la plage W2:AF et ceci pour chaque combinaisons.
merci
bonjour ThauTheme
c'est presque ça mais le calcul ne s'effectue pas ,toutes les combinaisons on le meme résultat.
merci
Bonsoir le fil, bonsoir le forum,
En volant le Calculate à Bigdaddy, le code modifié :
Public Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TL As Variant 'déclare la variable TL (Tableau de Ligne)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = Sheets("test") 'définit l'onglet O (à adapter à ton cas)
O.Select 'sélectionne l'onglet O
TC = O.Range("W2").CurrentRegion 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucles sur toutes les lignes I du tableau de cellules TC
TL = Application.Index(TC, I) 'définit le tableau de ligne TL (=ligne I du tableau TC)
O.Range("D2").Resize(1, UBound(TC, 2)) = TL 'renvoie le tableau TL dans la cellule D2 redimensionnée
Calculate 'recalcule les formules
O.Range("O2:T2").Copy 'copie la plage O2:T2
O.Cells(I + 1, 34).PasteSpecial (xlPasteValues) 'colle les valeurs dans la cellule ligne I + 1 colonne 34 (=AH)
Next I 'prochaine ligne de la boucle
Application.CutCopyMode = False 'supprime le clignotement lié au copié
O.Range("D2:M2").ClearContents ' efface la plage D2:M2
O.Range("N1").Select 'sélectionne la cellue N1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub