Forums XLPages

Tous les messages (JackyAmiens)

« 1 2 3 4 »
Re: Taille d'un champ de Page d'un TCD
#21
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 01-04-2010 08h09
Bonjour,

Merci Guy d'avoir consacrer du temps à ma problèmatique, Je voulais un seul champ de page présentant une liste d'au moins 20 clubs.
Comme les clubs appartiennent à des Ligues, je peux ajouter un filtre supplémentaire avec un champ dit "Ligue".
Le filtrage par ligue permet la présence de moins de clubs mais contraint à deux sélections.

Cdlt, Jacky
Hors Ligne
Rapport   Haut 

Re: Taille d'un champ de Page d'un TCD
#22
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 31-03-2010 15h58
Bonjour,

Et merci de ta participation,
mais, je me suis mal exprimé.
Mon code (en gras) ne fonctionne pas, il est simplement l'expression de l'idée de l'instruction que je cherche.

Le code  VBA   doit permettre de  dimensionner le champ déposer en zone Page lors de sa sélection par l'utilisateur.
Si Club comporte 100 éléments, un clique sur le sélecteur d'élément doit faire apparaître une zone comprenant 20 éléments au lieu 6 ou 8.

Le code MichelXLD  permet de sélectionner ou déselectionner les éléments présent dans "Club" et ne répond pas à ma recherche.

Cdlt, JackyAmiens


Hors Ligne
Rapport   Haut 

Taille d'un champ de Page d'un TCD
#23
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 31-03-2010 12h26

Bonjour,

Dans l'exemple ci-joint le but est de figer lors de sa sélection, la présentation du  champ Club à 20 éléments.
La taille de la fenêtre, présentant les éléments,  peut-être fixée manuellement. Seulement elle ne se maintient pas après sauvegarde.

Une solution est à l'ouverture de lancer une macro à l'ouverture du classeur (gestion de plusieurs feuilles) qui vienne faire la mise en forme.

soit une macro
Private Sub Workbook_Open()
'
'Position le champs Club dans la zone Page du TCD
   Sheets("Feuil2").PivotTables("Tableau croisé dynamique1").PageFields("Club").Orientation = xlPageField

'Une ligne pour indiquer le nombre d'éléments visible lorsque l'on veux sélectionner un élément

Sheets("Feuil2").PivotTables("Tableau croisé dynamique1").PageFields("Club").Items=20 ' of course it's no goodf!
End Sub

L'enregistreur de macro ne donne pas le code de manipulation de la liste.


Merci d'avance pour votre aide







Pièce jointe:
zip TCDtest.zip   [ Taille: 75.74 Ko - Téléchargements: 534 ]
Edité par JackyAmiens le 31/03/2010 13:33:53
Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#24
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 02-10-2009 16h00

Re Guy,

En programmation, je suis plutôt un bidouilleur qui pioche à droite à gauche des bouts de code et monte des usines à gaz.

Mon but, me faciliter la vie dans le travail des tâches courantes et répétitives.

Là c'est plutôt loupé

Reste la solution du chargement manuel ou à obtenir la livraison via l'emetteur du site avec tous les obstacles d'habilitations.

Merci d'avoir consacrer du temps et délivrer ce bout de code bien pratique pour le téléchargement de fichier sur le web.

Cdlt Jacky


Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#25
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 02-10-2009 11h19

Bonjour Guy,

A partir de tes renseignements, j'ai effectué un test sur un fichier présent sur une page perso.
Voici le code du module excel

'----------------------Début------------------------------
'API de telechargement - A mettre dans les déclarations de var
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long


Sub telecharge()
       
        Dim errcode As Long
Dim URL As String
Dim LocalFilename As String
            'On spécifie le chemin de l'image web
       URL = "http://pagesperso-orange.fr/j.bruiant/Glisy1/pages/DamesPic.jpg"
       
            'On spécifie le chemin ou l'on veut enregistrer ce fichier
            '(vb.app.path donne le chemin du dossier de l'appli vb)
        LocalFilename = "F:\TPE_EtudeOpit\DamesPic.jpg"
            'On appelle la fonction api de téléchargement
        errcode = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
        If errcode = 0 Then
            'Message de confirmation que l'image a bien été téléchargée
            MsgBox "Fichier reçu"
            'Comme on a bien reçu l'image on peut la charger
                    
        Else
            'Sinon on affiche le message d'erreur
            MsgBox "Echec"
        End If
End Sub

'--------------FIN--------------------------------

Super cela fonctionne pour la récupération d'un fichier quelconque.

Mon problème n'est pourtant pas résolu.
Le lien suivant
'http://boutique-datafactory.com.francetelecom.fr/page/catalogue?p=5&d=6&u=1&r=481&dl=10

n'est pas le fichier.
Il existe un code (script) à l'intérieur de la page qui pointe sur cet élément.

Pour plus de compréhension, je joins la fichier htlm de la page.
Si l'on clique sur l'un des éléments Commerce_Marché_PME l'on provoque l'affichage de la page
qui va provoquer l'apparition de la boite de  téléchargement.



