Etendre une formule jusqu'à la dern. cellule où elle s'applique
Résolu
KevPC
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
KevPC Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
KevPC Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
j'ai bien cherché partout depuis 2h et je n'arrive pas à trouver de réponse à ma question. Je me permets donc de poster mon message sur le forum afin de vous demander votre avis.
Voilà ma formule :
Sub Macro1() :
Range("z2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
Range("z2").Select
Selection.AutoFill Destination:=Range("z2:z3000"), Type:=xlFillDefault
Range("z2:z3000").Select
Range("z1").Select
End Sub
Explications :
Au total, j'ai 2500 lignes ou il y a des données à calculer, ce qui correspond au nombre d'articles (=> Colonne A = art.1 à art.2500)
J'ai donc étendu ma formule jusqu'à la cellule z3000 (surligné en gras).
Le problème c'est que dépassé la ligne 2500, le calcul n'est plus viable et n'affiche donc plus le bon résultat.
Souhait :
J'aimerais que la formule s'étende dans la colonne Z en prenant en compte la colonne A. Que "si A2501 est vide, alors qu'il n'y ait pas de formule dans la colonne Z2501". Nota : je ne veux pas de conditionnelle dans ma cellule, je veux une cellule vide...
Voilà pour mon besoin. J'espère que mes explications sont assez claires, et si ce n'est pas le cas, je ferais un fichier exemple.
Merci d'avance les amis !
j'ai bien cherché partout depuis 2h et je n'arrive pas à trouver de réponse à ma question. Je me permets donc de poster mon message sur le forum afin de vous demander votre avis.
Voilà ma formule :
Sub Macro1() :
Range("z2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
Range("z2").Select
Selection.AutoFill Destination:=Range("z2:z3000"), Type:=xlFillDefault
Range("z2:z3000").Select
Range("z1").Select
End Sub
Explications :
Au total, j'ai 2500 lignes ou il y a des données à calculer, ce qui correspond au nombre d'articles (=> Colonne A = art.1 à art.2500)
J'ai donc étendu ma formule jusqu'à la cellule z3000 (surligné en gras).
Le problème c'est que dépassé la ligne 2500, le calcul n'est plus viable et n'affiche donc plus le bon résultat.
Souhait :
J'aimerais que la formule s'étende dans la colonne Z en prenant en compte la colonne A. Que "si A2501 est vide, alors qu'il n'y ait pas de formule dans la colonne Z2501". Nota : je ne veux pas de conditionnelle dans ma cellule, je veux une cellule vide...
Voilà pour mon besoin. J'espère que mes explications sont assez claires, et si ce n'est pas le cas, je ferais un fichier exemple.
Merci d'avance les amis !
A voir également:
- Etendre une formule jusqu'à la dern. cellule où elle s'applique
- Formule si ou - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Aller à la ligne dans une cellule excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
3 réponses
bonjour,
à essayer
ligne à modifier dans ton code
DerLigfich = Range("A1").End(xlDown).Row
Bas = "z" & DerLigfich
Selection.AutoFill Destination:=Range("z2",fin), Type:=xlFillDefault
à essayer
ligne à modifier dans ton code
DerLigfich = Range("A1").End(xlDown).Row
Bas = "z" & DerLigfich
Selection.AutoFill Destination:=Range("z2",fin), Type:=xlFillDefault
KevPC
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
Merci pour ta réponse mais où places-tu ces 3 lignes exactement? Merci d'avance.
tobas
Messages postés
210
Date d'inscription
Statut
Membre
Dernière intervention
24
tu les place juste au dessus de la ligne identique dans ton code
KevPC
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
Ok merci beaucoup. J'essaierais ce soir. A+
desole erreur dans la dernier ligne
Selection.AutoFill Destination:=Range("z2",Bas), Type:=xlFillDefault
Selection.AutoFill Destination:=Range("z2",Bas), Type:=xlFillDefault
Bonjour,
tu peux faire une boucle mais ca sera un tout petit plus long :
sub Macro1() :
i= 2
do while cells(i,1) <> "" 'tournera sur toutes les lignes tant que la 3ècolonne est renseignée)
i=i+1
loop
Range("z2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
range("z2").copy range(cells(2,26),cells(i-1,26))
End Sub
tu peux faire une boucle mais ca sera un tout petit plus long :
sub Macro1() :
i= 2
do while cells(i,1) <> "" 'tournera sur toutes les lignes tant que la 3ècolonne est renseignée)
i=i+1
loop
Range("z2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
range("z2").copy range(cells(2,26),cells(i-1,26))
End Sub
voici cce que fait la macro
i= 2
do while cells(i,1) <> "" 'tournera sur toutes les lignes tant que la 1ère colonne est renseignée)
i=i+1
loop
'autrement i = numéro de ligne de la dernière cellule renseignée en A
'ici on sélectionne z2
Range("z2").Select
'tu y inscris ta formule
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
'on copie z2 et oRange("z2").Select
n la colle de la cellule de la ligne 2 colonne 26 (cells(2,26) à la cellule de la ligne i à la colonne 26.
range("z2").copy range(cells(2,26),cells(i-1,26))
'pour faire la même chose en AA :
Range("aa2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
range("AA2").copy range(cells(2,27),cells(i-1,27))
End Sub
i= 2
do while cells(i,1) <> "" 'tournera sur toutes les lignes tant que la 1ère colonne est renseignée)
i=i+1
loop
'autrement i = numéro de ligne de la dernière cellule renseignée en A
'ici on sélectionne z2
Range("z2").Select
'tu y inscris ta formule
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
'on copie z2 et oRange("z2").Select
n la colle de la cellule de la ligne 2 colonne 26 (cells(2,26) à la cellule de la ligne i à la colonne 26.
range("z2").copy range(cells(2,26),cells(i-1,26))
'pour faire la même chose en AA :
Range("aa2").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-2]=""alerte"",RC[-1]=""ok""),""Date de création > 4 mois"",IF(AND(RC[-2]=""ok"",RC[-1]=""alerte""),""Date de solde SAS > 6 mois"",IF(AND(RC[-2]=""alerte"",RC[-1]=""alerte""),""Double alerte"",""Pas d'alerte"")))"
range("AA2").copy range(cells(2,27),cells(i-1,27))
End Sub