Bonjour le forum et les ami(e)s,
Avec votre aide j'importe des fichiers de type xls en utilisant plusieurs techniques dans le fichier joint TDB_RecapFv1.xls : Choix du répertoire à scanner, lecture de fichiers fermés et sans les ouvrir, progressbar de traitement de fichiers, lancement de macro selon le contenu d'une cellule par select/case, etc..
J'importe plusieurs types de fichiers (une dizaine) avec un test sur les noms des fichiers. Par ex fichier de type DRxx-.xls, ou de type DRxx-SURF.xls, etc... Tous les types de fichiers commencent à la 1ere ligne avec une ligne de titre et avec un nombre de colonnes différent. L'importation se fait dans un onglet pour chaque type de fichiers. Dans l'onglet Menu, je récupère certaines informations.
a) Mes variables et fonctions globales sont dans le module G0_VarPubliq
b) L'initialisation spécifique pour chaque type de fichiers à importer sont dans le module M0_Menu : Init-Surf_F() et scan() pour les fichiers de type DRxx-SURF.xls et Init-SurfG_F() et scanG() pour les fichiers de type DRxx-.xls
c) Les macros d'exécution sont dans un module dédié pour chaque type de fichiers
Tout fonctionne bien mais je cherche un moyen d'éviter des copies de macros qui ne se différencient que par la recherche des fichiers selon le type de nom et par le nombre de colonnes.
la différence entre les macros scan et scanG :
Scan :
If Len(Fichier.Name) = 13 Then 'Recherche des fichiers dont le nom fait 9 caractères ex DRxx-SURF.xls
If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers DRxx-SURF.xls
ScanG :
If Len(Fichier.Name) = 9 And Right$(Fichier, 5) = "-.xls" Then
La différence entre RecopieDRSurf_F et RecopieDRSurfG_F se retrouve au niveau du nom du type de fichiers et du nombre de colonne :
RecopieDRSurf_F:
If Len(Fichier.Name) = 13 Then 'Recherche des fichiers dont le nom fait 9 caractères ex DRxx-SURF.xls
If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers DRxx-SURF.xls
et
Range(C, C(t - 1, 1)).AutoFill Range(C, C(t - 1, 21))
Range(C, C(t - 1, 21)).Value = Range(C, C.Offset(t - 1, 21)).Value
RecopieDRSurfG_F :
If Len(Fichier.Name) = 9 Then 'Recherche des fichiers dont le nom fait 8 caractères ex DRxx-.xls
If Left$(Fichier.Name, 2) = "DR" Then ' et des fichiers qui commencent par DR
et
Range(C, C(t - 1, 1)).AutoFill Range(C, C(t - 1, 15))
Range(C, C(t - 1, 15)).Value = Range(C, C.Offset(t - 1, 15)).Value
Ma question : J'ai plus d'une dizaine de types de fichiers à importer. Est-il possible d'intégrer ces conditions dans une seule macro et selon le choix du type de fichiers sélectionné dans la cellule A8 de l'onglet Menu positionnées des paramètres qui seront utilisés dans un seul ensemble unique des fichiers scan et RecopieDRSurf_F. Ainsi quand j'ai un nouveau type de fichiers à importer, je rajoute une condition dans cette nouvelle macro et je créé le fichier d'initialisation des variables correspondantes dans le module M0_Menu
Cela me fait encore gagner du temps dans la lecture et la modification du code. Par avance je vous remercie de votre aide.
KIM
Avec votre aide j'importe des fichiers de type xls en utilisant plusieurs techniques dans le fichier joint TDB_RecapFv1.xls : Choix du répertoire à scanner, lecture de fichiers fermés et sans les ouvrir, progressbar de traitement de fichiers, lancement de macro selon le contenu d'une cellule par select/case, etc..
J'importe plusieurs types de fichiers (une dizaine) avec un test sur les noms des fichiers. Par ex fichier de type DRxx-.xls, ou de type DRxx-SURF.xls, etc... Tous les types de fichiers commencent à la 1ere ligne avec une ligne de titre et avec un nombre de colonnes différent. L'importation se fait dans un onglet pour chaque type de fichiers. Dans l'onglet Menu, je récupère certaines informations.
a) Mes variables et fonctions globales sont dans le module G0_VarPubliq
b) L'initialisation spécifique pour chaque type de fichiers à importer sont dans le module M0_Menu : Init-Surf_F() et scan() pour les fichiers de type DRxx-SURF.xls et Init-SurfG_F() et scanG() pour les fichiers de type DRxx-.xls
c) Les macros d'exécution sont dans un module dédié pour chaque type de fichiers
Tout fonctionne bien mais je cherche un moyen d'éviter des copies de macros qui ne se différencient que par la recherche des fichiers selon le type de nom et par le nombre de colonnes.
la différence entre les macros scan et scanG :
Scan :
If Len(Fichier.Name) = 13 Then 'Recherche des fichiers dont le nom fait 9 caractères ex DRxx-SURF.xls
If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers DRxx-SURF.xls
ScanG :
If Len(Fichier.Name) = 9 And Right$(Fichier, 5) = "-.xls" Then
La différence entre RecopieDRSurf_F et RecopieDRSurfG_F se retrouve au niveau du nom du type de fichiers et du nombre de colonne :
RecopieDRSurf_F:
If Len(Fichier.Name) = 13 Then 'Recherche des fichiers dont le nom fait 9 caractères ex DRxx-SURF.xls
If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers DRxx-SURF.xls
et
Range(C, C(t - 1, 1)).AutoFill Range(C, C(t - 1, 21))
Range(C, C(t - 1, 21)).Value = Range(C, C.Offset(t - 1, 21)).Value
RecopieDRSurfG_F :
If Len(Fichier.Name) = 9 Then 'Recherche des fichiers dont le nom fait 8 caractères ex DRxx-.xls
If Left$(Fichier.Name, 2) = "DR" Then ' et des fichiers qui commencent par DR
et
Range(C, C(t - 1, 1)).AutoFill Range(C, C(t - 1, 15))
Range(C, C(t - 1, 15)).Value = Range(C, C.Offset(t - 1, 15)).Value
Ma question : J'ai plus d'une dizaine de types de fichiers à importer. Est-il possible d'intégrer ces conditions dans une seule macro et selon le choix du type de fichiers sélectionné dans la cellule A8 de l'onglet Menu positionnées des paramètres qui seront utilisés dans un seul ensemble unique des fichiers scan et RecopieDRSurf_F. Ainsi quand j'ai un nouveau type de fichiers à importer, je rajoute une condition dans cette nouvelle macro et je créé le fichier d'initialisation des variables correspondantes dans le module M0_Menu
Cela me fait encore gagner du temps dans la lecture et la modification du code. Par avance je vous remercie de votre aide.
KIM