ActiveCell.FormulaR1C1 : la macro conserve les données précédentes

Bonjour, j'ai des connaissances de base et j'ai tenté d'enregistrer une macro. La première fois, ça fonctionne. Lorsque je repasse avec d'autres données, la macro conserve en mémoire les données initialement traitées et je ne sais pas pourquoi.

Ce que je cherche à faire est de prendre des données dans une colonne et ailleurs dans les classeurs, les mettre sur une ligne. Enlever la formule de chaque cellule (je connais F2, F9). Ultimement, je copie ces cellules dans un autre fichier Excel (car je ne veux pas qu'ils soient liés). C'est simple, mais il y a un truc qui ne fonctionne pas.

J'ai recréé sommairement ce que je cherche à faire et la macro, dans le fichier. Sinon, la macro ressemble à ceci :

Sub Macro5()

'
' Macro5 Macro
'

'
Range("L13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-7]C[-1]"
Range("L13").Select
ActiveCell.FormulaR1C1 = "1"
Range("M13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-6]C[-2]"
Range("M13").Select
ActiveCell.FormulaR1C1 = "0.75"
Range("N13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-5]C[-3]"
Range("N13").Select
ActiveCell.FormulaR1C1 = "-5"
Range("O13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-4]C[-4]"
Range("O13").Select
ActiveCell.FormulaR1C1 = "Masion"
Range("O14").Select
End Sub

Je vous remercie. Yannick

6test1.xlsm (47.05 Ko)

Bonsoir,

les valeurs sont écrites "en dur" dans la macro, donc dans la cellule si vous écrivez ActiveCell.FormuleR1C1 = "1", alors à chaque lancement de la macro il y aura "1" d'inscrit.

@ bientôt

LouReeD

Regardez le fichier joint :

13test1-lrd.xlsm (47.08 Ko)
Sub LouReeD()
    Dim Tablo
    Tablo = Range("E6:E9") ' mise des valeurs dans un tableau
    ' sélectionner la première cellule de destination et en même temps coller les données
    ' du tableau en les transposant
    ' ici je colle en ligne à partir de L13
    Range("L13").Resize(1, UBound(Tablo, 1)) = Application.Transpose(Tablo)
End Sub

Le RESIZE permet de redimensionner la cellule choisie (L13) en une plage de données d'une hauteur de 1 ligne sur la longueur du tableau, ici 4 colonnes. Ensuite sur cette plage on colle les données contenues dans Tablo en le transposant : il est à l'origine de 4 lignes sur 1 colonne, une fois transposé il fait 1 ligne et 4 colonnes, exactement la même taille que le RESIZE ! Le monde est bien fait, non ?

@ bientôt

LouReeD

Bonjour LouReeD,

La macro, elle est superbe. Merci beacoup.

Bonsoir,

merci @ vous pour votre retour !

@ bientôt

LouReeD

Rechercher des sujets similaires à "activecell formular1c1 macro conserve donnees precedentes"