IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Pb de syntaxe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Pb de syntaxe
    Bonjour,

    Je débute et j'ai un soucis pour créer une macro sous VB Excel. Voici ce que je cherche a faire:

    Dans mon premier module, j'aimerai passer deux arguments à la subroutine suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub calcul_deformation_global(debut As Integer, fin As Integer)
    .....
    End Sub
    et mettre dans la subroutine principale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub calcul
    ....
    calcul_deformation_global (1,10)
    ...
    End Sub
    Sauf que la syntaxe de "calcul_deformation_global (1,10)" ne lui plait pas.
    Bien sur, je vais appeller plusieurs fois la subroutine calcul_deformation_global avec des arguments différents.


    Merci à tous pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Est ce que ta sub calcul_deformation_global renvoie bien une valeur (j'imagine que c'est pour être réutilisée derrière.. non ?) Si c'est pas le cas alors il serait intéressant de nous montrer ton code. Si ce n'est pas le cas commence par la.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Merci de t'interessé à mon problème, peaceandloveman01

    Je joins le détail de ma sub ci dessous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub calcul_deformation_global(debut As Integer, fin As Integer)
     
    ReDim mat_inter(7, 6, 6) As Double
    ReDim produit(7, 6) As Double
    Dim i As Integer
     
    For i = debut To fin
     
        produit = produit_matrice6616(grand_mi, F_grand_Xn_extremité, i)
     
        For j = 1 To 6
                Worksheets("Affichage").Cells(j + 7 * i + 3, 82).Value = produit(i, j)
        Next j
     
        For j = 1 To 6
            D_grand_Xn(i, j) = produit(i, j)
        Next j
     
    Next i
     
    End Sub

    Cette Sub ne renvoie rien car j'ai definit D_grand_Xn en public (Public D_grand_Xn(7, 6) As Double).
    Je précise qu'Excel attend derrière "ligne calcul_deformation_global (1,10)" un = quelque chose.
    Le problème est le même si je remplace "Sub calcul_deformation_global(debut As Integer, fin As Integer)" par "Function calcul_deformation_global(debut As Integer, fin As Integer)"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Je rajoute la fonction produit_matrice6616 au cas où...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Function produit_matrice6616(A() As Double, B() As Double, k As Integer) As Double()
    ' Multiplie une matrice 6*6 par une 1*6 (car k est fixé)
     
    Dim i As Integer
    Dim j As Integer
    ReDim produit(7, 6) As Double
     
     
    For i = 1 To 6
        produit(k, i) = 0
        For j = 1 To 6
            produit(k, i) = produit(k, i) + A(k, i, j) * B(k, j)
        Next j
    Next i
    produit_matrice6616 = produit
    End Function

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    calcul_deformation_global (1,10)" un = quelque chose
    Si tu utilise ça comme instruction alors c'est normal que ça ne marche pas. Tu ne peut pas dire à une fonction qui calcule d'être égal à qqch. Sous vba, lorsque tu veux qu'une variable soit égale à quelque chose c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     variable = methode_de_calcul(i,j)
    Et non l'inverse comme il semblerait que tu fais...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Je me suis mal fait comprendre.
    Quand je valide la ligne "calcul_deformation_global (1,10)", Excel ouvre une fenetre me disant:
    "Erreur de compilation
    Attendu : ="

    En fait, je suis d'accord avec toi, cette sub fait un calcul et ne peut pas être égale à quelque chose.

    Pour info, si:
    - je remplace en dur dans cette sub début par 1 et fin par 10
    - et que j'écris calcul_deformation_global sans rien derrière dans la sub principale
    ca marche.
    Dès que j'essaie de passer ces 2 paramètres (début et fin) cela ne plus!
    Que faire?

Discussions similaires

  1. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo