Copier une formule dans une cellule sans utiliser la formule copy en VBA

Bonjour

j'ai ce fichier où j'ai des lignes blanches qui avec des données.

image

et des lignes colorées qui me donnent le sous-total des lignes blanches

vous voyez que le nombre de lignes blanches n'est pas le meme pur chaque categorie, donc la formule du sous-total n'est pas la meme . elle dépend du nombre de lignes à prendre en compte.

Le sous-total donné en colonne B est toujours indiqué, je veux donc appliquer la meme formule aux autres colonnes.

(je ne cherche que je sous total de la ligne 2, je ferai une boucle plus tard pour les autres sous-totaux).

mon code vba consiste à copier la formule en B2 et j'imaginais qu'en copiant, les cellules allaient se décaler de manière relative.

or mon code VA ne copie pas la formule mais la valeur

j'utilise formula R1C1.

voir mon fichier joint pour l'exemple.

que dois-je changer dans le code VBA?

j'aimerai éviter de faire un truc du genre

range("B2"). select

selection.copy

etc...

merci

5classeur1.xlsm (15.73 Ko)

Bonjour

Un essai à tester. Te convient-il ?

3classeur1-v1.xlsm (22.05 Ko)
Option Explicit

Dim i&, j&

Sub SousTotaux()

    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If WorksheetFunction.IsFormula(Range("B" & i)) Then
            Cells(i, 2).AutoFill Destination:=Range("B" & i & ":E" & i), Type:=xlFillDefault
        End If
    Next i
End Sub

Bye !

ca marche presque.

en réalité, j'ai une colonne vide entre la colonne B où je copie la formule et la 1ere colonne où je remplis (elle commence en D et non en C). la fonction autofill ne marche pas si la destination n'est pas juste à coté de la source?

Aussi, les lignes blanches sont supposées contenir des formules mais ce ne sont pas des sous-totaux. du coup, la macro va aussi copier les formules des lignes blanches (j'ai fait un exemple de modif qui ne marche plus en PJ)

.

Bonjour

en réalité, j'ai une colonne vide entre la colonne B où je copie la formule et la 1ere colonne où je remplis (elle commence en D et non en C)

Alors, il faut s'y prendre autrement.

Nouvelle version

3classeur1-v2.xlsm (22.12 Ko)
Option Explicit

Dim i&, j&

Sub SousTotaux()

    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If WorksheetFunction.IsFormula(Range("B" & i)) Then
            Cells(i, 2).Copy
            Range("D" & i & ":F" & i).PasteSpecial xlPasteFormulas
        End If
    Next i
End Sub

Bye !

on est donc obligé d'utiliser la fonction copy.

OK merci, je ferais avec. en termes de perf ca change pas grand chose à un code où j'enregistre le contenu dans une variable ou l'afficher ailleurs?

Rechercher des sujets similaires à "copier formule utiliser copy vba"