IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment recuperer information page web dans une cellule ? (question 1)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut Comment recuperer information page web dans une cellule ? (question 1)
    Bonjour à tous,

    Étant fan d'aviation virtuel et de simulateur, je souhaiterais créer un tableau excel pour facilité la préparation de mes vols virtuels.
    Pour ce faire, j'aimerais dans un premier temps récupérer les infos météo d'une page internet pour l’aéroport de départ et celui d'arrivé.

    Dans la cellule B4, je rentre le code ICAO de l’aéroport de départ.
    Dans la cellule D4, je rentre le code ICAO de l’aéroport d'arrivé.

    La page internet qui détient les infos météo se trouve ici :

    "http://www.acukwik.com/AirportInfo/****"
    (**** = code ICAO)

    Exemple pour Brussel (ICAO : EBBR) :
    http://www.acukwik.com/AirportInfo/ebbr

    J'aimerai que excel reprend les informations "METAR" comme suit :

    cellule B11 pour l’aéroport de départ.
    cellule D11 celui de l'arrivé.

    (l'info metar est sous forme de texte comme cette exemple :
    "EBBR 122320Z 24013KT 9999 FEW015 09/06 Q1008 NOSIG"

    Vous trouverez ces données dans la rubrique Weather -> METAR de la page internet en question.

    Je suis débutant sur excel donc je ne connais pas grand chose dans les macros.

    PS : Pour les curieux qui souhaiterait savoir ce que c'est un metar, voici l'explication

    LFST 122300Z AUTO 17010KT 9999 BKN042 OVC052 09/06 Q1013

    Eléments Décodage
    LFST : Station météo située sur l'aérodrome de STRASBOURG Entzheim
    122300Z : émis le 12 du mois à 23h00 UTC
    AUTO : Bulletin édité par un automate
    17010KT : vent du 170°, 10 noeuds
    9999 :visibilité horizontale supérieure à 10 Km
    BKN042 : nuages morcelés (5/8 à 7/8) à 4200 pieds
    OVC052 : couverture nuageuse totale (8/8) à 5200 pieds
    09/06 : température 09°C, point de rosée 06°C
    soit une humidité relative de 81%
    Q1013 : la pression au niveau de la mer est de 1013 hPa


    Si quelqu'un pourrais me programmer ou me donner les informations utiles pour le créer ca serait vraiment sympa

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour.

    J'ai déjà un code sous le coude mais par exemple pour récupérer l'info en B11 cela efface les cellules A11, A12 & B12 …

    Sinon il faut m'indiquer une plage libre de 4 cellules sur 2 lignes & 2 colonnes (ex Y1:Z2).



  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Le mieux c'est que je vous donne mon tableur ci-joint, il y a encore une autre question qui est posé dans ce tableur
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Désolé, là je ne peux pas télécharger, donc une réponse à ma question serait utile pour la suite …

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    m4; n4; m5; n5

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    OK pour M4:N5, voir la procédure Demo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    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
    Sub METAR(ICAO As String, Rg As Range)
        If ICAO = "" Then Exit Sub
        On Error Resume Next
     
        With Rg.Parent
            With .QueryTables.Add("URL;http://www.acukwik.com/AirportInfo/" & ICAO, .[M4])
                   .AdjustColumnWidth = False
                          .FieldNames = False
                  .PreserveFormatting = True
                       .RefreshPeriod = 0
                        .RefreshStyle = xlOverwriteCells
                    .WebSelectionType = xlSpecifiedTables
            .WebSingleBlockTextImport = True
                           .WebTables = "16"
            .Refresh False
            .Delete
            End With
     
            Rg.Value = .[N4]
            .[M4:N5].ClearContents
        End With
    End Sub
     
     
    Sub Demo()
        Application.ScreenUpdating = False
         METAR [B4], [B11]
         If [D4] = [B4] Then [D11] = [B11] Else METAR [D4], [D11]
        Application.ScreenUpdating = True
    End Sub

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Merci pour le macro mais comment dois-je faire maintenant avec ceci?
    Malheureusement je n'ai jamais utilisé ces macros car j'utilise rarement excel.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Un grand merci pour ton aide et ton efficacité
    Ca fonctionne trés bien

    Par compte pour certaine station de méteo ca indique "FREQUENCY" au lieu d'indiquer le metar, probablement soit dù à une erreur dans le macro ou soit une indisponibilité du metar sur le site. (A vérifier...). ICAO : LFBO

    J'aimerai remplir deux autres cellules du même genre mais je pense que ca sera un peu plus complexe cette fois-ci:

    Via le site : http://rfinder.asalink.net/free/

    Cellule B4 = Departure
    Cellule D4 = Destination

    Cellule J7 (sous forme de bouton)= Désaffecter "use SID's"
    Cellule K7 (sous forme de bouton)= Désaffecter "use STAR's"

    Cellule K19 (sous forme de bouton)= Valider "Find Route" + insérer les données de la page suivante :

    Cellule F4 = Résultat de la route (Dernier ligne avant "back"
    Cellule H4 = Nombre de "nautical miles" (A la fin de la ligne qui commence par Computed route from.....)


    Exemple à prendre pour EBBR vers LFKJ avec SID et STAR sélectionné :
    Résultat de la route = "EBBR SID ROUSY UT27 GTQ UQ343 ODINA UN850 IXITO UL50 UNITA UM858 TORTU STAR LFKJ"
    Nombre de "nautical miles" = "589.5 nautical miles"


    Oups, je pense que là, j'en demande un peu trop ....

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bon ben pour LFBO, comme je m'en doutais, ce n'est pas le même indice de table utilisé dans le premier exemple …

    Afin de ne pas réinventer la roue, je vais m'inspirer d'un de mes anciens codes mais je dois lui remettre la main dessus …

    Donc là je n'aurais même pas besoin de M4:N5 !

    A suivre …

    Pour le reste je n'ai pas bien saisi le désaffecter mais comme je n'ai pas encore jeté un œil sur le site, patience donc !


    Une p'tite adaptation de mon premier jet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub METAR(ICAO As String, Rg As Range)
        If ICAO = "" Then Exit Sub Else Set Wb = Workbooks.Add
        On Error Resume Next
     
        With Wb.Sheets(1)
            With .QueryTables.Add("URL;http://www.acukwik.com/AirportInfo/" & ICAO, .[A1])
                 .AdjustColumnWidth = False
                        .FieldNames = False
                .PreserveFormatting = True
                      .RefreshStyle = xlOverwriteCells
                .Refresh False
            End With
     
            Set Rf = .UsedRange.Find("METAR:", , xlValues, xlWhole)
            If Not Rf Is Nothing Then Rg.Value = Rf.End(xlToRight)
        End With
     
        Wb.Close False
    End Sub

    Quant au second site, il ne s'agit plus de rapatrier des données mais de contrôler la navigation d'un site,
    voie dans laquelle je ne m'engagerais pas.

    Je t'invite plutôt à consulter par exemple l'article Manipulation d'Internet Explorer via VBA

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut
    Merci pour ce fabuleux travail, j'ai pris contact avec celui qui as édité le tutoriel dont vous me faites part, j’attends réponse de sa part.
    Concernant le dernier code que vous venez de me donner, que dois-je en faire? Remplacer l'ancien par celui-là ou ajouter celui-là a la suite de mon ancien code?
    Bien à vous

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Comme la procédure a le même nom, c'est donc un remplacement …

    La procédure Demo ne change pas.


Discussions similaires

  1. Afficher une page web dans une autre page sans frame
    Par bahs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/03/2006, 17h51
  2. [VB]stocker des données de pages web dans une base
    Par tofito dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/02/2006, 11h02
  3. Comment recuperer un valeur envoyé dans une URL
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/12/2005, 11h28
  4. [VB ou C++] intégration d'une page web dans une application
    Par devmat dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/10/2005, 15h14
  5. integrer une page web dans une autre
    Par ma_mat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 08/11/2004, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo