XL 2013 (Résolu) Utiliser et mémoriser un tableau sur plusieurs sub

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

aurelien.r

XLDnaute Nouveau
Bonjour à tous,

Je suis débutant en VBA et ça fait quelques heures que je m'arrache les cheveux sur une question.
Je créé un programme qui s'appuie sur une base de donnée externe (un fichier excel également).

Avec un sub Aut😵pen, je créé un tableau des clients (base de données) dès l'ouverture du fichier mère, voici le code :
Code:
Sub crea_tab()
    Dim WB_princi As Workbook
    Dim plage As String
    chemin = "C:\Users\....\" 
    fichier_clients = "clients.xlsx"
    fichier_mere = "fichier_princi.xlsm"  
    Set WB_princi = ActiveWorkbook
    Workbooks.Open chemin & fichier_clients 'Ouvre le fichier clients
    Workbooks(fichier_clients).Activate
        'Tri le Fichier clients par ordre alphabétique pour le listing futur
        ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("B1:B2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort
            .Orientation = xlTopToBottom
            .Apply
        End With
        
        'Trouve la dernière ligne du fichier clients
        num_lig = 1
        While Sheets("Feuil1").Cells(num_lig, 1) <> ""
            num_lig = num_lig + 1
        Wend
        num_lig = num_lig - 1
        
        'Créé le tableau
        plage = "A2:T" & num_lig
        tab_cli = Range(plage)
        Workbooks(fichier_mere).Activate
        Workbooks(fichier_clients).Close savechanges:=False
End Sub

Sub Auto_Open()
    Call crea_tab
End Sub

J'ai déclaré le plupart des variables en amont, pour qu'elles soient publiques.
Code:
Public chemin As String
Public fichier_clients As String
Public fichier_mere As String
Global tab_cli As Variant
Global num_lig As Long


Ma question est la suivante :
Je ne parviens pas a ré-utiliser le tableau fictif "tab_cli" dans d'autres sub malgré le fait de l'avoir mis en global. J'aurais besoin de l'utiliser dans d'autres sub mais également dans une ou plusieurs userform.
La seule solution que je vois pour le moment est de copier mon fichier source dans un onglet caché de mon fichier mère, mais je pense que cette manip est assez gourmande en mémoire vive, non ?

Merci d'avance pour votre aide 😉
 
Dernière modification par un modérateur:
Re : Utiliser et mémoriser un tableau sur plusieurs sub

Bonjour et merci pour l'accueil ainsi que la réponse rapide.

Pour le moment mon code total ne comprend qu'un seul module (Module1) et un UserForm (Interface). L'interface ne comprend que quelques lignes de code (qui ne marche pas encore, mais c'est lié à la question que j'ai posé avant je suppose).
Dans le module, je déclare mes variables comme ci dessus au début, puis j'ai le code de la création du tableau fictif.

Cependant, si à la suite je met un nouveau sub du style :
Code:
Sub test()
    Cells(1, 1) = tab_cli(1, 1)
    Cells(3, 3) = tab_cli(3, 3)
    
End Sub
(Je précise que j'ai essayé ce code déjà en mettant des sheets("feuil1") ou des module1.tab_cli pour être plus précis sans que cela change qqch jusque maintenant)

Alors j'ai le droit à un joli message d'Excel sur la première ligne (Cells(1,1)=tab_cli(1,1)):
9a3952123755481e7f03b71f8963c594.png
 
Dernière modification par un modérateur:
Re : Utiliser et mémoriser un tableau sur plusieurs sub

RE:

Un tableau se déclare en mode dynamique, avec des "()".

Je te propose de corriger ton code comme suit:

Code:
Public tab_cli()
Public plage As Range

Sub test()
Set plage = Range("A2:T" & num_lig)
tab_cli= plage.Value

End Sub
Tu ne devrais plus avoir d'erreur.

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
76
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
793
Réponses
5
Affichages
768
Retour