madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014
-
16 avril 2008 à 10:59
madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014
-
18 avril 2008 à 14:24
Bonjour,
Nouvelle en programation et sur ce forum je me permet de vous demander de l'aide.
Je suis actuelement en train d'en baver s'évère (il parait que c'est comme ça qu'on apprend...).
Donc je vous résume la chose:
En gros j'ai 3 fichiers *.txt (et yen aura indefiniment)placer sur internet:
- fichier *.txt : organisme (liste des entreprises avec leur lien *.txt)
- fichier *.txt : données entreprise alfa
- fichier *.txt : données entreprise beta
- etc
..
Je dois faire un fichier excel qui va chercher les données pour ces trois fichiers
en mettant sur la premiere feuille la liste des entreprises donc le contenu du fichier
texte entreprise. (Jusque là c'est bon.J'ai fait un bouton qui met a jour la Feuil1 d'excel).
et sur les autres feuilles le contenu des autre fichier txt.....
En gros à la fin ca fait feuille1 sommaire avec liste et liens des fichiers txt,
feuille 2 contenu du fichier txt organisme 1,
feuille 3 contenu du fichier txt organisme 2 etc...
Donc je suis déjà arrivée péniblement à faire une boucle qui liste les entreprises et créer une feuille pour chacun
mais je n'arrive pas à faire afficher en plus le contenu avec la
commande QueryTables le contenu des fichiers entreprises dans leur
propre feuille.
Ayant
passer une bonne partie de ma journée d'hier ainsi que d'aujourd'hui,
je suis un peu désespérée..quelqu'un a t-il une idée ??
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 16 avril 2008 à 20:53
...
Sub feuilles()
Dim NewSheet As Worksheet
Dim SName As String
Dim sURl As String
Dim Boucle As Integer
'elle est passée ou la declaration de la variable DerniereValeur ?
' le .Find("").row vas renvoyer la ligne de la premiere cellule vide mauvaise idée !
' remet ce que je t'ai donné cet a dire au minimum .Find("*").Row ce qui te retournera la derniere cellule non vide
' meme si des cellules existe dans l'intervale.
' Tel que tu me la simplifié le find meme si il marche comme ca(sais pas et j'veux meme pas essayer)
' tu devrait avoir des ennuis un jour ou l'autre
DerniereValeur = Worksheets("Feuil1").Range("A1:A50").Find("").Row
' le -1 a la ligne suivante n'est utile que si tu utilses .Find("").row si tu utilises.Find("*").Row
'tu n'en auras pas besoin
For Boucle = 1 To DerniereValeur - 1
SName = Worksheets("Feuil1").Range("A" & Boucle).Text
sURl = Worksheets("Feuil1").Range("B" & Boucle).Text
Set NewSheet = Worksheets(SName)
' pour la ligne suivante la Palisse n'aurai pas fait mieux c'est exactement comme ecrire if 1=1 then
If Worksheets(SName).Name = SName Then
Else
'un call pour appeler une function VBA quelle drole d'idee ?
' pour le -1 aux 2 lignes suivantes pareil que plus haut
Call Worksheets.Add(After:=Worksheets(Worksheets.Count - 1))
' sa vas planter ici car la feuille Worksheets.Count - 1 n'existe pas encore
Set NewSheet = Worksheets.Item(Worksheets.Count - 1)
' ici tu nous confirme que 1=1 bonne nouvelle
NewSheet.Name = SName
End If
' remplir c'est quoi un Sub une Function ?
Call remplir(NewSheet, SName, sURl, NewSheet.Range("A1"))
Next
Set NewSheet = Nothing
End Sub
ouai le rouge en gras est bien l'expression de ma colere !
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 16 avril 2008 à 11:57
Regarde du côté du DataObject pour Excel pour voir si ça ne pourrait pas t'aider.
Recherche aussi les fonctions de base de fichiers...
ex:
Open MonFichier For Binary As #1
strTemp = Space$(LOF(1))
Get #1, , strTemp 'strTemp contient tout le fichier
Set MyDataObject = New DataObject
MyDataObject.SetText strTemp 'le fichier va dans le DataObject
MyDataObject.PutInClipboard 'on le met dans le presse-papier
Range("A1").PasteSpecial 'on le copie dans la feuille en A1
Close #1 'fermeture du fichier
'destruction de l'objet DataObject
MyDataObject.Clear
Set MyDataObject = Nothing
Ça peut peut-être aider (?)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
dantes88
Messages postés3Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention16 avril 2008 16 avril 2008 à 12:10
Merci
Je vais regarder, pff durdur de faire ça dès le début, j'ai déjà une boucle donné par bigfish_le vrai et jrivet.
Mais je sais pas si on peut tout mettre dedans...c'est à dire faire
uneboucle sur la colonne 1 pour lister les noms et créer le feuilles
pour chacun d'entre eux et dans cette boucle lister les liens et leur
dire d'afficher le contenu dans leur feuille...
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 16 avril 2008 à 13:57
Desolé dandjb88...euh madte88... bref!
Je ne connais pas la fonction QueryTable, pour les fichiers, tu les à sur ton disque dur, ou tu veux les charger depuis internet?
madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014 16 avril 2008 à 14:23
Ca serait depuis internet
Mais je pense que ça change rien
En fait le but est de prendr ele lien dans la premiere feuille et de le
copier dans la boucle qui permettra d'afficher le contenu du fichier
dans une feuille
cs_faucheuse
Messages postés308Date d'inscriptionjeudi 10 janvier 2008StatutMembreDernière intervention27 octobre 2011 16 avril 2008 à 15:17
Si je comprend bien (je résume a ma maniere tu me dit si c'est bon)
Dans une feuille tu a des liens internet, d'autres feuilles s'ouvrent, dans chacune d'elle le contenu de la page web de chacun des liens de la premiere feuille. C'est ca?
Si c'est ca, ton probleme est il : (expression du besoin comme dirait mon patron ^^)
_ copier le contenu de la page web?
_ afficher le contenue de la page web ?
madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014 16 avril 2008 à 18:17
:) c'est cela !
Donc mon besoin, comme dirait ton patron, est de copier le contenu de la page web( qui est une fichier txt)
J'ai pas mal avancé depuis tout taleur d'ailleur je te montre (t va être super content je pari ) :
'Ce qui permet la connexion sur le web par exemple pour aller chercher les fichiers:
Sub remplir(feuille As Worksheet, nom As String, con As String, dest As Range)
With feuille.QueryTables.Add(con, dest)
.Name = nom
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
'et ma boucle qui va parcourir la colonne Asur la feuil1(pour prendre
les noms d'entreprise et créer une feuille par 'entreprise qui
portera..le nom de l'entreprise)
'Et qui va parcourir la colonne B (lien web des fichiers que l'on veut)
et qui affichera le contenu du fichier dans la feuille de
l'entreprise.)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 16 avril 2008 à 23:26
Salut Faucheuse,
C'est ce dont je parlais dans ma réponse. En fait, ça pourrait fonctionner en autant que le fichier soit disponible sur son PC, je pense... Et sous Excel, le DataObject peut rendre de grands services.
Avant d'entreprendre la boucle, il serait préférable de tenter d'en ouvrir un. Lorsque ça fonctionnera, la boucle sera du gâteau...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014 17 avril 2008 à 10:25
AU moins on pourra pas dire que j'essaye pas tout seul..... mon code est moche alor ?
-->Désolé de te faire sauter sur ta chaise bigfish le vrai ! j'ai
tout modifier comme tu me la conseillé en me basant sur la première
chaine mais je bloque sur l'utilisation de "remplir". Je pensais
l'appeller avec un "call"....
pour la méthode remplir c'est celle qui est au tout début dans l'ancien post...
--> fauchseuse, MPi : les fichiers texte sont sur internet,
c'est pourcela que j'utilise un querytables....enfin je pense que c'est
la meilleure solution. peut on ouvrir un lien http avec DataObject ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 17 avril 2008 à 12:03
Y a-t-il un message d'erreur ? si oui, donne le numéro et la description. Ce sera peut-être plus simple de trouver l'erreur. As-tu essayé d'activer la feuille sur laquelle tu veux copier avant d'appeler ta fonction remplir ou en début de celle-ci ?
Est-ce que tu peux fournir l'URL ou c'est confidentiel ?
PS: Comme je n'utilise jamais QueryTables, ce n'est pas simple de trouver l'erreur et je n'ai pas de site pour faire des tests...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI