detbour
Messages postés11Date d'inscriptionjeudi 19 juin 2008StatutMembreDernière intervention19 septembre 2009
-
8 nov. 2008 à 19:20
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
9 nov. 2008 à 16:29
Bonjour
Je voudrais savoir si il est possible de recuperer des données d'une page web avec vba, et de les enregistrer dans excel.
les données seraient du style calendrier de match, compositions d'equipe, etc....
Si oui je voudrais quelque explications pour le proceder ou de la doc merci.
Meme un petit exemple se serait sympas pour etudier le fonctionnement.
Merci a tous.
Private Declare Function
DeleteFile
Lib
"kernel32"
Alias
"DeleteFileA"
(
ByVal
lpFileName
As String
)
As Long
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
Function GetStringSourceFromOnlineFile(ByVal
sUrl As String) As String
' récupère un nom de fichier temporaire
Dim sTempDest As String
sTempDest = GetUniqueTempFileName '
http://www.codyx.org/snippet_generer-nom-fichier-temporaire-unique_619.aspx#1876 ' télécharge la page
If URLDownloadToFile(0&, sUrl, sTempDest, 0&, 0&) = 0
Then
' on lit le
fichier
Dim FF As Integer
FF = FreeFile
Open sTempDest For Input As #FF
GetStringSourceFromOnlineFile = Input(LOF(FF), 1)
Close #FF
' supprime le fichier temp
Call DeleteFile(sTempDest)
End If
End Function
Private Function
MyMid(
ByRef
Expression
As String
, sLeft
As String
, sRight
As String
,
Optional
Start
As Long
=
1
)
As
String
Dim lPosL As Long, lPosR As Long lPosL InStr(Start, Expression, sLeft): lPosR InStr(lPosL + 1, Expression,
sRight)
If lPosL > 0 And lPosR > 0 Then
MyMid = Mid$(Expression, lPosL + Len(sLeft), lPosR - lPosL - Len(sLeft))
Else
MyMid = vbNullString
End If
End Function
'EXEMPLE D'UTILISATION
Private Sub Form_Load()
Dim sStr As String
MsgBox MyMid("
machin
", "'>", "</")
Unload Me
End Sub
Function
MultiSplit(
ByVal
sStr
As String
, bKeepSepar
As Boolean
,
ParamArray
aArray())
As String
()
' sStr -> chaîne à parser
' bKeepSepar -> garder ou non les caractères de
référence
' aArray -> tableau des
références de taille variables
Dim sCol As New Collection
Dim sChar As String, sLeft As String
Dim bFound As Boolean
Dim aRes() As String
Dim i As Integer, j As Integer, NbCarac As
Integer
i = 0
While LenB(sStr) > 0
i = i + 1
bFound = False
For j = LBound(aArray) To UBound(aArray)
NbCarac = Len(aArray(j))
sChar = Mid$(sStr, i, NbCarac)
If sChar = CStr(aArray(j)) Then bFound = True: Exit
For
Next j
If bFound Then
sLeft = Left$(sStr, i - 1)
If LenB(sLeft) > 0 Then sCol.Add sLeft
If bKeepSepar Then sCol.Add sChar
sStr = Right$(sStr, Len(sStr) - (NbCarac + (i - 1)))
i = 0
ElseIf sChar = vbNullString Then
sCol.Add sStr
sStr = vbNullString
End If
Wend
ReDim aRes(sCol.Count - 1)
For i = 1 To sCol.Count
aRes(i - 1) = sCol.Item(i)
Next i
MultiSplit = aRes
Set sCol = Nothing
Erase aRes
End Function
' EXEMPLE D'UTILISATION
Private Sub Form_Load()
Dim a$(), i%
a = MultiSplit( _
"Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean,
ParamArray aArray()) As String()", _
False, "(", ")", ",", "String", " ")
For i = 0 To UBound(a)
Debug.Print "_" & a(i) & "_"
Next i
End Sub