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: