A voir également:
- VBA Formule Matricielle/Array
- Formule si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel colonne - Guide
- Excel mise en forme conditionnelle formule - Guide
2 réponses
Bonjour,
Pour la 2nde formulation tu peux concatener des chaines et intercaler des variables.
Par exemple:
"=MMult(NormRand!A1:E100,Transpose(Cholesky!B14:F18))"
deviendrait:
c=5
i=100
"=MMult(NormRand!A1:" & chr(c+64) & i & ",Transpose(Cholesky!B14:F18))"
Je te laisse tester...
eric
Pour la 2nde formulation tu peux concatener des chaines et intercaler des variables.
Par exemple:
"=MMult(NormRand!A1:E100,Transpose(Cholesky!B14:F18))"
deviendrait:
c=5
i=100
"=MMult(NormRand!A1:" & chr(c+64) & i & ",Transpose(Cholesky!B14:F18))"
Je te laisse tester...
eric
Bonjour,
Je ne m'étais penché que sur cette partie là :
Selection.FormulaArray = "=MMult(NormRand!A1:E100,Transpose(Cholesky!B14:F18))" et sa fonctionne, mais mes colonnes de NormRand selectionné sont fixes ce qui m'arrange pas.
il passe a travers la boucle mais dans la meme feuille
Oui, tu as enlevé le Sheets.Add...., donc tu restes toujours sur la dernière feuille
je suis pas familier avec la fonction CHR
Chr() retourne le caractère dont on lui fournit le code ascii, 65>=A, 66=>B, ... pour fabriquer ta référence variable.
Vu que ta référence commençais toujours par A1: tu pouvais le laisser sous forme de chaine, pas la peine de rajouter des formules là où ce n'est pas nécessaire.
Et moi c'est avec MMult() que je ne suis pas familier...
Le mieux c'est de déposer un exemple de ton fichier sur cijoint.fr et de coller ici le lien fourni.
Si en plus de ta macro tu pouvais mettre sur une feuille un exemple fonctionnel de cette fonction (en formule donc) ça aiderait pour connaitre ses paramètres et tester ce qu'elle retourne.
A moins que remettre le Sheets.Add ait été suffisant....
eric
Je ne m'étais penché que sur cette partie là :
Selection.FormulaArray = "=MMult(NormRand!A1:E100,Transpose(Cholesky!B14:F18))" et sa fonctionne, mais mes colonnes de NormRand selectionné sont fixes ce qui m'arrange pas.
il passe a travers la boucle mais dans la meme feuille
Oui, tu as enlevé le Sheets.Add...., donc tu restes toujours sur la dernière feuille
je suis pas familier avec la fonction CHR
Chr() retourne le caractère dont on lui fournit le code ascii, 65>=A, 66=>B, ... pour fabriquer ta référence variable.
Vu que ta référence commençais toujours par A1: tu pouvais le laisser sous forme de chaine, pas la peine de rajouter des formules là où ce n'est pas nécessaire.
Et moi c'est avec MMult() que je ne suis pas familier...
Le mieux c'est de déposer un exemple de ton fichier sur cijoint.fr et de coller ici le lien fourni.
Si en plus de ta macro tu pouvais mettre sur une feuille un exemple fonctionnel de cette fonction (en formule donc) ça aiderait pour connaitre ses paramètres et tester ce qu'elle retourne.
A moins que remettre le Sheets.Add ait été suffisant....
eric
j'ai essayé comme tu m'as suggeré mais ca fonctionne pas, il passe a travers la boucle mais dans la meme feuille alors que moi je veux qu'il passe dans la boucle pour une feuille puis saute de feuille, change de colonnes pour les ranges et effectue a nouveau le calcul, voila le code reecrit au cas ou il y aurait une erreure que je n'ai pas vue, je dois avouer que je suis pas famillier avec la fonction CHR:
Do Until i = 13
For C = 0 To T
For B = 0 To T - 5
( TailleSim est un long = 100 generalement)
Sheets(Sheets.Count).Range(Cells(2, 2), Cells(TailleSim + 1, 6)).Select
Selection.FormulaArray = "=MMult(NormRand!" & Chr(65 + B) & 1 & " : " & Chr(69 + C) & TailleSim & ",Transpose(Cholesky!B14:F18))"
Sheets(Sheets.Count).Name = "Alea Month" & i
Next B
Next C
i = i + 1
Loop