Formule sur des milliers de ligne par macro

poipoi59

XLDnaute Junior
bonjour,

Je tente vie l'enregistreur de macro et, en définissant une plage de remplacer une formule et sa recopie vers le bas par un code vba mais cela ne marche pas.

Je soumets le problème en PJ

Pouvez-vous m'aider ?

Merci beaucoup
 

Pièces jointes

  • Classeur1.xls
    378 KB · Affichages: 46
  • Classeur1.xls
    378 KB · Affichages: 46
  • Classeur1.xls
    378 KB · Affichages: 44

tototiti2008

XLDnaute Barbatruc
Re : Formule sur des milliers de ligne par macro

Bonjour poipoi,

Peut-être

Code:
Dim Plage As Range
'Application.Calculation = xlCalculationManual
Sheets("Feuil1").Select
Set Plage = Range("b2:b" & range("A65536").end(xlup).row)
Plage.FormulaR1C1 = "=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"
'Plage.Calculate
 

pijaku

XLDnaute Occasionnel
Re : Formule sur des milliers de ligne par macro

Bonjour,

Essayez ce code avec une boucle :
Code:
Sub PlageDeFormules()
Dim Plage As Range, c As Range
Sheets("Feuil1").Select
Set Plage = Range("b2:b10000")
Plage.Clear
For Each c In Plage
    c.Formula = "=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"
Next
End Sub

Edition : Salut tototiti2008!
 

ROGER2327

XLDnaute Barbatruc
Re : Formule sur des milliers de ligne par macro

Bonjour à tous



Une autre :​
VB:
Sub tata()
    Sheets("Feuil1").Range("B2:B10000").FormulaR1C1 = _
        "=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"
End Sub



ROGER2327
#6204


Vendredi 20 Tatane 139 (Saint Tiberge, frère quêteur - fête Suprême Quarte)
15 Thermidor An CCXX, 3,6541h - brebis
2012-W31-4T08:46:11Z
 

poipoi59

XLDnaute Junior
Re : Formule sur des milliers de ligne par macro

Merci à vous pour vos contributions,

Toutes vos solutions fonctionnent mais je recherche la plus rapide d'entre elles car je souhaite la dupliquer sur une trentaine de formules sur plus de 4000 lignes

La première me plaît bien (sans vouloir vexer les autres contributeurs), car elle permet de détecter directement le nombre de formules à "descendre" qui peut être variable.

J'ai souhaité modifier les autres ainsi :

Range("a1").Activate ' selectionne la cellule a1 comme cellule de depart
fin = Range("a3").End(xlDown).Row 'Definit jusqu'ou les cellules sont remplis dans le colonnes A
Sheets("Feuil1").Range("B2: & fin").FormulaR1C1 = "=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"

Mais cela ne fonctionne pas, de plus, je doute que cela soit plus rapide que la 1ère soluce, qu'en pensez-vous ?

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Formule sur des milliers de ligne par macro

Bonjour à tous


Une autre écriture possible
Code:
With Sheets("Feuil1")
.[b2].Resize(.[A65536].End(xlup).Row).FormulaR1C1 = "=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"
End with

Comme l'embarras du choix se Resize lui aussi ;)

PS: Une variante si comme moi on a de vieux yeux ;)
Code:
Dim Formu$
Formu="=IF(RC[-1]=""Aucune MER"",""Oui"",IF(VALUE(RC[-1])>59,""Oui"",""Non""))"
With Sheets("Feuil1")
.[b2].Resize(.[A65536].End(xlup).Row).FormulaR1C1 = Formu
End with
 

Discussions similaires

Réponses
31
Affichages
1 K
Réponses
1
Affichages
121

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87