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 :

[E-07] Problème affectation cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Par défaut [E-07] Problème affectation cellule
    Bonjour

    Je ne comprends pas trop se qu'il se passe et comment faire fonctionner mon problème

    Voici mon programme :

    etape 1 : je crée mon menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Dim newMenu As CommandBarPopup
        Set MonMenuBar = CommandBars.ActiveMenuBar
        Set newMenu = MonMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
        newMenu.Caption = TitreMenu
     
        With newMenu
            Call MenuOption(newMenu, "Test", "MtestMouv")
        End With
    End Sub
    fonction MenuOpition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub MenuOption(p_MenuItem As Object, p_Libelle As String, Optional p_fonction As String, Optional p_parametres As String, Optional p_separateur As Boolean = False)
        Dim o_SubMenuItem As CommandBarButton
        Set o_SubMenuItem = p_MenuItem.Controls.Add(Type:=msoControlButton)
     
        With o_SubMenuItem
            .Caption = p_Libelle
            .BeginGroup = p_separateur
            .OnAction = p_fonction
            If p_parametres <> "" Then
                .Parameter = p_parametres
            End If
        End With
    End Sub
    fonction MTestMouv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub MTestMouv()
        tableauMouv
    End Sub
    fonction TableauMouv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function tableauMouv() As String
        ActiveSheet.Cells(1, 1).Value = "DATE"
        ActiveSheet.Cells(1, 2).Value = "DEBIT"
        ActiveSheet.Cells(1, 3).Value = "CREDIT"
    End Function
    1) Si je clique sur mon menu sur "Test", ça lance la fonction MTestMouv qui lance la fonction tableauMouv et le resultat est que la cellule A1="Date", A2="DEBIT" et A3 = "CREDIT"

    2) je selectionne une cellule et dans le fx je tape = tableauMouv(), j'obtien un #valeur dans ma cellule que j'ai séléctionné. et le code plante à la ligne rouge ci-dessus. Je pense que cela est du a .Value

    je ne comprend pas trop le comportement et comment je peux résoudre le problème.

    Pour le comportement :
    pour le n°1 : je ne suis pas dans la cellule donc je peux affecter des cellules
    pour le n°2 : je suis a l'intérieur d'une cellule et je peux juste affecté la cellule

    cordialement law56100

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Une fonction utilisée dans une feuille de calcul ne peut pas modifier la valeur des cellules. Elle peut juste renvoyer une valeur...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Par défaut
    Une fonction utilisée dans une feuille de calcul ne peut pas modifier la valeur des cellules. Elle peut juste renvoyer une valeur...
    oui cela j'avais compris. Mais il n'est pas possible de faire cela

    dans la cellule A1 j'ai fx=MaFonction()
    MaFonction renvoie une valeur a A1 et remplit
    A2 ="toto", B2= "TITI, C2="TATA"

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par law56100 Voir le message
    oui cela j'avais compris. Mais il n'est pas possible de faire cela

    dans la cellule A1 j'ai fx=MaFonction()
    MaFonction renvoie une valeur a A1 et remplit
    A2 ="toto", B2= "TITI, C2="TATA"
    Ben... si tu avais compris cela, tu ne poserais pas la question...

    Tu ne peux pas utiliser dans une feuille une fonction qui modifie la valeur d'une cellule... Donc, une fonction utilisée dans une formule ne peut pas contenir du code tel que
    ... Je ne vois pas trop comment le formuler autrement pour que tu comprennes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Par défaut
    Si j'ai compris que c'est impossible mais je m'etais dis qu'il y aurai peut être une astuce pour contourner le problème.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Non, car si on pouvait faire cela, on risquerait de créer des références circulaires.

    Examine ce qui suit:

    En A1, une formule telle que celle-ci
    et une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function MaFonction(...)
        range("B1")= 14
        mafonction = 7
    end function
    Excel ne s'en sortirait pas...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. problème affectation d'un tableau de char
    Par midotek dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 07/12/2008, 22h50
  2. Problème de cellule
    Par Lavip dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/06/2007, 14h36
  3. Problème couleur cellule MSFlexgrid
    Par dany80 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/05/2007, 01h13
  4. [HTML] [CSS ?] Tableau : problème avec cellules
    Par Epistoliere dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 07/08/2006, 17h04
  5. [VBA-A]Problème de cellule Excel vide
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 05/05/2006, 14h12

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