Extraction de données depuis le WEB

Bonjour à tous,

Après de nombreuses recherches, je ne trouve aucune solution à mon problème. Je me tourne vers vous, si quelqu'un à une piste .

Voila j'extrait des résultats de courses à partir d'un site. Jusque là tout va bien.

Mon probleme :

-> Sauf que certains résultats sont sous la forme "6-5-7"

quand je procède à l'extraction ils "arrivent" sur excel au format date : "6 Juin 2007" en m'inversant les deux premiers numéros. La données brute dans la cellule est 6/7/2007 et se trouve en colonne "B"....

Mon objectif:

Concerver le résultat en chiffre : type " 6-5-7" ou "6 5 7" tant que j'ai les bons numéros ca me va !

J'ai essayé de remplacer les "/" par des "|" et "/20" après la procédure par des "|"mais le problème c'est que je n’obtiens pas les bons résultats...

ci dessous mon code... si quelqu'un à une astuce ... j'ai aussi essayé de jouer avec les argument de QueryTables sans résultats positifs...

Columns("B:B").Select
    Selection.NumberFormat = "@"
            With ActiveSheet.QueryTables.Add(Connection:= _
                          "URL;" & course _
                        , Destination:=Range("$B$2"))
                        '.CommandType = 0

                      .BackgroundQuery = True
                     .TablesOnlyFromHTML = False
                     .Refresh BackgroundQuery:=False
                     .WebFormatting = xlWebFormattingAll
                     .WebDisableDateRecognition = True
                     .WebFormatting = xlWebFormattingNone
                     '.WebConsecutiveDelimitersAsOne = True
                     'WebSingleBlockTextImport = True

            End With

Bonjour

C'est curieux.

"6-5-7" et 6 juin 2007 n'ont pas de point commun.

Peux-tu joindre un fichier avec des données brutes, telles que importées depuis ton site ?

Bye !

Bonjour et merci de la réponse ,

C'est vrai, l'inversement est assez rare ceci dit.

J'ai contourné le problème en intégrant un recherche et remplacer dans mon code mais je souhaites pouvoir avoir les résultats brutes directement sous le bon format ça éviterais les erreurs !!

(CF Fichier joint)

24resultats.xlsx (82.89 Ko)

En fait c'est quand je fais le recherche et remplace que ca m'inverse les deux premiers chiffres ,

Exemple

Les numéros à extraires sont 6-7-8

Excel me les converties en date du type 6/07/2008

J’exécute un recherche et remplace : Remplacer "/" par "|" pour "casser" le format date...

Mon problème est ici :

J'obtiens un inversement des deux premiers numéros de type : 7|06| 2008 (au lieu de 6|07|2008)

Je ne vois pas trop ce que tu veux convertir dans ton fichier.

Je te propose donc d’ouvrir le fichier ci-joint ainsi que le fichier dans lequel tu veux convertir les dates.

Les dates proviennent d’une importation, elles sont donc vraisemblablement au format américains pour les mois inférieurs à 12 : ‘’mois/jour/année’’ et au format normal pour les autres.

Mais comme la transformation est partielle, il n’est pas possible de savoir lesquelles ont été modifiées.

Donc, si tu veux inverser les nombre correspondant aux jours et aux mois, tu sélectionnes les cellules concernées et tu tapes simultanément sur les touches Ctrl et i (i comme inversé)

Tu actionneras alors une macro qui te donneras les nombres inversés

Si tu ne veux pas les inverser, tu tapes simultanément sur les touches Alt et c (c pour convertir)

Cela te convient-il ?

Bye !

15classeur1-v1.xlsm (25.80 Ko)

Merci pour votre retour, je n'y avais pas pensé... ca marche pas trop mal en effet !

Dans un premier temps, J'ai adapté le code de la manière suivante :

for Each c In Selection
        If IsDate(c) And c <> "" Then
            c = Day(c) & " " & Month(c)  'extraction des deux premiers chiffres pour les résultats
        End If
    Next c

Puis, comme ceci :

si l'année = 2017 alors on affiche uniquement le jour et le mois

si l'année <> 2017 alors on affiche le jour , le mois et l'année - 2000. se qui donne :

    For Each c In Selection
        If IsDate(c) And c <> "" And Year(c) = 2017 Then
            c = Day(c) & " " & Month(c)
        End If
        If IsDate(c) And c <> "" And Year(c) <> 2017 Then
            c = Day(c) & " " & Month(c) & " " & Year(c) - 2000
        End If
    Next c

Le but étant de pouvoir faire la distinction entre le nombre de numéros

si deux numéros : excel me renvoie l'année à 2017 du coup j'extrait uniquement le jour et le mois

si trois numéros : excel me renvoie l'année correspondant au dernier chiffre ( 4-6-7 devient 4 Juin 2007 ) du coup jeremplace le 2007 par 2007 - 2000 et j'obtiens 7 pour l'année ...

-> Seul soucis si j'ai un chiffre supérieur à 12 en deuxième position (tres rare)

en tout cas merci pour ton aide !

Autre question dans le même topic :

J'ai une chaine de chiffre de type 1-6-11-12-25

Je souhaite extraire les chiffres entre les "-" afin de placer chaque chiffre dans une cellule .

Exemple :

1-6-11-12-25 Placer 1 en " A1", 6 en "A2" , 11 en "A3" .... etc

office.excel a écrit :

Seul soucis si j'ai un chiffre supérieur à 12 en deuxième position

Ce chiffre correspond au jour du mois dans la date au format américain : mois/jour/année

C'est donc le 1er des nombre que tu cherches.

office.excel a écrit :

1-6-11-12-25 Placer 1 en " A1", 6 en "A2" , 11 en "A3" .... etc

Voir PJ

25decomposer-v1.xlsm (22.74 Ko)

Ah parfait c'est le "split" que je n'avais pas !

Merci bien !

Rechercher des sujets similaires à "extraction donnees web"