Probléme macro recup web-format date
	
	
		Bonjour le forum ,
J'ai un problème au niveau de mon code vba ,ce code permet la récupération d'informations sur le web , mais je rencontre un problème avec une donnée concernant le format date  donc après plusieurs essais de modifications que j'ai vu sur le net concernant les dates , je n'ai trouvé aucune solution donc je viens sollicité l' aide du forum.
Merci d'avance ,
Nico.
(Je vous met le code VBA en entier sachant que mon problème se situe tout à la fin ). ou même le fichier si vous le souhaitez pour que cela soit plus clair?
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 
 | Sub Traitement()
Dim vUrl As String
Dim D As String, NumCourse As String
    With Sheets("Accueil")
        D = .Range("E2").Text
        NumCourse = .ComboBox1.Text
    End With
    If Not IsNumeric(NumCourse) Then Exit Sub
    'URL de départ
    vUrl = "http://www.pmu.fr/pmu/servlet/pmu.web.servlet.www.infos.PerformancesDetaillesServlet?dd=" _
            & D & "&idc=" & NumCourse & "&np=1&ppd=0"
    'Traiter
    RecupChevaux vUrl
End Sub
 
Private Sub RecupChevaux(ByVal vUrl As String)
Dim IE As InternetExplorer
Dim O As Object, OI As Object, OIS As Object
Dim L As Long
 
    'Ouvre la page web dans IE de façon invisible
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = False
    'RAZ de la feuille
    ActiveSheet.Cells.Delete
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'Boucle sur l'ensemble des partants
    Do
        If vUrl = "" Then
            'Bouton "Suivant" sur la page Web ?
            For Each OI In IE.Document.Links
                If OI.Title = "Suivant" Then
                    vUrl = OI.href
                End If
            Next OI
        End If
        If vUrl = "" Then Exit Do   'Sortir à la fin
        'Ouvrir la page Web
        IE.Navigate vUrl
        Do Until IE.ReadyState = READYSTATE_COMPLETE
            DoEvents
        Loop
        'Détermine première ligne libre
        L = Cells(Rows.Count, 1).End(xlUp).Row + 3
        'Récup Nom du partant
        Set O = IE.Document.getElementsByTagName("H1")
        For Each OI In O
            L = L + 1
            With Cells(L, 1)
                .Value = OI.innerText
                .Font.Bold = True
                Application.StatusBar = .Value
            End With
        Next OI
        'Récup Détail du partant
        Set O = IE.Document.getElementsByTagName("P")
        For Each OI In O
            If OI.innerText <> " Retour à l'accueil de pmu.fr" Then
                Set OIS = OI.getElementsByTagName("span")
                L = L + 1
                With Cells(L, 1)
                    .Value = OIS.Item(0).innerText
                End With
                With Cells(L, 2)
                    .Value = OIS.Item(1).innerText
                End With
            End If
        Next OI
        L = L + 1
        Cells(L, 1) = "Gains 6 dernières courses"
        Cells(L, 2).Value = RecupPlusDetails(L, vUrl)
        vUrl = ""
    Loop
    Columns(1).AutoFit
    ActiveSheet.UsedRange.HorizontalAlignment = xlLeft
    Application.ScreenUpdating = True
    'Fermer IE
    IE.Quit
    Set IE = Nothing
    Application.StatusBar = False
End Sub
 
Private Function RecupPlusDetails(Lign As Long, vUrl As String) As String
Dim T As String
Dim L As Byte
    With Sheets("Tempo")
        .Cells.Delete
        With .QueryTables.Add(Connection:="URL;" & vUrl, Destination:=.Cells(1, 1))
            .Name = "LaRequete"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebTables = "1"
            .WebFormatting = xlWebFormattingNone ' xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = True
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
            .Delete
        End With
        For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 1, 3).Value) & "-" 'Recup Allocation
        Next L
        RecupPlusDetails = Left(T, Len(T) - 1)
        For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 2, 6).Value) & "-" ' recup Gains
        Next L
        RecupPlusDetails = Left(T, Len(T) - 2)
        For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 2, 1).Value) & "-" ' Recup Nb Partants
        Next L
        RecupPlusDetails = Left(T, Len(T) - 1)
        [B]For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 1, 1).Value) & "-" ' >>>>> Recup Date derniére course ( probléme) <<<<<<<<<<<<
        Next L
        RecupPlusDetails = Left(T, Len(T) - 1)
    End With
End Function | 
 
	 
	
	
	
		Extraire des dates dans une colonne en Excel VBA
	
	
		
	Citation:
	
		
		
			
				Envoyé par 
koni77
				 
			Ce que je souhaitais savoir c'est ce qu'on met pour en quelque sorte copier , coller une date car là c'est en .Value et ça ne marche pas.
			
		
	 
 Pour accéder à une date dans une cellule d'une feuille, on définit les constantes de rangée et de colonne où trouver la première date.
