[VBA] Boucle dans Macro :confused: ?

soaresden

XLDnaute Nouveau
Bonjour a tous !
Voila je pense que c'est un code simple mais je comprends le VBA, mais je ne sais pas le parler... Ou plutot avec un terrible accent ! :D

J'ai utilisé l'enregistreur de macro mais je souhaiterai faire une boucle de ceci:

Sub Pa()
'
' Pa Macro
'

'
Range("B1").Select
ActiveCell.FormulaR1C1 = "=R[2]C"
Range("D1").Select
ActiveCell.FormulaR1C1 = "=R[8]C"
Range("B5").Select
Selection.Copy

Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[9]C"
Range("B5").Select
Selection.Copy

Range("E10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[10]C"
Range("B5").Select
Selection.Copy

Range("E11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Oui !
Vous l'aurez compris, c'est toujours pareil jusqu'a une case E95 !
Je ne vais pas faire ce code jusqu'a E95 ?!

Si ?

Merci d'avance pour votre contribution :p
 

Efgé

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Bonjour soaresden,
Pourrait on avoir un petit fichier exemple, par ce que là je ne comprend pas vraiment ce doit faire la macro. En la nettoyant, j'arrive à cela :eek: :
Code:
Sub Pa2()
Range("B1").FormulaR1C1 = "=R[2]C"
Range("D1").FormulaR1C1 = "=R[8]C"
Range("E9") = Range("B5").Value
Range("D1").FormulaR1C1 = "=R[9]C"
Range("E10") = Range("B5").Value
Range("D1").FormulaR1C1 = "=R[10]C"
Range("E11") = Range("B5").Value
End Sub
J'ai du louper quelque chose....:rolleyes:
Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Bonjour,

pour une boucle sur la plage E9 E95, une façon comme ceci :

Code:
Dim c As Range
For Each c In Range("E9:E95")
'ton code
Next c

Après si tu pouvais expliciter le résultat attendu...

bon aoprès midi
@+

Edition : bonjour fg
 

soaresden

XLDnaute Nouveau
Re : [VBA] Boucle dans Macro :confused: ?

Voila Pour vous !

En fait je vous explique brievement le principe

J'utilise la loi binomiale pour faire des calculs
Etant donné que je fais varier un parametre, je voudrais automatiser ce parametre via une liste (la colonne E)

Etant donné qu'il copie colle a chaque fois une valeur, je me suis dit que c'etait une boucle finalement ?

Ca sert a tracer une courbe en temps reel :p !

PS: les 2 fichiers sont des .rar en fait !, comme il etait gros, j'ai découpé en 2 et remis en .zip sinon il veut pas uploader

RENOMMER le en .RAR !
 

Pièces jointes

  • VBA.part1.zip
    43.9 KB · Affichages: 26
  • VBA.part2.zip
    19.3 KB · Affichages: 23

Efgé

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Re soaresden, Bonjour Pierrot93,
En dehors du fait qu'il est "rare" de pouvoir ouvrir ce genre d'archive (j'ai pu car je suis chez moi...),et que le fichier reconstuit est en XLSM, votre exemple n'apposrte rien quant à la finalité de la macro (enfin pour moi, par ce que pour moi, la loi binomiale ....)
Etant certain que Pierrot93 est meilleur que moi à ce jeu;
Cordialement
 

soaresden

XLDnaute Nouveau
Re : [VBA] Boucle dans Macro :confused: ?

Comme dit auparavant, je ne peux pas car il prend des valeurs en fonction d'une autre feuille car il fait partie d'une loi binomiale mais


voici la macro faites jusqu'a 13

On remarque qu'il y'a une incrementation de 1 pour RC
et que on selectionne ligne du dessous a chaque fois

Sub Pa()
'
' Pa Macro

Range("B1").Select
ActiveCell.FormulaR1C1 = "=R[2]C"
Range("D1").Select
ActiveCell.FormulaR1C1 = "=R[8]C"
Range("B5").Select
Selection.Copy

Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[9]C"
Range("B5").Select
Selection.Copy

Range("E10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[10]C"
Range("B5").Select
Selection.Copy

Range("E11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[11]C"
Range("B5").Select
Selection.Copy

Range("E12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[12]C"
Range("B5").Select
Selection.Copy

Range("E13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[13]C"
Range("B5").Select
Selection.Copy
...
etc
etc
End Sub
 
Dernière édition:

soaresden

XLDnaute Nouveau
Re : [VBA] Boucle dans Macro :confused: ?

Par étape, la macro doit réaliser:

Tout d'abord
Range("B1").Select
ActiveCell.FormulaR1C1 = "=R[2]C"
Range("D1").Select
ActiveCell.FormulaR1C1 = "=R[8]C"

Parce qu'on en a besoin pour "selectionner" Pa ou Pb :)

Ensuite :

On va sur D1 (la cellule designant le %)
on lui donne la valeur en D9
La valeur en B5 a alors changé, c'est pourquoi on la copie et on la colle en E9

On va sur D1 (la cellule designant le %)
on lui donne la valeur en D10
La valeur en B5 a alors changé, c'est pourquoi on la copie et on la colle en E10

On va sur D1 (la cellule designant le %)
on lui donne la valeur en D11
La valeur en B5 a alors changé, c'est pourquoi on la copie et on la colle en E11

...

Jusqu'a 209.

A partir d'un moment de toute facon, la valeur va changer et la courbe va apparaitre :)
 

pierrejean

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Re

A tester puisque l'on ne peut pas le faire dans le fichier joint

Code:
Sub Pa1()
Range("B1").FormulaR1C1 = "=R[2]C"
Range("D1").FormulaR1C1 = "=R[8]C"
For n = 9 To Range("E65536").End(xlUp).Row
Range("B5").Copy
Range("E" & n).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("D1").FormulaR1C1 = "=R[" & n & "]C"
Next
End Sub

Note: Je ne connais EXcel 2007 que depuis peu et je ne m'explique pas pourquoi la macro que j'ai créée qui s'affiche bien (a l'instar des autres) ne peut etre executée (Bouton Executer non operationnel alors qu'i l'est pour les autres)
Je peux apparemment la lancer a partir de Vba (mais l'effet n'est pas saisissant !!)
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Re
Un essai sans grande conviction...
Code:
Sub Pa3()
Range("B1").FormulaR1C1 = "=R[2]C"
Range("D1").FormulaR1C1 = "=R[8]C"
For i = 9 To 209
    Cells(1, 4) = Cells(i, 4).Value
    Cells(i, 5) = Cells(5, 2).Value
Next i
End Sub
Cordialement
 

Ubot303

XLDnaute Occasionnel
Re : [VBA] Boucle dans Macro :confused: ?

Bonjour,

Ceci est un exemple rigolo d'un problème mal posé qui, du coup, nous oblige à extrapoler :
La demande
Le résultat escompté
La méthode pour y parvenir...

Si l'on en revient au problème de base :
Etant donné que je fais varier un parametre, je voudrais automatiser ce parametre via une liste (la colonne E)

La solution est alors beaucoup plus évidente :
En colonne E : tu mets ton paramètre qui varie de 1 à 65536 par ex en entrant 1 en E1, 2 en E2, et un double clic auto jusqu'en bas du fichier

En colonne F : tu mets ton calcul en prenant appui sur la colonne E.
En F2 : tu mets =E2 * 2 et tu tires la formule

Pourquoi vouloir passer par une boucle de macro (dont Pierrot t'a donné la syntaxe) ou par un "copier coller valeur" répété en macro?
 

Efgé

XLDnaute Barbatruc
Re : [VBA] Boucle dans Macro :confused: ?

Re au fil,
Pierreean, pour 2007 et à titre annecdotique, si je lance ta proposition (et la mienne aussis d'ailleurs) depuis un nouveau classeur par F8, Excel me crée un nouveau module avec uniquement les en têtes :
Code:
Sub Pa1()
 
End Sub
A la deuxiéme tentative il me donne le choix Module1.Pa1 ou Module2.Pa1 et accepte le code en Module1 :eek:.
Pour moi cela reste un mystére.
Cordialement
 

Discussions similaires

Réponses
2
Affichages
183
Réponses
5
Affichages
212