Problematique d'importation... (bon cas d'ecole)

Problematique d'importation... (bon cas d'ecole) - VB/VBA/VBS - Programmation

Marsh Posté le 11-08-2006 à 01:10:46    

Hello,  
 
Récemment confronté à un input massif sur pas loin de 115 fichiers excel, il a semblé judicieux d'automatiser le process via VBA (Macros)...  
 
Les données inputées dans les sheets sont des données figurant dans une base de données, mais aucun export de cette base dans un format type XLS ou CSV n'est actuellement envisageable pour des raisons que je n'enoncerai pas ici...  
Toujours est il que nous disposons cependant d'un bon vieux fichier TXT avec séparateur contenant les valeurs que nous voulons implementer dans ces fameuses sheet.  
 
L'automatisation devrait se derouler comme suit :  
 
- DATA BOX : bouton permettant de démarrer le processus d'update qu'il soit manuel (1) ou auto(2).  
1 - Manuel : des boites de dialogue apparaissent demandant d'entrer les valeurs a la date du jour et ce sur plusieurs colonnes.  
2 - Auto : le processus met a jour automatiquement les données via une importation de fichiers txt et injecte cellule apres cellule les valeurs requises et préalablement ciblées.  
 
Nous nous attacherons a la deuxieme partie, à savoir l'AUTO.  
 
Soit un fichier txt dans C:\Temp\TOTO1234.txt  
Dans ce fichier nous avons plusieurs lignes avec le header qui suit :  
CodeTOTO;NomTOTO;DateBetiseTOTO;TypeBetise;;  
Ensuite les données :  
TOTO1234;Toto Armande Germaine;PPP;10-Juil-06;QQQ;C;RRR;  
 
Plusieurs CodeTOTO différents sont présents  
Le NomTOTO correspond au Code TOTO  
Date BetiseTOTO biensur a la date mais elle peut varier  
et enfin le type de betise A B ou C  
Dans le fichier texte il y a des valeurs que nous n'injecterons pas... (PPP;QQQ;RRR etc...)  
 
Toujours dans C:\Temp, nous avons différents fichiers nommés  
TOTOXXXX - Nom TOTO.xls  
 
Chaque valeur du fichier texte doit etre injectee dans chacun des fichiers et dans les cellules correspondantes.  
Soit pour le fichier TOTO1234 - Toto Armande Germaine.xls  
|....DATE.....|..CodeTOTO.|.............NomTOTO.............|.TypeBetise.|......|  
|.10-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......C..........|......|  
|.11-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......B..........|......|  
|.12-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......C..........|......|  
etc.....  
 
 
 
Ben a l'attaque !!!!  
Sachant que les valeurs peuvent etre numerique ou chaine de caractere.  
Sachant qu'il y aplus d'une centaine de fichiers a mettre a jour et ce sur plusieurs dates...  
Et enfin sachant que ce doit etre ergonomique pour l'utilisateur...  
 
voilou... bon courage... moi j'ai pas encore trouvé la formule idéale mais comme le dit Baltazar, ca va venir !!!  
 
N'hésitez pas a poster votre code suivant la maxime :
Si tu sais pas, demande; si tu sais, partage....
 

Reply

Marsh Posté le 11-08-2006 à 01:10:46   

Reply

Marsh Posté le 11-08-2006 à 12:04:08    

beaucoup d'informations pas toujours compréhensibles  :pt1cable:  tu peux nous faire des 1/ 2/ 3/, histoire qu'on sache les étapes par lesquelles ondoit t'aiguiller.

Reply

Marsh Posté le 11-08-2006 à 12:08:56    

drizzt_fr a écrit :

Hello,  
 
Récemment confronté à un input massif sur pas loin de 115 fichiers excel, il a semblé judicieux d'automatiser le process via VBA (Macros)...  
 
Les données inputées dans les sheets sont des données figurant dans une base de données, mais aucun export de cette base dans un format type XLS ou CSV n'est actuellement envisageable pour des raisons que je n'enoncerai pas ici...  
Toujours est il que nous disposons cependant d'un bon vieux fichier TXT avec séparateur contenant les valeurs que nous voulons implementer dans ces fameuses sheet.  
 
L'automatisation devrait se derouler comme suit :  
 
- DATA BOX : bouton permettant de démarrer le processus d'update qu'il soit manuel (1) ou auto(2).  
1 - Manuel : des boites de dialogue apparaissent demandant d'entrer les valeurs a la date du jour et ce sur plusieurs colonnes.  
2 - Auto : le processus met a jour automatiquement les données via une importation de fichiers txt et injecte cellule apres cellule les valeurs requises et préalablement ciblées.  
 
Nous nous attacherons a la deuxieme partie, à savoir l'AUTO.  
 
Soit un fichier txt dans C:\Temp\TOTO1234.txt  
Dans ce fichier nous avons plusieurs lignes avec le header qui suit :  
CodeTOTO;NomTOTO;DateBetiseTOTO;TypeBetise;;  
Ensuite les données :  
TOTO1234;Toto Armande Germaine;PPP;10-Juil-06;QQQ;C;RRR;  
 
Plusieurs CodeTOTO différents sont présents  
Le NomTOTO correspond au Code TOTO  
Date BetiseTOTO biensur a la date mais elle peut varier  
et enfin le type de betise A B ou C  
Dans le fichier texte il y a des valeurs que nous n'injecterons pas... (PPP;QQQ;RRR etc...)  
 
Toujours dans C:\Temp, nous avons différents fichiers nommés  
TOTOXXXX - Nom TOTO.xls  
 
Chaque valeur du fichier texte doit etre injectee dans chacun des fichiers et dans les cellules correspondantes.  
Soit pour le fichier TOTO1234 - Toto Armande Germaine.xls  
|....DATE.....|..CodeTOTO.|.............NomTOTO.............|.TypeBetise.|......|  
|.10-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......C..........|......|  
|.11-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......B..........|......|  
|.12-Juil-06.|..TOTO1234.|..Toto Armande Germaine..|......C..........|......|  
etc.....  
 
 
 
Ben a l'attaque !!!!  
Sachant que les valeurs peuvent etre numerique ou chaine de caractere.  
Sachant qu'il y aplus d'une centaine de fichiers a mettre a jour et ce sur plusieurs dates...  
Et enfin sachant que ce doit etre ergonomique pour l'utilisateur...  
 
voilou... bon courage... moi j'ai pas encore trouvé la formule idéale mais comme le dit Baltazar, ca va venir !!!  
 
N'hésitez pas a poster votre code suivant la maxime :
Si tu sais pas, demande; si tu sais, partage....


 
ben tes données, elles sont en CSV, là, non? :D
 
T'as essayé de l'ouvrir ton fichier txt dans excel pour voir ce qu'il faisait? En mode csv, il va te demander le caractère de séparation et puis zou, test données vont se mettre dans les colonnes.
 
Sinon, ben :
Ouvrir fichier xls servant à récupérer les données
pour chaque fichier à importer
    ouvrir fichier à importer
       Ligne = 0
       tant que pas arrivé à fin de fichier
         Ligne++
         Lire ligne n°Ligne
         Extraire chaque valeur située avant un ; dansnune variable de type string
         Mettre chaque valeur dans la bonne colonne du fichier xls (en la castant si ça s'avère nécessaire)
       Fin tant que
   fermer fichier    
fin pour
Fermer fichier xls
 
Grosso modo, c'est l'idée
 


Message édité par rufo le 11-08-2006 à 12:19:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed