Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Broch002

XLDnaute Occasionnel
Bonjour le forum,

J'ai un code de recopie vers le bas, mais ils est très long à recopier et sollicite énormément le processeur.

Le Voici
Sub copie()
Application.Calculation = xlManual
Range("D38:AD57").FormulaLocal = Range("D38:AD38").FormulaLocal
Application.Calculation = xlAutomatic
End Sub

Avez-vous un code qui soit rapide et ne sollicitant trop pas le processeur.

Les formules ne sont pas des formules extrêmement complexes exemple:

Range("AB38").FormulaR1C1 = _
"=IFERROR(IF(R2C5=0,"""",IF(R12C2=""Potentiel Mois"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)+R[-7]C[-2],IF(R12C2=""facturé"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)))),"""")"

Cordialement.

Broch002
 

Broch002

XLDnaute Occasionnel
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Bonjour le forum,

J'ai un code de recopie vers le bas, mais ils est très long à recopier et sollicite énormément le processeur.

Le Voici
Sub copie()
Application.Calculation = xlManual
Range("D38:AD57").FormulaLocal = Range("D38:AD38").FormulaLocal
Application.Calculation = xlAutomatic
End Sub

Avez-vous un code qui soit rapide et ne sollicitant trop pas le processeur.

Les formules ne sont pas des formules extrêmement complexes exemple:

Range("AB38").FormulaR1C1 = _
"=IFERROR(IF(R2C5=0,"""",IF(R12C2=""Potentiel Mois"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)+R[-7]C[-2],IF(R12C2=""facturé"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)))),"""")"

Cordialement.

Broch002

Bonjour le forum,

Help, personne à de réponse??

Merci d'avance pour votre aide.:eek:

Broch002
 

Efgé

XLDnaute Barbatruc
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Bonjour Broch002
Sans pouvoir faire de tests, j'ai juste une question:
Pourquoi étendre tes formules avec FormulaLocal et poser la première formule en FormulaR1C1 ?
Si tu as un excel Français, tu devrais mette ta première formule en FormulaLocal.
Cordialement
 

Broch002

XLDnaute Occasionnel
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Bonjour Broch002
Sans pouvoir faire de tests, j'ai juste une question:
Pourquoi étendre tes formules avec FormulaLocal et poser la première formule en FormulaR1C1 ?
Si tu as un excel Français, tu devrais mette ta première formule en FormulaLocal.
Cordialement

Bonjour,

Si je remplace FormuleRIC1 dans la formule par FormulaLocal, cela bug.

Range("AB38").FormulaLocal = _
"=IFERROR(IF(R2C5=0,"""",IF(R12C2=""Potentiel Mois"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)+R[-7]C[-2],IF(R12C2=""facturé"",VLOOKUP(RC3,'[Stat total SECTEUR30.xlsm]Stat annuelle 2'!C2:C50,35,0)))),"""")"

Je joins un fichier, mais comme les liaisons n'existent pas c'est rapide, dans mon fichier sur mon PC(IE7) il faut 1 minutes pour écrire 20 lignes, avec le processeur à 100%, sur un PC en Centrino2, il faut 3 minutes.

Merci de votre aide.

Broch002
 

Pièces jointes

  • test.xlsm
    102.1 KB · Affichages: 23
  • test.xlsm
    102.1 KB · Affichages: 22
  • test.xlsm
    102.1 KB · Affichages: 35

Efgé

XLDnaute Barbatruc
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Re
Si tu utilise Range("D38").FormulaLocal il faut écrire la formule en français:
"=SIERREUR(SI($E$2=0;"""";SI($B$12="Potentiel Mois";RECHERCHEV( etc....
Cordialement
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Re
D'autre part tu fait, en fin de code
Range("D38:AD57").FormulaLocal = Range("D38:AD38").FormulaLocal
Range("M38:N57").FormulaLocal = Range("M38:N38").FormulaLocal

Alors que le Range Range("M38:N57"). est déja inclus dans le range ("D38:AD57").
Double application des formules en("M38:N57").
Cordialement
 

Broch002

XLDnaute Occasionnel
Re : Recopier les formule d'une ligne (D38 à AD38) jusqu'a la ligne 57 (D57 à AD 57

Re
D'autre part tu fait, en fin de code
Range("D38:AD57").FormulaLocal = Range("D38:AD38").FormulaLocal
Range("M38:N57").FormulaLocal = Range("M38:N38").FormulaLocal

Alors que le Range Range("M38:N57"). est déja inclus dans le range ("D38:AD57").
Double application des formules en("M38:N57").
Cordialement

Bonjour, les cellules M et N sont fusionnées, c'est pour cette raison.

Concernant la formule en français, j'ai modifié "ifferror" par "Sierreur" et rien ne change, c'est toujours aussi long.:confused:

Y a-t'il une autre solution?

Broch002
 

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33