Donc, j'ai amélioré ma connaissance sans atteindre le nirvana
Pièce jointe:
zip catalogue.zip   [ Taille: 5.41 Ko - Téléchargements: 748 ]
Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#26
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 30-09-2009 11h18
Bonjour,

Je ne peux pas vous transmettre le lien.
Il abouti sur une page d'un intranet.

Après quelques recherche, je reformule ma demande

le lien pour aller sur la page est
http://boutique-datafactory.com./page ... amp;d=6&r=483#rep_483

le lien actif sur l'objet de récupération du fichier CAB
est de la forme

http://boutique-datafactory.com./page ... ;u=-1&r=483&dl=13

En mettant ce lien dans le navigateur, je provoque la boite de dialogue "windows ou internet" téléchargement de fichier avec les boutons : ouvrir,enregistrer, annuler.

Mon choix c'est d'enregistrer


le fichier CAB est un fichier compressé
Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#27
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 29-09-2009 11h05
Bonjour,

Je passe ma question en résolu bien que je n'ai pas trouvé de solution à ce jour, mais cela n'est que partie remise.

Merci à tous les intervenants pour leurs conseils et suggestions.

J.B
Hors Ligne
Rapport   Haut 

Re: En VBA gérer la boite windows 'Télécharger un fichier'
#28
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 13-08-2009 14h17

Bonjour Didier myDearFriend,

Oui l'idée de base était de pouvoir télécharger un fichier présent sous un lien hypertext.
Ce fichier est du type toto.cab (compression d'un xls).

Le problème est situé dans la page html (qui doit contenir un script).

Dans la page Html (code source) le lien du fichier est déclaré sous cette forme
href="?p=5&d=6&u=-1&r=481&dl=6">LeFichier<

J'ai tenté à partir d'une capture image (voir fichier) les choix

'ThisWorkbook.FollowHyperlink http://chemin/catalogue?p=5&d=6&u=-1&r=481&dl=6
puis
'ThisWorkbook.FollowHyperlink http://chemin/p=5&d=6&u=-1&r=481&dl=6'

et d'autres variantes pour un résultat négatif.

Mon idée est de contourner la problématique.

Par excel et en VBA, aller sur la page HTML (pas de problème, j'avais trouvé il y a un an ici une aide super  )
Simuler le clic sur le lien (en cours de recherche)
Gérer la boite Windows 'Téléchargement de fichier' pour enregistre le fichier dans un répertoire spécifique


La seconde étape sera en suite la décompréssion du fichier, l'extraction des TCD, la remise en forme en un seul tableau.
Mais ceci est une autre histoire.

Cdlt, Jacky

P.S: Je pars en vacance ce soir sans savoir si j'aurai un acces internet fiable. A+ sur le forum

Hors Ligne
Rapport   Haut 

En VBA gérer la boite windows 'Télécharger un fichier'
#29
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 12-08-2009 11h24

Bonjour,
Je tente de vous exposer au mieux mon besoin.

La récupération de fichier (6) hebdo  déposés sur une page html.
La récupération se fait manuellement actuellement avec ouverture de la boite de dialogue Windows: Télécharger le fichier option enregistrer

l'objectif est de les récupérer automatiquement via Excel et en code VBA

Le code source de la page HTML donne pour information
(j'ai retiré quelques éléments de code)

:tbody:id="ctl00_contentMaster_listeFichiers" : tr class="pair" :
:a href="?p=5&d=6&u=-1&r=481&dl=0"> Le fichier à télécharger : 12/08/2009 :762 Ko
img src="../img/s.gif" title="Excel" class="cab"

:a title="Excel" class="cab"
:tbody:

Comment manipuler la boite de dialogue 'Télécharger le fichier' (détection) en VBA.
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#30
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 12-03-2008 11h41
Mon problème était le suivant
Accéder à une page Html d'un intranet pour récupérer un fichier csv au format Txt via excel.

1-Identification sur la page d'entrée
2-passer à la page d'interrogation (formulaire) qui génére un tableau avec lien sur un fichier téléchargeable.
3-sauvegarder le fichier téléchargeable sur un disque local.
l'opération 2 et 3 devant être (pour l'instant) faite 4 fois.

Grace à MichelXld, j'ai compris comment piloter html pour saisir des données dans des zones de texte, radio ou combobox (liste déroulante).

l'instruction IE.readyState permet de savoir si la page est chargé en cache sur le micro.

J'ai dû ajouter une temporisation pour pouvoir aller lire le code HTML générer (intranet + page ASP) qui termine de se charge dans le navigateur après readyState=4.

Après validation des éléments du formulaire, la page générée contient en code HTML l'adresse du fichier à télécharge.

répérage du code grace à MaPageHtml.getElementsByTagName("a").Item(1).outerHTML
le 1 correspond au nombre URL présent dans le code HTML.


Mon objectif est atteind à 100%, merci à myDearFriend et à vous pour l'aide obtenu.

Ci-dessous le code complet de mon projet ( à ma sauce of course)



Public IE As InternetExplorer
Public HlmIdentHlmMdpHlmBaseHlmBoutonHlmddebHlmdfinHlmgo As HTMLElementCollection
Public MaPageHtml As HTMLDocument
Public DateDebutDateFin As String

Sub Calabrio
()
 
'Auteur Jacky Bruiant
 '
Programme principale

 
 Set IE 
CreateObject("InternetExplorer.Application")
 
IE.Visible True
 IE
.navigate ("http://monacces/page1.asp")
 
 
'Attendre l'affichage de l'info htlm terminé dans IE 
 Do Until IE.readyState = 4 '
 
DoEvents
 Loop
 
 
'Liste des paramètres des pages HTML
 Set MaPageHtml = IE.document
 Set HlmIdent = MaPageHtml.getElementsByName("login").Item
 Set HlmMdp = MaPageHtml.getElementsByName("pwd").Item
 Set HlmBase = MaPageHtml.getElementsByName("connexion").Item(0)
 Set HlmBouton = MaPageHtml.getElementsByName("Submit2").Item
 
 '
Lecture et mise en forme de la période d'extraction
 DateDebut = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value), 1)
 datedfin = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value) + 1, 1) - 1

 DateDebut = CStr(DateDebut)
 DateFin = CStr(datedfin)
 
