Utiliser un même tableau entre 2 macros

Bonjour,

je me permet de vous solliciter sur la possibilité de récupérer un tableau alimenté dans une macro 2 et le lire dans une macro1

Pour cela, j'ai créé 2 macros

La macro 1 envoie une variable à la macro 2 via l'instruction call Macro2(variable)

Dans cette macro 2, sur la base de cette variable, je viens alimenter mon tableau "tab".

Ma question est la suivante, comment récupérer les valeurs de mon tableau "tab" dans la macro1 ?

D'avance merci

Bonjour Manthiflaure et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

En ce qui concerne votre problématique, cela ressemble fort à un appel de fonction et non de procédure
Ce qui donnerait quelque chose comme

Sub Macro1
 MonTab = Fonction2(MaVaiable)
End Sub

Function Fonction2(MaVariable) as Variant
' Définir le tableau ICI
End Function

Merci de votre participation

Cordialement

Bonjour Bruno M45

Merci pour ce retour

J'ai bien créé la fonction comme suit et qui me retourne les bonnes données que je vérifie au sein de la fonction

Function FiltreReferentielPF(Base) As Variant

' je ne détaille pas le code mais je cible sur la constitution du tableau en question Dim j1 As Integer Dim TableauBase() As String ReDim TableauBase(Nb_Ligne, 2) For j1 = 0 To Nb_Ligne - 1 MsgBox "N° Ligne " & TableauLignesFiltrees(j1) & " pour valeur J1 = " & j1
TableauBase(j1, 0) = Cells(TableauLignesFiltrees(j1), 2).Value TableauBase(j1, 1) = Cells(TableauLignesFiltrees(j1), 8).Value Next j1

End Function

'---------------------------------------------------------------------------------------------

Ensuite dans ma procédure, je viens faire le lien avec la fonction "FiltreReferentielPF" comme suit .

Sub InitialisationFeuillePFDynamique()' ' ALIMENTER LE REFERENTIEL BASE 1 Dim TableauBase() As String TableauBase() = FiltreReferentielPF(1)

Ma Syntaxe pour récupérer mes données du tableau " TableauBase" ne semble pas être juste.

L'objectif étant de lire les données de TableauBase dans la procédure InitialisationFeuillePFDynamique()

Cordialement

Re,

pardon, je n'ai pas utilisé la bonne mise en forme

Avec la mise en forme code, ça donne cela

   Function FiltreReferentielPF(Base) As Variant

    Dim j1 As Integer
    Dim TableauBase() As String

    ReDim TableauBase(Nb_Ligne, 2)

    For j1 = 0 To Nb_Ligne - 1

    MsgBox "N° Ligne " & TableauLignesFiltrees(j1) & " pour valeur J1 = " & j1

    TableauBase(j1, 0) = Cells(TableauLignesFiltrees(j1), 2).Value
    TableauBase(j1, 1) = Cells(TableauLignesFiltrees(j1), 8).Value

    Next j1

End Function
Sub InitialisationFeuillePFDynamique()
'
    ' ALIMENTER LE REFERENTIEL BASE 1

    Dim TableauBase() As String
    TableauBase() = FiltreReferentielPF(1)

Cdlt

Bonjour,

une fonction doit avoir une ligne de code pour indiquer quelle valeur elle doit retourner, elle manque.

Ajoute en fin de fonction :
FiltreReferentielPF=TableauBase

eric

Bonjour Eriiic,

merci beaucoup pour ce retour.

Cela fonctionne correctement modulo un ajustement de type dans la déclaration initiale de mon tableau dans la procédure Sub InitialisationFeuillePFDynamique()

C'est top

Récemment inscrit sur ce forum, je souhaiterai connaitre la bonne pratique pour mettre en avant un cas un peu identique de passage d'une variable initialisée et calculée dans la fonction Function FiltreReferentielPF(Base) et que je souhaite récupérer dans la procédure Sub InitialisationFeuillePFDynamique() qui est la variable Nb_Ligne présente dans la fonction FiltreReferentielPF(Base)

   For j1 = 0 To Nb_Ligne - 1

Création d'un nouveau sujet ou bien continuité dans le fils de conversation de ce sujet pour des aspects de cohérence ?

D'avance merci

Bonjour Manthiflaure

La bonne pratique est de marqué le post de eriiic comme étant la réponse et de créer un nouveau sujet

image

Merci d'avoir posé la question

A+

Bonjour BrunoM45

C'est noté, je clôture ce sujet et ré-ouvre un nouveau sujet ... donc je dirai ... à très vite

Re,

je n'ai fait qu'apporter un complément à la réponse de Bruno

une variable initialisée et calculée dans la fonction Function FiltreReferentielPF(Base)

Ben non. Elle n'y est ni initialisée, ni calculée ici, elle est juste utilisée.
Je te conseille de cocher 'Déclaration obligatoire des variables' dans les options de VBE.
C'est pénible au début, mais tu évite des bugs difficiles à trouver (non initialisée comme ici, faute de frappe dans le nom de la variable, etc).

Tu peux passer plusieurs paramètres à ta fonction :
Function FiltreReferentielPF(Base, Nb_Ligne as long) As Variant

eric

Rechercher des sujets similaires à "utiliser meme tableau entre macros"