Copier vers le bas une ligne de formule tant que valeur

Signaler
-
Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
-
Bonjour,
je souhaite réaliser une macro permettant de recopier vers le bas une ligne de formule tant qu'il ya des valeurs dans la colonne d'une autre feuille.
par exemple : feuille1 "données" début des valeurs en A2 jusque indéfini
feuille 2 "calculs" première ligne de calcul de A11 à L11
il faut donc que ligne de calcul de A11 à L11 de la feuille "calculs" soit recopier vers le bas tant qu'il ya des valeurs dans la colonne A de la feuille "données"
j'espère avoir été clair.
Merci pour votre aide.

6 réponses

Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
333
Bonjour.
Et qu'avez vous essayé comme code ?

Cordialement,
Jordane
bonjour jordane,

je débute et même en parcourant différent forum je n'est rien trouvé correspondant à mon problème.
merci si vous pouvez me mettre sur le bon chemin.
Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
333
Bonjour.
Vous pouvez déjà commencer par utiliser l'enregistreur de macro pour voir le code a utiliser pour recopier une cellule vers le bas.
Ensuite, penchez vous sur les boucles et les tests conditionnels.

merci mais j'ai pas vraiment le temps d'étudier tout ça, si vous aviez un exemple se serais plus simple pour moi.
Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Bonjour,
Etudier quoi ?
L'utilisation de l'enregistreur de macros ? (moins de 30 secondes).
Macros ===>> enregister une macro ===>> faire manuellement les gestes ===>> arrêter l'enregistrement ===>>> lire la macro créée !
Si tu ne veux même pas faire cela...
Il est certain que copier/.coller le code écrit par un autre est "confortable", mais ce n'est pas la vocation d'un forum ...
Ici, on s'investit un minimum.
Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
333
Bonsoir,

Dans un élan de générosité, voici le code que vous pourriez utiliser pour réaliser ce que vous souhaitez...

Sub copieFormule()
'-----------------------------------------------------------------------------------------
'   expression.AutoFill(Destination, Type)
'       expression   Variable qui représente un objet Range.
'       Destination : Les cellules à remplir. La destination doit inclure la plage source.
'       Type (faculatif) : Indique le type de recopie.
'-----------------------------------------------------------------------------------------
Dim PlageOuCopier As Range
Dim PlageFeuille2 As Range
    Set PlageFeuille2 = Sheets(2).Range("C1:C11")
Dim MaCelluleAcopier As String
    MaCelluleAcopier = "A1"

    'Boucle pour déterminer le nombre de ligne à copier
    For Each Cellule In PlageFeuille2
        If Cellule.Value <> "" Then
            CellMax = Cellule.Row
        Else
        Exit For
        End If
    Next
    
'Reopie de la cellule contenant la formule
Sheets(1).Select
Set PlageOuCopier = Range(MaCelluleAcopier & ":A" & CellMax)
Range(MaCelluleAcopier).Select
Selection.AutoFill Destination:=PlageOuCopier, Type:=xlFillDefault
 
End Sub




Bien sur, a vous de l'adapter pour coller à VOTRE besoin.



Sachant que :

expression.AutoFill -> Information récupérée avec l'enregistreur de macro (30 secondes)

La boucle ForEach, une petite recherche sur le net pour obtenir l'info vous aurait pris 5 minutes..

Le tout ensemble : 10 minutes. (même avec peu de connaissance sur le VBA )

Pour vos prochaines questions, merci de lire avant la page suivante :
http://codes-sources.commentcamarche.net/contents/11-charte-de-commentcamarche-net-conseils-d-ecriture




Cordialement,
Jordane
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
s'intéresser à l'utilisation de FormulaR1C1
Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
333
Le formulaR1C1 n'incremente pas les variables dans la formule contrairement a autofil.
A voir ce que le demandeur souhaite. .
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Range("C2:C1000").FormulaR1C1 = Range("c1").FormulaR1C1
(exemple)
copiera, en modifiant les variables/adresses, la formule se trouvant en C1
Messages postés
28950
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juillet 2020
333
Ah oui.
Je n'avais pas testé.
Ok. Autant pour moi.
:-)