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 traitement de plage nommées qui ne s execute pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut fonction traitement de plage nommées qui ne s execute pas
    Bonjour,
    J'ai codé une fonction dont l'objectif est de recuperer les references de plages nommées pour appliquer un calcul sur une colonne "parallele".
    explication : J'ai mon calcul en colonne N via des plages nommées et je voudrais pouvoir l'obtenir sur la colonne M, comme si je l'avais glissé d'une colonne à l'autre.
    Pour obtenir le résultat j'ai donc utilisé en colonne M la fonction ci-dessous mais je n'arrive pas à l'executer. (j'ai pourtant ajouté l'instruction volatile pour forcer le calcul)
    Je lance la fonction dans la cellule M7 avec comme parametre la range N7:
    =change_cellule_nommee(N7)
    N7 contient ce code (une liste de plages nommées) :
    =MiddleWare+DVB+STB_Bdx+TV_Bdx+Bouquet_Bdx+Spare_Bdx+Accessoires_Bdx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function change_cellule_nommee(la_sequence As Range) As String
        Application.Volatile
        Dim tab_range() As String
        Dim concat_cellule_nommee As String
        concat_cellule_nommee = ""
        With ActiveSheet
        tab_range = Split(la_sequence.Text, "+")
        For i = 0 To UBound(tab_range) - 1
            concat_cellule_nommee = concat_cellule_nommee & .Range  (tab_range(i)).Formula
        Next i
       change_cellule_nommee = concat_cellule_nommee
        End With
    End Function
    Merci d'avance de vos idées.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour,

    Qu'est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox la_sequence.Text
    te retourne ?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Le Messagebox ne s'execute pas, car la fonction ne s'execute pas.
    Y aurait il trop de fonctions déjà présente dans cette application Excel ?
    A noter que la complétion fonctionne, c'est à dire que "=change_cellule_nommee" est reconnue par Excel comme une fonction.
    D'avance merci de vos idées.

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Bonjour,
    Pour moi "=MiddleWare" (donc Tab_Range(0)) n'est pas un range, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(tab_range(i)).Formula
    ne peut pas fonctionner.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Attention Tab_Range(0) est une String et non un Range, je viens d'essayer par Sub,
    ca fonctionne correctement. (c'est le passage en mode fonction qui ne fonctionne pas.)
    Voilà le code en mode sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call change_cellule_nommee(Worksheets("Bordereau de prix").Range("N7").Formula, "M")
    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 change_cellule_nommee(la_sequence As String, la_colonne As String)
        Dim tab_range() As String
        Dim concat_cellule_nommee As String
        concat_cellule_nommee = ""
        With ActiveSheet
        tab_range = Split(la_sequence, "+")
        For i = 0 To UBound(tab_range) - 1
            concat_cellule_nommee = concat_cellule_nommee & .Range(tab_range(i)).Formula
        Next i
        concat_cellule_nommee = Replace(concat_cellule_nommee, "=", "+")
         concat_cellule_nommee = Replace(concat_cellule_nommee, "N", la_colonne)
       Worksheets("Bordereau de prix").Range(la_colonne & "7").Formula = "=0" & concat_cellule_nommee
        End With
    End Sub

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    par pitié, arrêtez le carnage ! Comme indiqué dans l'aide d'Excel,
    une fonction personnalisée ne peut modifier que la cellule appelante et rien d'autre !

    Donc la ligne n°12 est systématiquement zappée …

    Voir Les fonctions personnelles dans Excel

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Par défaut
    Est ce que tu nous parles du code de la Sub ou de la fonction. Parce que si c'est la Sub qui est incriminée j'ai envie de dire " par pitié lisez ce qui est écrit"
    Sinon c'est le with Activesheet (en ligne 12 de la fonction) qui provoque le probleme ?

Discussions similaires

  1. Jquery fonction qui ne s'execute pas sous IE6 IE7
    Par boutmos dans le forum jQuery
    Réponses: 2
    Dernier message: 06/10/2009, 14h54
  2. fonction javascript qui ne s'execute pas
    Par Neferet dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/01/2009, 17h08
  3. Code dans la fonction GUI_Opening qui ne s'execute pas
    Par AsmaHaj dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 16/05/2007, 19h31
  4. Fonction qui ne s'execute pas
    Par RegiO dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/07/2006, 09h45
  5. fonction qui ne s'execute pas mais qui ne retourne pas d'erreur
    Par duplo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/06/2006, 21h43

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