cs_oroumov
Messages postés3Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention25 octobre 2006
-
23 oct. 2006 à 12:00
cs_oroumov
Messages postés3Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention25 octobre 2006
-
25 oct. 2006 à 15:43
Hello,
J'ai une question pour vous qui est sans doute très simple pour beaucoup d'entre vous. Je pourrais aussi chercher sur le net, mais j'ai peur de trouver une solution qui convienne à mes besoins mais que ce ne soit pas du tout la meilleure implémentation, alors je préfère vous demander en direct.
Voilà ce que je voudrais faire : je voudrais importer un fichier texte sous Excel, et que le résultat sous Excel soit directement sous forme de plusieurs feuilles. Le format du fichier texte original est libre, j'écris en ce moment un programme en PERL (ça c'est obligatoire mais c'est pas la question du jour :o) qui remplit ce fichier donc je mets ce que je veux dedans.
Un exemple :
Je voudrais mettre dans mon fichier texte quelquechose du style :
# Feuille TOTO
Valeur1;13
Valeur2;12
#Feuille TITI
Valeur1;10
Valeur2;245
Et me retrouver après alimentation d'Excel (comment, je ne sais pas non plus, manuellement me convient) avec deux feuilles dans le document Excel, une qui s'appellerait TOTO, l'autre TITI, et contenant les valeurs spécifiées !
Précision : je ne connais rigoureusement rien en VB ou autre langage qui se lie à Excel, donc j'écouterai attentivement vos recommandations sur la meilleur façon de faire pour m'en sortir.
Merci pour votre aide, ou même juste vos suggestions sur la façon de faire.
B0mbJacK
Messages postés141Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention25 octobre 20061 23 oct. 2006 à 12:16
Lu,
voici 2 exemples :
intro pour l'ouverture
'création objet excel
Set objXL = CreateObject("Excel.Application")
'chargement du document
With Cmd ' boite de dialogue (CommonDialog)
.ShowOpen ' on affiche la boite de dialogue "ouvrir document"
objXL.Workbooks.Open .FileName ' on récupere l'url du document
NmEx = .FileName
'objXL.AskToUpdateLinks = False ' empecher la demande de mise à jour
End With
' et pour quitter , le mot de la fin
dans ta procédure Form1_unload
objXL.DisplayAlerts = False ' on affiche pas d'alerte de fermeture
objXL.Quit
Set objXL = Nothing ' on décharge notre objet excel
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 oct. 2006 à 13:02
Salut,
pas le temps de gérer les éventuelles erreurs donc suit bien les instructions :
Ouvre un nouveau classeur, appuie sur Alt + F11 (ça ouvre l'éditeur vb), dans le menu Insertion, tu as Module, clique dessus, et une page blanches apparait.
Colle ce code et remplace ce que je t'ai mis en commentaire (en vert dans le code) :
T'as plus qu'à appuyer sur F5 pour exécuter le code !
Sub ImportDonneesFichiersTexte()
Dim strFile As String
Dim strAllText() As String
Dim strDonnees() As String
Dim ff As Integer
Dim i As Integer
Dim iCounter As Integer
Dim iNbLine As Integer
Dim iLigne As Integer
Dim iColonne As Integer
strFile = "C:\Documents and settings\<nom utilisateur>\Bureau\ValeursExcel.txt"
' ici place le bon chemin et nom du fichier texte
ff = FreeFile
Open strFile For Input As ff
Contenu = Input(LOF(ff), ff)
Close ff
cs_oroumov
Messages postés3Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention25 octobre 2006 23 oct. 2006 à 14:07
Salut Mortalino,
Merci pour la réponse, en plus ça se lit presque intuitivement, même si j'aurais jamais pu trouver moi même les commandes du style :
ff = FreeFile
Open strFile For Input As ff
Contenu = Input(LOF(ff), ff)
Close ff
Par contre, j'avoue j'ai pas encore eu le temps de tester (je pourrai en fin d'après midi) mais j'ai quand même une question : je crois que par défaut ça gère pas le fait de recommencer en case 1,1 au début de la page suivante, j'ai l'impression que si en première page on a atteint la ligne 10, alors iLigne va valoir 11 au début de la feuille suivante.
Enfin je ferai des tests cet après midi.
Ceci mis à part, c'est exactement ce que je voulais c'est vraiment excellent.....
Merci beaucoup, je teste et je vous dis si j'ai réussi à m'en sortir.
@+
Oroumov.
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 oct. 2006 à 14:29
Je viens de vérifier, pas d'erreur à ce niveau.
Le compteur pour les lignes et colonnes ne se mettent à 1 que lorsque qu'une feuille est sélectionnée.
Néanmoins, j'ai fait une erreur dans le code, il ne faut pas travailler avec l'index de la feuille (car index = position, et lors de l'ajout, la feuille s'intercale avant la dernière) mais avec le nom de la feuille.
Voici la correction :
Sub ImportDonneesFichiersTexte()
Dim strFile As String
Dim strAllText() As String
Dim strDonnees() As String
Dim ff As Integer
Dim i As Integer
Dim iCounter As Integer
Dim iNbLine As Integer
Dim iLigne As Integer
Dim iColonne As Integer
strFile = "C:\Documents and settings\Nico\Bureau\ValeursExcel.txt"
' ici place le bon chemin et nom du fichier texte
'Close ff
ff = FreeFile
Open strFile For Input As ff
Contenu = Input(LOF(ff), ff)
Close 2
cs_oroumov
Messages postés3Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention25 octobre 2006 25 oct. 2006 à 15:43
Hello !
D'abord merci à tous pour votre aide précédemment, j'arrive exactement à faire ce que je veux avec ce que vous m'avez donné plus haut.
J'ai deux questions cependant :
1/ Question mise en forme (exemple, mettre en rouge toutes les cases qui contiennent toto, et autre), pouvez vous me dire s'il y a un bon lien web vers une page qui recenserait ces commandes en VB ? (comment je mets en gras, comment j'applique tel style, etc etc...) Je vois bien d'après vos exemple ci dessus comment faire moi même les tests des caractères des cases, mais tout ce qui est commande interprétable par Excel (genre Cells(1,2).value ou autre), où puis je en trouver une référence ?
2/ Autre question sur la meilleure façon de procéder, je souhaiterais que les données que j'ai recupérées dans une seule et même feuille d'excel, et qui sont des blocs de données, jepuisse les classer dans l'autre sens. Toujours pareil, je fais ce que je veux avec le fichier d'input, donc ça ne me gene pas de rajouter des caractères pour faciliter le codage, mais la meilleure façon de faire ?
info 1 info 2
nom toto nom titi
adresse toulouse adresse paris
telephone 3434343436
(pas facile de faire du tableur sans cases) :))
En gros, je voudrais transformer la vue verticale en plusieurs colonnes horizontales, en me disant que je déplace tout un tas de cellules entre la cellule qui contient le "&" et la cellule suivante qui contient le "&"-1.