VBA Formule Matricielle/Array
Fermé
Poly101
-
13 févr. 2010 à 02:55
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 15 févr. 2010 à 18:51
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 15 févr. 2010 à 18:51
A voir également:
- VBA Formule Matricielle/Array
- Formule si et - Guide
- Formule somme excel colonne - Guide
- Formule excel moyenne - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule - Télécharger - Études & Formations
2 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
13 févr. 2010 à 07:15
13 févr. 2010 à 07:15
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
15 févr. 2010 à 18:51
15 févr. 2010 à 18:51
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
15 févr. 2010 à 17:54
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