Voir ligne 4 la constante rowReleve et ligne 5 la constante colDate.
Dans le programme OnOffPeak(), on lit la cellule contenant la date par :
	Code:
	
| 12
 
 | Debug.Print Cells(rowReleve, colDate) ' Affiche la date dans la fenêtre d'Exécution immédiate (Ctrl+G)
' Cette date est contenue dans la cellule rowReleve, coLDate | 
 Voir ligne 29, le commentaire : ' Date du relevé.
	Citation:
	
		
		
			
				Envoyé par 
koni77
				 
			j'ai 21/08/2011 dans la recuperation des données
			
		
	 
 Où ? Dans quelle cellule : rangée et colonne ? E2 ?
	Citation:
	
		
		
			
				Envoyé par 
koni77
				 
			et lors du traitement je me retrouve avec juste 21.
			
		
	 
 Cela n'aide pas de dire "je". Préférez un nom de variable = une valeur ' un commentaire :
	Code:
	
| 12
 3
 4
 
 | L = 6 ' indice final de boucle sur les 6 courses
' La chaîne T concatène Allocation + Gains + Nb Partants + Date dernière course séparés par "-"
T = "27000-30000-60000-55000-55000-55000-13500-3000-3000-0-27500-8250-6-6-12-13-8-8-3-17-19-28-18-17-"
RecupPlusDetails = T sans le "-" final ' Chaîne retournée par la fonction RecupPlusDetails() | 
 Si vous vous retrouvez avec uniquement la chaîne de caractère "21" c'est :
- Soit à cause d'une erreur sur les coordonnées dûe à l'absence de déclaration de constantes définissant à partir de quelle rangée et quelle colonne on trouve la première date et la constante de pas ou incrément pour trouver la date suivante.
- Soit à cause du Web Query qui ne retrouve pas les dates des courses sur le site Web.
- Soit à cause du Web Query qui ne place pas les dates à l'endroit souhaité sur la feuille.
Pour chacune des six courses, L = 1 to 6 :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | Private Function RecupPlusDetails(Lign As Long, vUrl As String) As String
'...
        For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 2, 1).Value) & "-" ' Recup Nb Partants
        Next L
        RecupPlusDetails = Left(T, Len(T) - 1)
        For L = 1 To 6
            T = T & Val(.Cells(L * 3 + 1, 1).Value) & "-" ' Recup Date derniére course ( probléme)
        Next L
        RecupPlusDetails = Left(T, Len(T) - 1) ' Enlève le dernier "-"
    End With
End Function | 
 On voit un décalage d'une seule rangée  entre la récupération du Nb Partants et Date dernière course.
Autrement dit vous récupérez Date dernière course au-dessus d'un Nb Partants dans la même première colonne.
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 
 | L1C1:
L2C1:
L3C1:
L4C1: Date dernière course 1
L5C1: Nb Partants 1
L6C1:
L7C1: Date dernière course 2
L8C1: Nb Partants 2 | 
 Donnez la première colonne de la feuille Tempo sous une forme analogue entre les balises [code] et [/code].
Dans la trace, vous indiquez :
	Citation:
	
		
		
			
				Envoyé par 
koni77
				 
			Voilà ce qu'il me met : 27000-30000-60000-55000-55000-55000-13500-3000-3000-0-27500-8250-6-6-12-13-8-8-3-17-19-28-18-17-
$A$4 a $A$7
			
		
	 
 En découpant par paquet de 6 courses, on peut présenter ces données sous la forme :
	Code:
	
| 12
 3
 4
 
 | Allocation : 27000-30000-60000-55000-55000-55000-
Gains : 13500-3000-3000-0-27500-8250-
Nb Partants : 6-6-12-13-8-8-
Date dernière course : 3-17-19-28-18-17- | 
 Les trois RecupPlusDetails = Left(T, Len(T) - 1) qui enlève le séparateur "-" final en ligne 117, 121 et 125 ne servent à rien.
Seul le dernier en ligne 129 est pris en compte pour le résultat final :
	Code:
	
RecupPlusDetails = "...6-6-12-13-8-8-3-17-19-28-18-17" ' Chaîne finale retournée par la fonction RecupPlusDetails()
 La partie finale en rouge de cette chaîne de caractère ne ressemble pas à la concaténation de 6 dates.
A vous de voir s'il s'agit de Nb Partants. Dans ce cas les indices de rangés soulignés dans l'extrait de code sont à mettre au point.
___________
Si la discussion est résolue, vous pouvez cliquer sur le bouton :resolu: 
En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert http://www.developpez.net/forums/ima.../vote1left.gif ci-dessous.