Copier une formule si certaines cellules ne sont pas vides
11 réponses
Pascal
Bonjour,
J'ai une formule en A5. En VBA, je souhaiterai copier cette formule dans les
cellules en dessous (à partir de A6) tant que les cellules des lignes
correspondantes de la colonne D se sont pas vides.
Autrement dit :
D6 n'est pas vide alors copie en A6
D7 n'est pas vide alors copie en A7
D8 est vide : on s'arrête !
Le nombre de cellules remplies dans la colonne D est variable...
For i = 7 To Range("D7:D20") ne marche pas parce que i est un compteur : compter de 7 à ?? ( Range("D7:D20") ne renvoie pas un nombre mais une plage de cellules )
Bonne soirée
"Pascal" a écrit dans le message news:
Effectivement votre macro marche bien !
J'avais modifié la formule avec For i = 7 To Range("D7:D20") et là bizarrement ça ne marche pas !?
J'ai repris votre macro et ajouté "Else Exit For" à la fin de l'instruction
"If Not" pour ne pas traiter toute la colonne : c'est parfait. Mon problème
est résolu
Encore merci et bonne soirée ! -- PB
Ceci fonctionne bien chez moi ( recopie de la cellule du dessus )
Sub essai() If ActiveCell.Column = 1 Then For i = ActiveCell.Row To Range("D:D").SpecialCells(xlCellTypeLastCell).Row If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).FormulaR1C1 Range("A" & (i - 1)).FormulaR1C1 Next i End If End Sub
Si ça ne fonctionne pas il faudrait comparer la formule initiale à recopier
( exemple = somme(.....) ) dans la cellule au dessus de la cellule active
et quelle est la formule recopiée par la macro ( dans la cellule active lors
du lancement de la macro )
"Pascal" a écrit dans le message news:
Désolé mais c'est pire ! La formule est copiée une fois avec les références de cellules entourées
de
' et génère #NOM ? puis erreur 1004 !
Merci pour votre persévérance !
-- PB
Petite erreur Il faut remplacer les " Formula " par des " FormulaR1C1 "
"Pascal" a écrit dans le message news:
Ok pour la prise en compte de la cellule active mais je viens de m'apercevoir
que la formule recopiée ne prend pas en compte le changement de ligne
:
les
références des formules écrites en A6, A7... sont identiques à celles
de
A5 !
J'ai donc une copie exacte de A5 et non un calcul basé sur les lignes
6,
7...
Je n'utilise pas de $ dans la formule en A5...
Quelle modification apporter ?
For i = 7 To Range("D7:D20") ne marche pas parce que i est un compteur :
compter de 7 à ?? ( Range("D7:D20") ne renvoie pas un nombre mais une
plage de cellules )
Bonne soirée
"Pascal" <Pascal@discussions.microsoft.com> a écrit dans le message news:
4F1F9FA7-2876-4591-AA9B-FA6F0E4A993F@microsoft.com...
Effectivement votre macro marche bien !
J'avais modifié la formule avec For i = 7 To Range("D7:D20") et là
bizarrement ça ne marche pas !?
J'ai repris votre macro et ajouté "Else Exit For" à la fin de
l'instruction
"If Not" pour ne pas traiter toute la colonne : c'est parfait. Mon
problème
est résolu
Encore merci et bonne soirée !
--
PB
Ceci fonctionne bien chez moi ( recopie de la cellule du dessus )
Sub essai()
If ActiveCell.Column = 1 Then
For i = ActiveCell.Row To
Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).FormulaR1C1
Range("A" & (i - 1)).FormulaR1C1
Next i
End If
End Sub
Si ça ne fonctionne pas il faudrait comparer la formule initiale à
recopier
( exemple = somme(.....) ) dans la cellule au dessus de la cellule
active
et quelle est la formule recopiée par la macro ( dans la cellule active
lors
du lancement de la macro )
"Pascal" <Pascal@discussions.microsoft.com> a écrit dans le message
news:
For i = 7 To Range("D7:D20") ne marche pas parce que i est un compteur : compter de 7 à ?? ( Range("D7:D20") ne renvoie pas un nombre mais une plage de cellules )
Bonne soirée
"Pascal" a écrit dans le message news:
Effectivement votre macro marche bien !
J'avais modifié la formule avec For i = 7 To Range("D7:D20") et là bizarrement ça ne marche pas !?
J'ai repris votre macro et ajouté "Else Exit For" à la fin de l'instruction
"If Not" pour ne pas traiter toute la colonne : c'est parfait. Mon problème
est résolu
Encore merci et bonne soirée ! -- PB
Ceci fonctionne bien chez moi ( recopie de la cellule du dessus )
Sub essai() If ActiveCell.Column = 1 Then For i = ActiveCell.Row To Range("D:D").SpecialCells(xlCellTypeLastCell).Row If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).FormulaR1C1 Range("A" & (i - 1)).FormulaR1C1 Next i End If End Sub
Si ça ne fonctionne pas il faudrait comparer la formule initiale à recopier
( exemple = somme(.....) ) dans la cellule au dessus de la cellule active
et quelle est la formule recopiée par la macro ( dans la cellule active lors
du lancement de la macro )
"Pascal" a écrit dans le message news:
Désolé mais c'est pire ! La formule est copiée une fois avec les références de cellules entourées
de
' et génère #NOM ? puis erreur 1004 !
Merci pour votre persévérance !
-- PB
Petite erreur Il faut remplacer les " Formula " par des " FormulaR1C1 "
"Pascal" a écrit dans le message news:
Ok pour la prise en compte de la cellule active mais je viens de m'apercevoir
que la formule recopiée ne prend pas en compte le changement de ligne
:
les
références des formules écrites en A6, A7... sont identiques à celles
de
A5 !
J'ai donc une copie exacte de A5 et non un calcul basé sur les lignes