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 :

Mémoriser valeur tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut Mémoriser valeur tableau
    Bonjour à tous,

    Je me permets de poster car je rencontre un problème dans mon code VBA.
    Je voudrais créer une matrice via un "sub", qui prend ses valeurs dans une feuille excel.
    Par la suite, je voudrais faire appel aux valeurs de cette matrice dans d'autres procédure ("sub", "function"), mais malheureusement Excel supprime la matrice en entrant dans une autre procédure.

    Pour exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub def()
        Dim Plage As Range
        ReDim Tableau(1 To 100, 1 To 2)
     
        Set Plage = Worksheets("mafeuille").Range("B3:C123")
     
          Tableau = Plage.Value
     End Sub
     
    Sub ess()
    s = Tableau(3, 2)
    End Sub
    Biensur, dans la deuxième Sub, j'ai une erreur...

    Auriez-vous une idée pour résouder mon problème ?

    Merci d'avance,

    TheRealMike

  2. #2
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    tu déclare ta variable en public (avant les déclarations de fonctions) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim tableau As Variant
     
    Sub def()
        Dim Plage As Range
        ReDim Tableau(1 To 100, 1 To 2)
        Set Plage = Worksheets("mafeuille").Range("B3:C123")
     
        Tableau = Plage.Value
     End Sub
     
    Sub ess()
    s = Tableau(3, 2)
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour à vous deux,

    Et si ta plage risque de changer, tu peux dimensionner ton tableau dynamiquement par rapport à cette dernière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public tableau()
     
    Sub def()
     
        Dim Plage As Range
     
        Set Plage = Worksheets("mafeuille").Range("B3:C123")
     
        ReDim tableau(1 To Plage.Rows.Count, 1 To Plage.Columns.Count)
     
        tableau = Plage.Value
     
     End Sub
    Hervé.

Discussions similaires

  1. affecter valeurs tableau
    Par space_56 dans le forum Calcul scientifique
    Réponses: 14
    Dernier message: 14/03/2011, 20h39
  2. [MySQL] Regrouper plusieurs cellules de même valeur ? [tableau php/mysql]
    Par bond70 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2010, 15h44
  3. Récupérer valeur tableau crée par vba
    Par Pago dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/05/2010, 22h10
  4. Problème valeur tableau
    Par sepnar dans le forum C
    Réponses: 5
    Dernier message: 15/02/2010, 11h20
  5. Réponses: 7
    Dernier message: 03/05/2008, 00h40

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