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 :

ByRef, affectation de variables..


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut ByRef, affectation de variables..
    Bonjour tout le monde,

    Après lecture du lien ci-dessous (et je dois l'avouer, peu de compréhension de ce qui y est décrit ), je me décide à poster pour vous expliquer mon problème.

    http://silkyroad.developpez.com/VBA/LesVariables/#LIV

    J'ai créé une bête fonction dont l'objectif est de renvoyer le numéro de la dernière ligne non vide d'un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function derniereLigneOccupee(cel As range)
        derniereLigneOccupee = cel.End(xlUp).Row
    End Function
    Dans une procédure, je trouve la valeur de cette dernière ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dlo = derniereLigneOccupee(range("B10"))
    et je me sers du résultat dans une autre fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calculSommeDistanceModePose(dlo)
    dont le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function calculSommeDistanceModePose(nomb As Integer)
        calculSommeDistanceModePose = 0
    For i = 1 To nomb
     
        calculSommeDistanceModePose = calculSommeDistanceModePose + range("B4").Offset(i - 1 - 4, 0).Value * range("d4").Offset(i - 1 - 4, 0).Value
     
    Next i
     
    End Function
    L'erreur renvoyée par Excel lors de l'exécution de la macro est le classique "type d'argument byref incompatible"..
    Je ne trouve pas d'où provient l'erreur, d'autant plus que l'utilisation du résultat "dlo" ne pose aucun souci quand je l'utilise avec une autre fonction..

    Merci d'avance de vos explications

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Comment est définie la variable "dlo" ?

    A tout hasard, modifie les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function derniereLigneOccupee(cel As range) as Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function calculSommeDistanceModePose(nomb As Long) as Long

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Merci de ta réponse !

    Avant calcul de dlo, j'ai défini dlo as long.
    Avec les modifications que tu suggères, l'erreur se transforme en "400", ce qui me laisse penser à un mauvais appel de fonction. Tout semble bien orthographié cependant..

    Edit : Si j'enlève le , on retombe sur l'erreur "byref", localisée à l'appel de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calculSommeDistanceModePose(dlo)

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    L'erreur se produit sur quelle ligne ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Cf poste édité ci-dessus, à l'appel de la fonction calculSommeDistanceModePose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calculSommeDistanceModePose(dlo)

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Rectifie la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        calculSommeDistanceModePose = calculSommeDistanceModePose + Range("B4").Offset(i - 1 - 4, 0).Value * Range("d4").Offset(i - 1 - 4, 0).Value
    En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B4").Offset(i - 1 - 4, 0)
    renvoie à la ligne 0 pour i=1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'affectation de variable
    Par bob33 dans le forum C
    Réponses: 3
    Dernier message: 04/11/2005, 18h01
  2. Affecter une variable javascript à une variable php
    Par gwendy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 21h58
  3. affecter une variable de type stringstream
    Par sorari dans le forum SL & STL
    Réponses: 3
    Dernier message: 24/03/2005, 12h14
  4. [PS] affectation de variable
    Par madmortal dans le forum SQL
    Réponses: 2
    Dernier message: 01/09/2004, 14h17
  5. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 22h32

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