Macro - Rectification 1 ligne de code

Bonjour tout le monde,

J'espère que chez tout le monde il y a un radieux soleil

Je souhaite mettre en place un petite macro mais il y a un élément qui coince, dans cette ligne ci, je souhaite conserver les colonnes (de BN à DW) mais pour la ligne je souhaite dire que c'est au niveau de la ligne active (non pas toujours la ligne 3)

    Selection.AutoFill Destination:=Range("BN3:DW3"), Type:=xlFillDefault

SI ça peut aider je mets la macro entière (très courte ^^)

    Sub Formule_moyennage()
    ActiveCell.Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-63]:R[3]C[-63])"
    Selection.AutoFill Destination:=Range("BN3:DW3"), Type:=xlFillDefault
    ActiveCell.Offset(12, 0).Select
End Sub

Au passage, je dois la répété 100 fois, la solution que j'ai trouvé c'est avec la fonction call , il y a mieux / plus propre pour faire ça ?

Sub Répétition_macro()
'  à copier 100 fois '
Call Formule_moyennage

Merci d'avance et bon week-end à tous

Bonjour,

une partie de réponse :

pour répéter une instruction plusieurs fois, si on connaît le nombre de fois ( ici "i" est une variable compteur) :

For i=0 to 99
'instructions à effectuer
Next i

Ici une boucle est crée allant de 0 à 99 soit 100 fois...

Le zéro peut être autre chose comme 20 ou bien la valeur d'une variable et le 99 également

donc si début =10 et fin=109 alors

For i=début to fin
'instruction à effectuer
Next i

donne la même chose.

Vous pouvez demander un pas à chaque boucle avec Step

For i=0 to 100 step +10

' instruction à effectuer

Next i

Ici la boucle commence à 0 et se termine à 100 avec un pas de 10 c'est à dire que i à la deuxième boucle vaudra i+10 = 10

et la troisième boucle i = i+10 = 20 etc

Donc il y aura 11 boucles... Le Step peut être négatif ...

@ bientôt

LouReeD


Sinon pour l'autre question, vous pouvez essayer de faire ceci :

Selection.AutoFill Destination:=Range("BN" & ActiveCell.Row & ":DW" & ActiveCell.Row), Type:=xlFillDefault

non testé...

@ bientôt

LouReeD

Merci beaucoup LouReed pour tes explications plus que poussé !

Je note cette nouvelle formule que je vais pouvoir surement rapidement réutiliser

Après pour celle avec .Row j'avoue que je ne suis pas totalement sur de pouvoir réussir à la bricoler pour la réutiliser ( le Row et les & me sont pas encore familier ^^ )

Re

le ".Row" renvoi le numéro de ligne de l'objet auquel il fait référence, donc

ActiveCell.Row renvoi le numéro de ligne de la feuille Excel de la cellule active, si la cellule active est B9, alors ActiveCell.Row est = à B9.Row = 9

ensuite les "&" en VBA sont l'équivalent de la fonction Concatener d'EXCEL c'est à dire "+" c'est à dire "ajouter ce qui suit à ce qu'il y a", du coup dans notre exemple avec B9 :

Range("BN" & ActiveCell.Row & ":DW" & ActiveCell.Row) = Range("BN" & B9.Row & ":DW" & B9.Row) = Range("BN" & 9 & ":DW" & 9) = Range("BN9:DW9") !

Magic, non ?

donc si ActiveCell change en B13on aura : Range("BN13:DW13"), c'est ce que vous cherchiez à faire, non ?

Reste à vous de faire "varier" ActiveCell dans votre code...

@ bientôt

LouReeD

Merci pour ce complément d'information

Oui oui le code était parfaitement bon

Bonne continuation à vous et @ bientôt

LouReeD

Rechercher des sujets similaires à "macro rectification ligne code"