Bonjour tout le monde,
Voila, j'ai une grande liste de relevé de mesures pour des habitations (R2000C30) macros constitué de boucles for qui déterminerons un paramètre en fonction d'un tableau de critère et mettrons en forme les divers résultats.
L'ensemble marche bien pour le moment mais est très long à l’exécution (5min)
Ma question étant de savoir s'il n'existe pas une méthode plus rapide pour ce genre de code :
	
	
	
	
	
		
J'ai pensé à séparer complètement les étapes de calculs et de rechercheV/copier mais je ne sais pas si cela sera utile...
Merci de votre attention
Bonne soirée à vous
	
		
			
		
		
	
				
			Voila, j'ai une grande liste de relevé de mesures pour des habitations (R2000C30) macros constitué de boucles for qui déterminerons un paramètre en fonction d'un tableau de critère et mettrons en forme les divers résultats.
L'ensemble marche bien pour le moment mais est très long à l’exécution (5min)
Ma question étant de savoir s'il n'existe pas une méthode plus rapide pour ce genre de code :
		Code:
	
	
	End If
                 Next
              End If
            Next
         End If
       Next
    End If
 Next
x = n + 9
With Sheets("Résultat")
    .Range("a" & n) = Sheets("Données").Range("e" & x) & "| " & Sheets("Données").Range("d" & x) & "| " & Sheets("Données").Range("c" & x) 'Adresse
    .Range("b" & n) = Sheets("Données").Range("e" & x)
    .Range("c" & n) = Sheets("Données").Range("d" & x)
    .Range("d" & n) = Sheets("Données").Range("c" & x) 'N°
    .Range("e" & n) = Sheets("Données").Range("b" & x) 'SG_id
    .Range("f" & n) = "=VLOOKUP(RC1,'coord et surf corrigées'!R4C1:R787C13,3,FALSE)"  'X
    .Range("g" & n) = "=VLOOKUP(RC1,'coord et surf corrigées'!R4C1:R787C13,4,FALSE)"  'Y
    .Range("h" & n) = CDec(tot)      '% simple
    .Range("i" & n) = result    'Conso théorique estimé par le relevé
    .Range("j" & n) = "=IF(RC[-2]=0,""Classe 0"",IF(RC[-1]<=45,""Classe A"",IF(RC[-1]<=75,""Classe B"",IF(RC[-1]<=85,""Classe C"",IF(RC[-1]<=100,""Classe D"",IF(RC[-1]<=155,""Classe E"",IF(RC[-1]<=225,""Classe F"",IF(RC[-1]<=280,""Classe G"",IF(RC[-1]<=355,""Classe H"",""Classe I"")))))))))"  'Classe
    .Range("k" & n) = CDec(pourcMax)    '% Max
    .Range("l" & n) = resultMax    'Conso théorique maxi
    .Range("m" & n) = "=IF(RC[-2]=0,""Classe 0"",IF(RC[-1]<=45,""Classe A"",IF(RC[-1]<=75,""Classe B"",IF(RC[-1]<=85,""Classe C"",IF(RC[-1]<=100,""Classe D"",IF(RC[-1]<=155,""Classe E"",IF(RC[-1]<=225,""Classe F"",IF(RC[-1]<=280,""Classe G"",IF(RC[-1]<=355,""Classe H"",""Classe I"")))))))))"  'Classe Max
    .Range("n" & n) = CDec(pourcMax - tot)   'Ecart max
    .Range("o" & n) = "=(VLOOKUP(RC1,'coord et surf corrigées'!R3C1:R787C13,13,FALSE))"   'Surface Sol
    .Range("p" & n) = "=IFERROR(VLOOKUP(RC1,CadastreSolair!R1C1:R997C16,16,FALSE),0)"   'Surface 3D
    .Range("q" & n) = CByte(Sheets("Données").Range("i" & x))   'Nb de logements
    .Range("r" & n) = CInt(Sheets("Données").Range("j" & x))   'Nb de niveau chauffé
    .Range("s" & n) = 1 - CSng(Sheets("Données").Range("am" & x)) 'Volume chauffé
    .Range("t" & n) = "=IFERROR(VLOOKUP(RC1,Population!R2C1:R583C2,2,FALSE),1)"  'Nb d'habitant(s)
    .Range("u" & n) = "=RC[-6]*RC[-3]*RC[-2]"
    .Range("v" & n) = "=RC[-7]*RC[-4]*(1-RC[-3])"
    .Range("w" & n) = "=RC[-2]*RC[-14]"
    .Range("x" & n) = "=RC[-3]*RC[-12]"
    .Range("y" & n) = "=IFERROR(1-(RC[-1]/RC[-2]),0)"
    .Range("z" & n) = "=(RC[-4]+RC[-5])*RC[-17]"
    .Range("aa" & n) = "=(RC[-5]+RC[-6])*RC[-15]"
    
    .Range("ac" & n) = "=VLOOKUP(RC1,RelevéInstall!R1C1:R786C5,2,FALSE)"
    .Range("ad" & n) = "=RC[-1]*Critère!R13C22"
    .Range("ae" & n) = "=RC[-3]*RC[-1]"
    .Range("af" & n) = "=IFERROR(VLOOKUP(RC5,Cad!R1C1:R749C8,7,FALSE),0)"
'    .Range("ag" & n) = "=RC[-1]/5.22*Critère!R15C22"
    .Range("ah" & n) = "=VLOOKUP(RC1,RelevéInstall!R1C1:R786C5,4,FALSE)"
    .Range("ai" & n) = "=RC[-1]*Critère!R12C22"
    .Range("aj" & n) = "=RC[-1]*RC[1]"
    .Range("ak" & n) = "=RC[1]*RC[-2]"
    .Range("al" & n) = "=IFERROR(VLOOKUP(RC5,Cad!R1C1:R749C8,4,FALSE),0)"
  '  .Range("ac" & n) = "=IF(RC[-24]<(RC[-10]+RC[-5]),0,RC[-24]-(RC[-10]+RC[-5]))"
    
    
End With
  
tot = 0
Next
	J'ai pensé à séparer complètement les étapes de calculs et de rechercheV/copier mais je ne sais pas si cela sera utile...
Merci de votre attention
Bonne soirée à vous
			
				Dernière édition: