Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier une formule si certaines cellules ne sont pas vides

11 réponses
Avatar
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...

Merci d'avance.
--
PB

10 réponses

1 2
Avatar
Mavichavel
en ce *mercredi* *02/08/2006* , notre trés honoré(e) *Pascal* dans un éclair de génie et aprés mûre
reflexion a enfin exprimé sa pensée en ce qui suit :


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...

Merci d'avance.


et une simple formule a placer dans A6 et recopier vers le bas ne suffirait pas ?

=SI($D6<>"";$A$5;"")

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
On ne dit pas un ouvre-boîte, mais un portier de night-club.

Avatar
G.W.
Bonjour Pascal,
Sub recopie_conditionnel()
For i = 6 To Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula Range("A" & (i - 1)).Formula
Next i
End Sub

Est ce que ça convient ?

"Pascal" a écrit dans le message news:

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...

Merci d'avance.
--
PB


Avatar
Pascal
Et non ! car je ne veux pas le résultat de A5 mais la formule présente dans
A5 (ÚTEVAL(...)).
De plus je ne souhaite pas remplir les lignes de 6 à 65000 de la colonne A
d'une formule car mon fichier de base pèse déjà 8 Mo...

--
PB



en ce *mercredi* *02/08/2006* , notre trés honoré(e) *Pascal* dans un éclair de génie et aprés mûre
reflexion a enfin exprimé sa pensée en ce qui suit :


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...

Merci d'avance.


et une simple formule a placer dans A6 et recopier vers le bas ne suffirait pas ?

=SI($D6<>"";$A$5;"")

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
On ne dit pas un ouvre-boîte, mais un portier de night-club.






Avatar
Pascal
Merci beaucoup. Cela fonctionne très bien. Un petit bémol tout de même : la
macro part à chaque fois de la ligne 6 (normal c'est ce que j'ai demandé!) ;
comment la faire partir de la cellule active placée dans la colonne A bien
sur ?

Encore merci pour cette macro impossible à trouver pour un débutant !

--
PB



Bonjour Pascal,
Sub recopie_conditionnel()
For i = 6 To Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula > Range("A" & (i - 1)).Formula
Next i
End Sub

Est ce que ça convient ?

"Pascal" a écrit dans le message news:

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...

Merci d'avance.
--
PB







Avatar
G.W.
Si tu veux recopier la formule inscrite dans la ligne juste audessus de la
cellule active (en colonne A) :

Sub recopie_conditionnel1()
if activecell.column = 1
For i = activecell.row To
Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula Range("A" & (i - 1)).Formula
Next i
End Sub

Si tu veux recopier la formule inscrite en A5 :

Sub recopie_conditionnel2()
if activecell.column = 1
For i = activecell.row To
Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula Range("A5").Formula
Next i
End Sub



"Pascal" a écrit dans le message news:

Merci beaucoup. Cela fonctionne très bien. Un petit bémol tout de même :
la

macro part à chaque fois de la ligne 6 (normal c'est ce que j'ai demandé!)
;

comment la faire partir de la cellule active placée dans la colonne A bien
sur ?

Encore merci pour cette macro impossible à trouver pour un débutant !

--
PB



Bonjour Pascal,
Sub recopie_conditionnel()
For i = 6 To Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula > > Range("A" & (i - 1)).Formula
Next i
End Sub

Est ce que ça convient ?

"Pascal" a écrit dans le message
news:



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...

Merci d'avance.
--
PB









Avatar
Pascal
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 ?

--
PB



Si tu veux recopier la formule inscrite dans la ligne juste audessus de la
cellule active (en colonne A) :

Sub recopie_conditionnel1()
if activecell.column = 1
For i = activecell.row To
Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula > Range("A" & (i - 1)).Formula
Next i
End Sub

Si tu veux recopier la formule inscrite en A5 :

Sub recopie_conditionnel2()
if activecell.column = 1
For i = activecell.row To
Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula > Range("A5").Formula
Next i
End Sub



"Pascal" a écrit dans le message news:

Merci beaucoup. Cela fonctionne très bien. Un petit bémol tout de même :
la

macro part à chaque fois de la ligne 6 (normal c'est ce que j'ai demandé!)
;

comment la faire partir de la cellule active placée dans la colonne A bien
sur ?

Encore merci pour cette macro impossible à trouver pour un débutant !

--
PB



Bonjour Pascal,
Sub recopie_conditionnel()
For i = 6 To Range("D:D").SpecialCells(xlCellTypeLastCell).Row
If Not IsEmpty(Range("D" & i).Value) Then Range("A" & i).Formula > > > Range("A" & (i - 1)).Formula
Next i
End Sub

Est ce que ça convient ?

"Pascal" a écrit dans le message
news:



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...

Merci d'avance.
--
PB














Avatar
G.W.
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 ?


Avatar
Pascal
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 ?








Avatar
G.W.
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 ?










Avatar
Pascal
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 ?















1 2