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 :
J'ai déclaré le plupart des variables en amont, pour qu'elles soient publiques.
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 😉
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: