Macro Télécharger un fichier csv et coller les données

Bonjour,

Je cherche comment faire la macro suivante :

Je pars d'un fichier avec plusieurs onglets. Un de ces onglets se nomme "Copie Extraction".

L'idéal serait un bouton dans cet onglet qui irait récupérer un fichier csv sur internet, avec les spécifications suivantes (problème de saisie d'identifiant et de mot de passe, puis saisie de 2 dates (début et fin), valider par "Ok", attendre la boite de dialogue, choisir "ouvrir", puis "oui" et encore "oui" (des messages d'erreurs de formats apparaissent mais il suffit de mettre "oui"). Le fichier csv s'ouvre alors (1 seul onglet.)... Idéalement, il faudrait copier les données de cet onglet et les coller dans l'onglet du fichier initial nommé "Copie Extraction", (début en A1), après avoir supprimé ce qui s'y trouvait auparavant... Puis fermer sans enregistrer le fichier télécharger....

En espérant avoir été clair, et que cette problématique soit solutionnable, merci par avance.......

Salut le forum

Rien à faire sans Login, ton code java de plus est inutile.

Mytå

Bonjour,

Merci de ton intérêt.

Re le forum

Voici un début de solution pour le Login, je regarde pour la suite

Sub connexion()
'Nécessite la référence à "Microsoft Internet Controls".
Dim ie As InternetExplorer
Dim IEdoc As Object
Dim DOCelement As Object

Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate ("http://quabby.bva.fr/Extraction.php5")

' attente de fin de chargement
Do Until ie.ReadyState = 4
DoEvents
Loop

Set IEdoc = ie.Document

'login
Set DOCelement = IEdoc.getElementsByName("login").Item
DOCelement.Value = "Ici le login"

'password
Set DOCelement = IEdoc.getElementsByName("password").Item
DOCelement.Value = "Ici le password"
DOCelement.Select

'connexion
Set DOCelement = IEdoc.Forms(0)
DOCelement.submit

End Sub

Mytå

-- 17 Aoû 2010, 16:39 --

Re le forum

Essaye pour voir si le téléchatgement s'effectue (Ton CSV à plus de 256 colonnes)

Sub connexion()
'Nécessite la référence à "Microsoft Internet Controls".
Dim ie As InternetExplorer
Dim IEdoc As Object
Dim DOCelement As Object

Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate ("http://quabby.bva.fr/Extraction.php5")

' attente de fin de chargement
Do Until ie.ReadyState = 4
DoEvents
Loop

Set IEdoc = ie.Document

'login
Set DOCelement = IEdoc.getElementsByName("login").Item
DOCelement.Value = "LOGIN"

'password
Set DOCelement = IEdoc.getElementsByName("password").Item
DOCelement.Value = "PASSWORD"
'DOCelement.Select

'connexion
Set DOCelement = IEdoc.forms(0)
DOCelement.submit

' attente de fin de chargement
Application.Wait Now + TimeValue("0:00:02")

'date début
Set DOCelement = IEdoc.getElementsByName("dateDebut").Item
DOCelement.Value = "2010-08-01"

'date fin
Set DOCelement = IEdoc.getElementsByName("dateFin").Item
DOCelement.Value = "2010-08-08"

'connexion
Set DOCelement = IEdoc.getElementsByName("ok").Item
DOCelement.Click

End Sub

Mytå

Bonsoir à tous !!

Merci Mytâ, de ton intérêt.

Je rencontre quelques difficultés :

  • Je ne comprend pas "'Nécessite la référence à "Microsoft Internet Controls".". Dois-je installer quelquechose auparavant ?
  • Peut-être est-ce lié au point précédent, mais lorsque j'exécute la macro, j'obtiens de suite le message suivant :
"Erreur de compilation. Type défini par l'utilisateur non défini.". Et dans Visual Basic, la mention "ie As InternetExplorer", en ligne 3, juste après le 1er Dim, est sélectionnée...

Merci encore !!

Re le forum

Tu dois activer la référence depuis le VBA

[ALT]+F11 et dans Outils > Références > Coche Microsoft Internet Controls

Mytå

Merci beaucoup, ça commence pas mal du tout !!!

Suite à la macro, j'arrive sur 3 boites de dialogues successives où je dois cliquer respectivement sur "Ouvrir", puis "Oui" et enfin "Ok" avant que le fichier ne s'ouvre... Avant de pouvoir copier coller les données....

Si tu penses que cela est possible, je suis ton obligé....

Idéalement, je voudrais pouvoir saisir en amont les dates de début et de fin également (je ne sais pas si la meilleure solution est une "message box" ou bien de saisir directement dans IE.....

Encore merci !!!!

Re le forum

Kirko, je ne t'ai pas oublié, j'ai quelques problèmes avec une API.

Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Afin de lancer l'ouverture de ton CSV.

Je devrais finaliser la version demain.

Mytå

Salut !!

Quand je fais les opérations "à la main", j'ai bizarrement quelquefois des soucis avec le "copier/coller" (mais pas à chaque fois???). Peut-être est-ce dû au nombre de colonnes ??? Donc, peut-être l'info suivante est-elle utile : Pour le traitement que je dois faire ensuite, je n'ai réellement besoin que des colonnes A à EX....

Merci, à bientôt......

Re le forum

Kiriko, il serait peut-être plus simple alors d'enregistrer le CSV

faire l'extraction dans la macro, et finalement détruire l'enregistrement.

A te relire

Mytå

Bonjour à toi, et à tous !!

C'est peut-être effectivement une bonne solution. Mais j'ai un doute : Quand tu parles d'enregistrer le csv,.... (d'ailleurs il s'ouvre en csv, mais on peut l'enregistrer en xls sans soucis si c'est utile), c'est une opération incluse dans la macro ???

De toute façon, je me fie complètement à toi, tu as visiblement très bien saisi ce à quoi je souhaite parvenir....

Je le dis à chaque post, mais merci du temps que tu passes sur mon problème...

A plus !

Bonjour Mytå et bonjour à tous !!

Tu as sans doute d'autres occupations, ou bien mon problème est plus compliqué qu'il n'y parait...

J'ai réussi à désactiver les avertissements sur le format de fichier avec un bête : "Application.DisplayAlerts = False"

Il me reste 2 problèmes :

  • Choisir "Ouvrir" lors du téléchargement (pas vital, je peux faire un clic)
  • Surtout, faire attendre l'ouverture du fichier par la macro... Le code "Application.Wait Now + TimeValue("0:00:02")" ne fonctionne pas ici, il empêche l'ouverture pendant l'attente.
  • Un bonus serait de "fermer la session" internet après téléchargement, voire fermer l'onglet...

Voilà, en espérant pouvoir être aidé,

Merci encore !!!

Bonjour,

si le code source est en frame comment faire, car avec la meme methode cela ne passe pas

il me faut juste rentrer le mot de passe puis ensuite telecharger un fichier xcs sur une autre page

voici un extrait du code source

</script>

<script type="text/javascript" src="script/json.js"></script>

<script type="text/javascript" src="script/prototype.js"></script>

<script type="text/javascript" src="script/traffic.js"></script>

<script type="text/javascript" src="script/home.js"></script>

<script type="text/javascript">

<!--

function checkFrameset()

{

if(self.parent.name != "mainFrame")

{

top.location = "index.html";

}

}

-->

</script>

</tr>

<tr>

<td height="5px"></td>

</tr>

<tr>

<td class="tdcol0">Mot de passe:</td>

<td class="tdcol1"><input name="Password" class="input-text" type="password" size="32"></td>

</tr>

<tr>

<td></td>

<td class="buttonrow"><input name="ButtonLogin" Value="Connexion" class="input-submit" type="submit" size="9"></td>

Rechercher des sujets similaires à "macro telecharger fichier csv coller donnees"