VBA error 13..
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

VBA error 13..



  1. #1
    invite9ae9de15

    VBA error 13..


    ------

    Bonsoir,

    je bloque sur une erreur depuis quelques minutes, et franchement je sèche..
    Je veux faire le produit de deux matrices voici le module:


    Code:
    Global B(10, 10) As Double
    
    
    Global C(10, 10) As Double
    
    
    Sub produit(A, B, C)
    nla = A(1, 0)
    ncb = B(0, 1)
    nca = A(0, 1)
    For i = 1 To nla
       For j = 1 To ncb
       
          s = 0
          For k = 1 To nca
          s = s + A(i, k) * B(k, j)
          C(i, j) = s
          Next
        Next
    Next
    C(1, 0) = nla
    C(0, 1) = ncb
    End Sub
    
    
    
    
    
    Sub lecture2(A)
    
    nl = UserForm1.TextBox3.Text
    nc = UserForm1.TextBox4.Text
    
    For i = 1 To nl
       For j = 1 To nc
         A(i, j) = UserForm1.Spreadsheet2.Cells(i, j)   << erreur ici d'après la machine............
       Next
    Next
    
    A(1, 0) = nl
    A(0, 1) = nc
    
    End Sub
    
    
    Sub lecture1(A)
    nl = UserForm1.TextBox1.Text
    nc = UserForm1.TextBox2.Text
    
    For i = 1 To nl
       For j = 1 To nc
         A(i, j) = UserForm1.Spreadsheet1.Cells(i, j)
       Next
    Next
    
    A(1, 0) = nl
    A(0, 1) = nc
    
    
    End Sub
    
    
    Sub affiche3(A)
     
    efface3
    
    nl = A(1, 0)
    nc = A(0, 1)
    For i = 1 To nl
       For j = 1 To nc
         UserForm1.Spreadsheet3.Cells(i, j) = A(i, j)
       Next
    Next
    UserForm1.TextBox5.Text = nl
    UserForm1.TextBox6.Text = nc
    
    
    
    End Sub
    
    et la commande
    
    Private Sub CommandButton8_Click()
    lecture1 A
    lecture2 B
    produit (A), (B), C
    affiche3 (C)
    
    End Sub

    si quelqu'un pouvait m'aider...
    merci d'avance

    -----
    Dernière modification par JPL ; 20/11/2016 à 14h57. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    invite948b37db

    Re : VBA error 13..

    Bonjour
    quand tu mets du code ici, utilise la balise CODE symbolisée par le caractère dièse (#) dans la barre d'outils et surtout, indente le code sinon c'est imbuvable.
    VBA est hyper tolérant avec les variables à valeur unique et inversement pour les arrays (tableaux). Dans ton code, je ne vois pas de déclaration du tableau A() donc "ça va pas l'faire" !
    Si tu ne connais pas à priori les dimensions du tableau, il y a une technique très particulière pour le redimensionner à chaque "remplissage".

  3. #3
    invite9ae9de15

    Re : VBA error 13..

    bonjour merci de votre réponse
    la déclaration de A c'est le
    Global A(10,10) as double?

    si en fait ça j'ai oublié de le c/c mais je l'avais mis

    malgré cela j'ai tjrs l'erreur..

  4. #4
    invite948b37db

    Re : VBA error 13..

    Citation Envoyé par liv25 Voir le message
    si en fait ça j'ai oublié de le c/c mais je l'avais mis
    malgré cela j'ai tjrs l'erreur..
    Sous réserve que UserForm1.Spreadsheet2.Cells soit la bonne syntaxe, essaie :
    A(i, j) = UserForm1.Spreadsheet2.Cells(i , j).Value

  5. A voir en vidéo sur Futura
  6. #5
    invite9ae9de15

    Re : VBA error 13..

    non ça ne marche tjrs pas..

  7. #6
    invite6486d7bd

    Re : VBA error 13..

    C'est un peu loin pour moi le VB mais de mémoire :
    La dimension de A n'est pas précisée dans la procédure.
    Sinon, mettre var A dans la déclaration de la procédure, Sub lecture2(var A) ce qui permet de passer A par valeur.

  8. #7
    invite9ae9de15

    Re : VBA error 13..

    après avoir rajouté les var jme retrouve avec une autre erreur 13 dans
    Code:
    Sub produit(A, B, C)
    nla = A(1, 0)
    ncb = B(0, 1) 
    nca = A(0, 1)
    For i = 1 To nla
       For j = 1 To ncb
       
          s = 0
          For k = 1 To nca
          s = s + A(i, k) * B(k, j)
          C(i, j) = s
          Next
        Next
    Next
    C(1, 0) = nla
    C(0, 1) = ncb
    End Sub

  9. #8
    invite948b37db

    Re : VBA error 13..

    Citation Envoyé par liv25 Voir le message
    non ça ne marche tjrs pas..
    Déjà vérifier que A() est instantié et n'est pas vide :
    Code:
    MsgBox Application.CountA(A)

  10. #9
    invite9ae9de15

    Re : VBA error 13..

    En fait, c'était simplement car je n'avais pas déclaré les variables tout en haut du module.. très étrange mais bon au moins mtn ça marche

  11. #10
    invite948b37db

    Re : VBA error 13..

    Citation Envoyé par liv25 Voir le message
    En fait, c'était simplement car je n'avais pas déclaré les variables tout en haut du module.. très étrange mais bon au moins mtn ça marche
    Dans ton message #3, tu dis pourtant l'avoir fait ?
    Non ce n'est pas étrange. La déclaration des tableaux est indispensable.

  12. #11
    invite9ae9de15

    Re : VBA error 13..

    y avait déjà écrit du code avant..
    du coup je l'avais mis mais pas en haut..
    quand je l'ai mis en haut ça a marché

Discussions similaires

  1. CCS error
    Par invite774e931e dans le forum Électronique
    Réponses: 12
    Dernier message: 13/04/2010, 22h38
  2. cpu fan error
    Par invite172ad81e dans le forum Matériel - Hardware
    Réponses: 9
    Dernier message: 13/05/2009, 17h39
  3. error 404
    Par invite69d38f86 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 21/07/2008, 12h50
  4. [Divers] error cle usb
    Par invite83d28800 dans le forum Dépannage
    Réponses: 13
    Dernier message: 09/04/2008, 19h01
  5. cled error srv #001
    Par invite0a51f21b dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 04/10/2005, 15h27