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

33essaik.xlsm (42.30 Ko)

Bonjour,

un essai voir si cela peut te convenir.

Cordialement.

43essaikv2.xlsm (45.06 Ko)

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

14essaik.xlsm (42.30 Ko)

Re jad73, bonsoir ThauTheme,

et comme cela est-ce mieux ?

Cordialement.

39essaikv2.xlsm (45.15 Ko)

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
Rechercher des sujets similaires à "executer macro fois"