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 :

Fonction Excel Ecrivant Dans Plusieurs Cellules


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Fonction Excel Ecrivant Dans Plusieurs Cellules
    Peut on dans une fonction excel inclure une instruction d'affectation de valeur à une cellule différente de celle où on fait appel à la fonction.
    Voici un essai tout simple qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function cumpol()
    cumpol = 8
    Cells(2, 2) = 145
    End Function

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Non, mais tu peux procéder autrement.
    Si tu sélectionnes manuellement ta cellule, tu adaptes ce code et tu le places dans la feuille de code de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
         If Target.Column = 5 And Target.Row = 5 Then _
             Target.Offset(0, 2) = "Coucou !"
    End Sub
    Si tu fais ça par soft, tu utilises ce même code au même endroit et tu mets le code suivant dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Selectionner()
    ThisWorkbook.Worksheets("Feuil1").Select
    Cells(5, 5).Select
    End Sub
    Mais dans ce cas, je ne vois pas l'intérêt...
    Tout ça pour dire qu'on ne peut pas affecter une valeur à une autre cellule par une fonction appelée dans une cellule.
    Je crois néamoins qu'AlainTech avait proposé quelque chose (?)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut le calcul réalisé sur cellule doit s'impacter sur une série de cellules
    Bonjour,

    Est tu sûr que c'est sans espoir ...

    A titre d'info:
    Quand je passe en mode débogage, le fonction se plante sur l'instruction Cells(2, 2) = 145 , mais quand je continue à executer la fonction pas à pas l'instruction s'execute bien ....

    Le problème que je dois résoudre nécessite que le calcul réalisé sur une cellule de la feuille s'impacte sur une série de cellules.
    Ce calcul se fait à partir de la lecture d'une feuille annexe de plus de 20 000 lignes.
    Si je n'arrive pas à résoudre le problème, il faudra que j'associe une fonction à chaque cellule, ce qui augmentera terriblement le temps de calcul !

    Merci de ton aide,
    Denis

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai dit AlainTech mais c'est peut-être bbil qui avair proposé quelque chose. Malheureusement Je ne me souviens pas de la formulation de la question pour la retrouver sur le forum
    Mais je crois bien qu'il y avait effectivement une solution.
    Ça ne t'avance pas beaucoup mais ça évite ainsi de t'affecter trop le moral
    Désolé, je n'ai pas pu m'en empêcher.

    Je vais voir si je trouve ça (sans promesse inconsidérée...)

    Edit
    Désolé mais je n'ai pas retrouvé

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci de tes efforts.
    Denis

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    ta fonction fonctionne parfaitement, mais comme elle ne rime a rien, le code ne s'en sort pas. tu ne lui demande jamais un résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function cumpol(variabledecumpol)
    cumpol = variabledecumpol * 2
    Cells(2, 2) = 145
    End Function
     
    Sub suite()
    MsgBox cumpol(5)
    End Sub
    et dans ce cas, tu constateras que la cellule est bien renseignée par le code

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Merci alsimbad, ça m'énervait de ne pas trouver et j'arrive après la bagarre
    C'était ici et c'est moi qui avait donné la solution Mais ça n'avait rien à voir

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Dans le module ThisWorkbook, tu mets le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private chg As Boolean
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If chg = False Then
            If Target.Formula Like "=mafonction(*)" Then
                chg = True
                Sh.Cells(2, 2) = 145 'etc...
                chg = False
            End If
        End If
    End Sub
    Dans un module standard, tu mets une fonction bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function mafonction(valeur)
        mafonction = valeur
    End Function
    Ensuite dans n'importe quelle cellule sauf peut-etre celles affectées par la macro, tu peux mettre la formule : Edit : Dans le module ThisWorkbook tu peux également mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If Target.Formula Like "=mafonction(*)" Then
            Application.EnableEvents = False
            Sh.Cells(2, 2) = 145 'etc...
            Application.EnableEvents = True
        End If
    End Sub

Discussions similaires

  1. [Toutes versions] comment récupérer via VBA les arguments d’une fonction excel contenue dans une cellule ?
    Par popaul88 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/08/2014, 18h27
  2. Réponses: 2
    Dernier message: 22/05/2014, 11h10
  3. Réponses: 0
    Dernier message: 13/03/2014, 14h38
  4. [XL-2007] Ecrire dans plusieurs cellules avec une fonction
    Par seblenor dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/04/2013, 22h00
  5. [XL-2007] Fonction personnalisée - Retourner le résultat dans plusieurs cellules
    Par rquilliet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/10/2011, 18h28

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