Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2007, 04h21   #1
Invité de passage
 
Inscription : mars 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 11
Points : 3
Points : 3
Par défaut Matrice en VBA

Bonjour,

Je suis nouveau en VBA et j'ai pas réussi à à résoudre un petit problème.
Est ce que quelqu'un peut m'aider pour résoudre le problème suivant:
Écrire un programme en VBA qui génère une feuille comprenant deux matrices A(3,3) et B(3,2), de nombres aléatoires entre 1 et 10 ainsi que leur produit. Les matrices seront générées à partir d'informations de contrôle sur la feuille principale.

Merci d'avance,
Marco
es.marco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 08h29   #2
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
Citation:
Envoyé par es.marco
(...) de nombres aléatoires entre 1 et 10 ainsi que leur produit. Les matrices seront générées à partir d'informations de contrôle sur la feuille principale.
??? Aléatoires mais générés à partir d'information de contrôle ???
-> C'est d'une logique paradoxale...
??? nombres aléatoires entre 1 et 10 ainsi que leur produit ???
-> produit entre eux? produit de combien de nombres entre eux? produit des 1 à 10 avec les produits des produits?

En fait, je crois que j'ai pas bien saisi le problème....

Néanmoins, le code suivant te donne un nombre aléatoire de 1 à 10 :
Code :
1
2
Randomize
MsgBox Fix(Rnd() * 10) + 1
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 13h49   #3
Membre du Club
 
Inscription : janvier 2006
Messages : 103
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 103
Points : 63
Points : 63
Envoyer un message via MSN à tangjuncn
je pense que tu peux faire qch comme:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
dim mat1 as variant
dim i, j as integer
redim mat1(1 to 3 ,1 to 3)
for i = 1 to 3
for j = 1 to 3
mat1(i,j) = ce que l'autre personne a donné(machin random)
next j
next i
 
range("A1:C3").value = mat1
tangjuncn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 04h21   #4
Invité de passage
 
Inscription : mars 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 11
Points : 3
Points : 3
Merci pour vos réponses.

Je pense que j'ai pas bien expliqué mon problème.

Je veux construire 2 matrices sur excel. après monter un petit programme en VBA qui génère une feuille comprenant deux matrices de nombres aléatoires ainsi que leur produit:
ca veut matrice A de nombre aléatoire
matrice B de nombre aléatoire
matrcice C = A*B

Merci d'avance,
marco
es.marco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 10h34   #5
Membre éclairé
 
Inscription : octobre 2006
Messages : 390
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 390
Points : 396
Points : 396
Je reprends ce que t'as écrit tangjuncn en y rajoutant la matrice 3x2:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub tes()
    Dim mat1 As Variant, mat2 As Variant
    ReDim mat1(1 To 3, 1 To 3)
    ReDim mat2(1 To 3, 1 To 2)
    For i = 1 To 3
        For j = 1 To 3
            Randomize
            mat1(i, j) = Fix(Rnd * 10) + 1
        Next j
    Next i
    Range("A1:C3").Value = mat1
    For i = 1 To 3
        For j = 1 To 2
            Randomize
            mat2(i, j) = Fix(Rnd * 10) + 1
        Next j
    Next i
    Range("E1:F3").Value = mat2
    Range("H1:I3").Value = ProduitMatriciel(mat1, mat2)
    Erase mat1: Erase mat2
End Sub
Plus la fonction de ProduitMatriciel, que tu aurais pu écrire toi même, puisque c'est que des maths :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function ProduitMatriciel(mLeft As Variant, mRight As Variant) As Variant
    On Error GoTo errHandler
    If UBound(mLeft, 2) <> UBound(mRight, 1) Then GoTo errHandler
    Dim mat As Variant, LineSum
    ReDim mat(1 To UBound(mLeft, 1), 1 To UBound(mRight, 2))
    For j = 1 To UBound(mRight, 2)
        For i = 1 To UBound(mLeft, 1)
            LineSum = 0
            For k = 1 To UBound(mRight, 1)
                LineSum = LineSum + mLeft(i, k) * mRight(k, j)
            Next k
            mat(i, j) = LineSum
        Next i
    Next j
    ProduitMatriciel = mat
    Erase mat
    Exit Function
errHandler:
    ProduitMatriciel = Null
End Function
dadavyvy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 20h17   #6
Invité de passage
 
Inscription : mars 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 11
Points : 3
Points : 3
Merci beaucoup.

je vais essayer ça et je vous donnerai des nouvelles.

Merci encore,
Marco
es.marco est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h43.


 
 
 
 
Partenaires

Hébergement Web