Etendre une formule jusqu'à la dern. cellule où elle s'applique

Résolu/Fermé
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013 - 19 sept. 2013 à 14:55
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013 - 22 sept. 2013 à 22:35
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 !
A voir également:

3 réponses

tobas Messages postés 210 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 septembre 2014 24
19 sept. 2013 à 15:04
bonjour,
à essayer
ligne à modifier dans ton code


DerLigfich = Range("A1").End(xlDown).Row
Bas = "z" & DerLigfich
Selection.AutoFill Destination:=Range("z2",fin), Type:=xlFillDefault
0
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013
19 sept. 2013 à 15:17
Merci pour ta réponse mais où places-tu ces 3 lignes exactement? Merci d'avance.
0
tobas Messages postés 210 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 septembre 2014 24
19 sept. 2013 à 15:41
tu les place juste au dessus de la ligne identique dans ton code
0
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013
19 sept. 2013 à 15:53
Ok merci beaucoup. J'essaierais ce soir. A+
0
tobas Messages postés 210 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 septembre 2014 24
19 sept. 2013 à 15:06
desole erreur dans la dernier ligne

Selection.AutoFill Destination:=Range("z2",Bas), Type:=xlFillDefault
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
19 sept. 2013 à 15:09
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
0
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013
19 sept. 2013 à 15:21
Bonjour, merci pour ta réponse, ça marche bien! Par contre que changes tu dans ta formule si je veux faire la même chose sur la colonne AA, par exemple. Merci d'avance.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
19 sept. 2013 à 16:26
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
0
KevPC Messages postés 14 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 30 octobre 2013
22 sept. 2013 à 22:35
Merci beaucoup Mélanie.
0