Recopie de formules sur la ligne suivante

SPEA

XLDnaute Occasionnel
Bonjour à tous sur le Forum,

Je cherche à faire un bout de code VBA afin de recopier des formules dans la cellule située dessous: Je rentre des valeurs relevées sur des lignes à la suite les unes des autres et des calculs se font automatiquement dans des colonnes sur la même ligne. Actuellement je suis obligé de faire glisser manuellement la formule dans chaque colonne à chaque nouvelle ligne de relevés.

Je met une copie du fichier sur lequel je travaille actuellement, les colonne en fond blanc contiennent les valeurs que j'entre et celles en fond bleu sont les formules à recopier. Excel le fait déja sur les colonnes A et B, quand j'entre une date en C il met à jour A et B car elles sont situées à coté. Je voudrais faire la même chose pour KLM.

Si quelqu'un peut me faire voir comment faire sur la 1° feuille, je peux completer la macro pour les 4 feuilles suivantes.

Merci
 

Fichiers joints

wilfried_42

XLDnaute Barbatruc
Re : Recopie de formules sur la ligne suivante

Bonjour SPEA

Regarde dans l'aide vba, Filldown

exemple : Range("E2:F10").FillDown --> Recopie les Cellules E2 et F2 sur les lignes inferieures Jusqu'à la ligne 10
 

SPEA

XLDnaute Occasionnel
Re : Recopie de formules sur la ligne suivante

Merci du tuyau Wilfried, en fait je cherche plus un code pour effectuer les calculs automatiquement chaque fois que je rajoute une ligne, sans specifier de plage de cellules. De plus je voudrais que le style de la cellule soit egalement dupliqué (bordures, police, etc...)
 

wilfried_42

XLDnaute Barbatruc
Re : Recopie de formules sur la ligne suivante

RE:

voici une macro sur l'interception d'evennement de saisie, la date est la saisie qui declanche la macro.

Dans l'exemple donné, recopie le format, les couleurs, les cadres, les formules des Cellules K L M de la ligne précedente sur la ligne saisie, les formules evoluent comme quand tu etires vers le bas la formule


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 3 Then Exit Sub
Range("K" & Target.Row - 1 & ":M" & Target.Row).FillDown

End Sub
 

SPEA

XLDnaute Occasionnel
Re : Recopie de formules sur la ligne suivante

wilfried_42 a dit:
RE:

voici une macro sur l'interception d'evennement de saisie, la date est la saisie qui declanche la macro.

Dans l'exemple donné, recopie le format, les couleurs, les cadres, les formules des Cellules K L M de la ligne précedente sur la ligne saisie, les formules evoluent comme quand tu etires vers le bas la formule
OK merci Wilfried, ca marche impeccable et c'est simple et facilement adaptable aux feuilles suivantes.

Cerise sur le gateau, que faut il ajouter pour que le format uniquement des colonnes C à J se recopie egalement (ce sont les cellules que l'on saisit) ?

Merci.
 

wilfried_42

XLDnaute Barbatruc
Re : Recopie de formules sur la ligne suivante

re:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 3 Then Exit Sub
Range("D" & Target.Row - 1 & ":M" & Target.Row).FillDown ' Recopie de D à M
Range("D" & target.row & ":J" & target.row).clearcontents ' Raz des valeurs de D à J pour permettre la saisie
End Sub
le principe est de copier la ligne complete (L'exemple provoquant le lancement de la macro sur la colonne C) de D à M
ensuite on remet à vide les cellules à saisir de D à J
 

SPEA

XLDnaute Occasionnel
Re : Recopie de formules sur la ligne suivante

OK merci, reste plus que les colonnes ABC dont la mise en forme ne se copie pas. La macro ne peux fonctionner avec la colonne C car c'est sa saisie qui la declenche. On ne peut copier la cellule dessus et l'effacer.

Je sais pas si j'ai été clair, pas evident de formuler ;)
 

wilfried_42

XLDnaute Barbatruc
Re : Recopie de formules sur la ligne suivante

re:

si on peut faire
voila la suite : j'y ai reflechi un peu tard

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 3 Then Exit Sub
dim memoire as variant
memoire = target.value

Range("A" & Target.Row - 1 & ":M" & Target.Row).FillDown ' Recopie de D à M
Range("D" & target.row & ":J" & target.row).clearcontents ' Raz des valeurs de D à J pour permettre la saisie
target.value = memoire
End Sub
 

SPEA

XLDnaute Occasionnel
Re : Recopie de formules sur la ligne suivante

Les données clignotent pendant quelques secondes, elles sont effacées par la macro puis recopiées puis re-effacées, etc...

ensuite tout rentre dans l'ordre. Sinon pour les formats de cellules no problème, ils se copient bien.
 

wilfried_42

XLDnaute Barbatruc
Re : Recopie de formules sur la ligne suivante

re:

exacte, je ne suis pas encore bien reveillé, la mise à jour de target provoque le declanchement de la macro qui boucle sur elle meme lol

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 3 Then Exit Sub
dim memoire as variant
Application.EnableEvents = false
memoire = target.value
Range("A" & Target.Row - 1 & ":M" & Target.Row).FillDown ' Recopie de D à M
Range("D" & target.row & ":J" & target.row).clearcontents ' Raz des valeurs de D à J pour permettre la saisie
target.value = memoire
Application.EnableEvents = true
End Sub
 

SPEA

XLDnaute Occasionnel
Re : Recopie de formules sur la ligne suivante

Ya pas de mal !

Merci Wilfried, salutations.
 

Discussions similaires


Haut Bas