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

VBA error 13..



  1. #1
    liv25

    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
    cherbe

    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".
    Dernière modification par cherbe ; 20/11/2016 à 11h46.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  3. #3
    liv25

    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
    cherbe

    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
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

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

    Re : VBA error 13..

    non ça ne marche tjrs pas..

  7. #6
    LeMulet

    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
    liv25

    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
    cherbe

    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)
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  10. #9
    liv25

    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
    cherbe

    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.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  12. #11
    liv25

    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 alovesupreme 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