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 :

[VBA]Affectation d'une valeur à une cellule par une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [VBA]Affectation d'une valeur à une cellule par une fonction
    Bonjour!
    Je veux affecter une valeur à une cellule de feuille EXCEL par une fonction VBA retournant une autre valeur et recevant en paramètre la cellule en question. La fonction retourne #VALEUR. L'exécution en mode pas-à-pas permet de situer le plantage au niveau de l'instruction d'affectation. Toutefois, aucun message d'erreur n'est affiché. Je soupçonne un problème de transtypage que je ne sais résoudre.
    Veuillez m'aider à déboguer cette fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function inputval(zonecell As Range) As Integer
     
         zonecell.Value = 123
     
         inputval = 1
     
      End Function
    Merci![img][/img]

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu nous décrit une fonction circulaire? c'est pas possible sous excel Non ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci, bbil

    Je ne veux pas écrire une fonction récursive, mais une fonction qui affecte une valeur à n'importe quelle cellule passée en paramètre.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par lallougri
    Merci, bbil

    Je ne veux pas écrire une fonction récursive, mais une fonction qui affecte une valeur à n'importe quelle cellule passée en paramètre.
    Une fonction retourne une valeur... ? si tu n'as pas de valeur à retourner utilise une procédure...

    sinon ta fonction marche mais tu dois mal l'appeller ...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ret = inPutval(range("A3"))

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Ceci sera certainement mon dernier message sur ce forum.
    Tu peux aussi utiliser une constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Option Explicit
    Public Const inputval = 123
     
    Sub test()
    Cells(1, 1) = inputval
    Sheets(2).Cells(1, 2) = inputval
    End Sub
    jpleroisse

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je ne comprend pas bien comment tu veux utiliser ta fonction (ou procédure, car je suis plutôt d'accord avec bbil).
    Est-ce que tu auras un bouton sur ta feuille Excel, qui mettra la valeur que tu veux dans la cellule courante?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Une fonction retourne une valeur... ? si tu n'as pas de valeur à retourner utilise une procédure...


    une fonction ne retourne pas nécessairement une valeur

    function ditbonjouraumonsieur() as currency
    msgbox("bonjour monsieur")
    end function

    est parfaitement valide en vba ; elle retourne simplement zéro faute d'initialisation
    essayons maintenant
    [/code]
    Function inputval(zonecell As String) As Integer
    Workbooks("classeur1").Sheets("feuil1").Range("A1").Value = 123

    inputval = 1

    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     
    cela fonctionne 
    moralité il faut passer à zone cell un range valide ou une string
    Elle est pas belle la vie ?

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par random
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cela fonctionne 
    moralité il faut passer à zone cell un range valide ou une string
    tiens ce code foncitonne aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inputVal "C'est vrai que ça marche mais mais cela ne sert à rien d'utiliser des paramétres, si l'on ne s'en sert pas dans la fonction ou d'utiliser une fonciton si l'on à rien à retourner ... "
    [Edit] ...
    je crois qu'on devrai attendre lallougri repasse pour nous dire ce qu'il ve faire...

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    je n'ai pas dit que cela servait
    j'ai simplement dit que vba l'acceptait

    quand à l'exemple il était destiné à aider lallougri à comprendre
    nous allons le modifier pour te complaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function inputval(classeur As String, feuille As String, cellule As String) As Boolean
       On Error GoTo cko
       Workbooks(classeur).Sheets(feuille).Range(cellule).Value = 123
       inputval = True
       Exit Function
    cko:
      inputval = False
      End Function
    Elle est pas belle la vie ?

Discussions similaires

  1. [XL-2007] InputBox pour sélectionner cellule ou une plage de cellules dans une feuille.
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2014, 20h01
  2. [XL-2007] Effacer une plage de cellule dont une valeur est nulle
    Par VIPNO dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/02/2012, 08h49
  3. affecter une valeur à un id par une fonction
    Par schwarzy2 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/03/2008, 10h51
  4. affecter une valeur de cellule à une variable
    Par mlrdeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/10/2007, 11h29

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