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 :

Est il possible d'appeler une variable tableau dans un autre module


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut Est il possible d'appeler une variable tableau dans un autre module
    Bonjour à tous.
    Je viens de scinder mon code pour alléger le contenu du module et du coup j'ai une erreur générée (erreur d'éxécution 5, argument ou appel de procédure incorrect.

    dans le module principal appelé listing_et_compil ma variable est bien déclarée en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Base 1
    Public tablo()
    dans le module que j'ai nommé tableau j'ai écris cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16") = Application.Transpose(Application.Transpose(listing_et_compil.tablo))
    j'ai bien vu la double transposition je vais corriger.
    je pensais à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = listing_et_compil.tablo
    je confirme que ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = tablo
    fonctionne à l’intérieur du module principal...
    Votre avis docteur?
    Merci par avance de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j'ai créé 3 module (A,B,C) j'ai placé des variable comme suit!
    Code Module A : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public S As String
    Public tablo()
    Code Module B : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public S As Date
    Public tablo()
    Code module C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    A.S = "toto"
    B.S = Now
    A.tablo = Array(A.S, B.S)
    B.tablo = A.tablo
    Range("A1:B1") = B.tablo
    End Sub



    et ça marche!

  3. #3
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut
    ah zut wtf
    effectivement votre exemple fonctionne.

  4. #4
    Invité
    Invité(e)
    Par défaut
    ou implémente tu listing_et_compil.tablo = Array(A.S, B.S) '?????

  5. #5
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut
    pour faire simple du moins je vais essayer.

    L'implémentation de tablo se fait dans l'exemple suivant (remplir la ligne 12 et les colonnes suivantes) code qui se situe dans le module listing_et_compil:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    If zone(i, 5) = "XXXX" Then
            h2 = h2 + 1
            ReDim Preserve tabloa(h2)
     
            tabloa(h2) = Application.Index(zone, i)
            tablo(12, 1) = h2 
            'trouve la valeur min et l'écrit dans le tableau de synthese
            tablo(12, 2) = Application.Min(Application.Index(tabloa, , 3))
            'trouve la valeur max et l'écrit dans le tableau de synthese
            tablo(12, 3) = Application.Max(Application.Index(tabloa, , 3))
            'quantité inf 1000 et l'écrit dans le tableau de synthese
                If Application.Min(Application.Index(tabloa(h2), , 3)) < 1000 Then
                tablo(12, 4) = tablo(12, 4) + 1
                End If
            'quantité 1000/2000 et l'écrit dans le tableau de synthese
                If Application.Min(Application.Index(tabloa(h2), , 3)) >= 1000 And Application.Min(Application.Index(tabloa(h2), , 3)) < 2000 Then
                tablo(12, 5) = tablo(12, 5) + 1
                End If
            'quantité 2000/3000 et l'écrit dans le tableau de synthese
                If Application.Min(Application.Index(tabloa(h2), , 3)) >= 2000 And Application.Min(Application.Index(tabloa(h2), , 3)) < 3000 Then
                tablo(12, 6) = tablo(12, 6) + 1
                End If
            'quantité sup 3000 et l'écrit dans le tableau de synthese
                If Application.Min(Application.Index(tabloa(h2), , 3)) >= 3000 Then
                tablo(12, 7) = tablo(12, 7) + 1
                End If
            'calculs la moyenne  et l'écrit dans le tableau de synthese
            tablo(12, 8) = Application.Average(Application.Index(tabloa, , 3))
            End If
    l'objectif étant de charger la variable tablo de toutes les informations nécessaires afin d'en faire une synthèse (dans une feuille de calcul excel)

    dans le module tableau que je voulais créer
    1/ je génère la feuille Excel qui va bien
    2/ je formate un tableau avec les titres
    3/ je veux remplir les cellules avec les données contenues dans la variable tablo

    quand ce code est dans le module listing_et_compil tout fonctionne les données s'écrivent bien au bon endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = tablo
    si je crée le module tableau en appelant la variable tableau implémentée par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = listing_et_compil.tablo
    là ca ne fonctionne pas...
    Il faut bien que je mette Public tablo() dans le module listing_et_compil et pas ailleurs on est bien d'accord....

    Merci pour tout

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Et si tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = tablo
    Ca donne quoi?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut
    Bonjour,

    Si j'écris ce code ans mon module principal qu'on appel A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5:J16").Value = tablo
    les données s'écrivent très bien.

    si j'appelle dans le module A

    et que je place dans module1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub toto()
    Range("C5:J16").Value = tablo
    End Sub
    rien ne s'écrit

    alors qu'au niveau du module A j'ai bien déclaré en amont:



    Merci à toi.

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour,
    fais un imprime écran de l’explorateur d'objet de ton projet vba!

    dans tes entête de module écris option explicite!

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/02/2009, 23h01
  2. Réponses: 2
    Dernier message: 20/10/2008, 13h38
  3. afficher une variable tableau dans une JSP
    Par johnnywalker dans le forum Struts 1
    Réponses: 11
    Dernier message: 04/03/2007, 22h02
  4. [WinDev] Est-il possible d'executer une application Win32 dans un site ?
    Par ran_hery dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/09/2006, 14h41
  5. Appeler une variable VB dans une requête SQL
    Par Chopper dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/09/2006, 14h27

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