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 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