'
Habilitation d'access
HlmIdent.Value = "Identifiant"
HlmMdp.Value = "MdP"
HlmBase.setAttribute "checked", "true"
HlmBouton.Click
Call PauseWait(4)

'
Rapatriement des données Ja
Exfunct 
goHTML(7"Cmiens")
Exfunct goHTML(8"CAmiens")
Exfunct goHTML(11"CLille")
Exfunct goHTML(19"CTroyes")

Call PauseWait(2)
IE.Quit
gbox 
MsgBox("Rapatriement achevé"vbInformation"Source Calabrio")
End Sub

'********************************************************************************
Function sauvcalabrio(urlnum, lienurl)
'
' Bruiant J.
'
realise par l'enregistreur de macro

Application.DisplayAlerts = False '
empêche l'apparition des boites de dialogue de confirmation
    Workbooks.OpenText Filename:= _
        lienurl, _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _
        :=True
    
'
Sauvegarder les données au format TXT avec un séparateur 
ActiveWorkbook.SaveAs Filename:="F:Projetdonnees" urlnum ".txt"_
        FileFormat
:=xlCSVCreateBackup:=False
        ReadOnlyRecommended
:=FalseCreateBackup:=False
        
    ActiveWorkbook
.Close
Application
.DisplayAlerts True  'réactive les message d'alertes
End 
Function

'**********************************************************************************
Sub PauseWait(tps)
'
' Attendre x secondes (voir l'
aide en ligne d'Excel)
'
inspiration du net

Lheure 
Hour(Now())
LesMinutes Minute(Now())
LesSecondes Second(Now()) + tps  'tps le temps de pause
waitTime = TimeSerial(LHeure, LesMinutes, LesSecondes)
Application.Wait waitTime

End Sub

'
**********************************************************************************
Public Function 
goHTML(positionNomFichier)
 
'fonction de génération de la page html contenant le code du fichier de téléchargement
 
 Set MaPageHtml = IE.document
 
IE.navigate ("http://monacces/page2.asp?idsite=370")  '
page de saisie des informations

 
'Attendre l'affichage l'info htlm terminé
 Do Until IE.readyState = 4
 DoEvents
 Loop
 
Call PauseWait(2)
'
Selection de l'équipe ou 0 est le premier élément de la liste
Set HlmSelSite = MaPageHtml.getElementsByTagName("select")
HlmSelSite(1).selectedIndex = position
 

Set Hlmgo = MaPageHtml.getElementsByName("go").Item  '
Image fléche de validation données
Set Hlmddeb 
MaPageHtml.getElementsByName("ddeb").Item  'date de début
Set Hlmdfin = MaPageHtml.getElementsByName("dfin").Item '
date de fin

 
'Attendre l'affichage de l'info htlm terminé dans IE
 Do Until IE.readyState = 4
 DoEvents
 Loop

'
Saisie de la période d'extration des JA
Hlmddeb.Value = DateDebut
Hlmdfin.Value = DateFin

Set HlmImgok = MaPageHtml.getElementsByName("go").Item
HlmImgok.Click

'
Attendre l'affichage complet de la page demandée
 Do Until IE.readyState = 4
 DoEvents
 Loop
 
 Call PauseWait(15)
 
'
Repérage le l'URL du fichier dans le code html 

letxt = MaPageHtml.getElementsByTagName("a").Item(1).outerHTML

'
suppression de la chaine devant le numéro du fichier
letxt 
Replace(letxt"<A class=lienorange_10 href=""../upload/temp/extraction""")  

'suppression de la chaine après le numéro du fichier
letxt = Replace(letxt, ".txt"" target=_blank>Télécharger le fichier TXT</A>", "") 

lelien = " http://monacces/upload/temp/extraction" & letxt & ".txt"  '
constitution de l'URL de téléchargement

exfonct = sauvcalabrio(NomFichier, lelien)  '
recupération du fichier
Call PauseWait
(2)
End Function
Hors Ligne
Rapport   Haut 

« 1 2 3 4 »