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 :

VBA EXCEL: Piloter un formulaire Web [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    expert pack office excel VBA
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : expert pack office excel VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut VBA EXCEL: Piloter un formulaire Web
    Bonjour le forum,

    je viens à vous aujourd'hui car je dois avouer que j'ai besoin de vous.

    Je vous explique la situation :

    J'avais réalisé une série de macro permettant de remplir automatiquement un formulaire Web contenant des champs texte, de date et bouton radio.
    Jusque lors tout fonctionnait à merveille jusqu'à ce que l'éditeur du site décide de changer le cours des choses et particulièrement les dates.

    Aujourd'hui sur ce site, les dates peuvent être saisies manuellement sous la forme dd/mm/yyyy ou en utilisant un petit calendrier.
    J'ai modifié ma macro de façon à saisir automatiquement la date sous ce format-là. A priori la saisie fonctionne mais lorsque le formulaire est soumis, la date est refusée.
    Je peux faire accepter la soumission manuellement si je vais manuellement valider la date sur le calendrier du formulaire.

    J'ai donc essayer de faire cette validation en VBA en simulant un clic sur le bouton calendrier. Le clic se fait effectivement mais le site refuse toujours la soumission.
    Idéalement, il faudrait, je pense, que VBA valide la date souhaitée via le calendrier mais cela je ne sais pas le faire.

    En tout cas si quelqu'un à une idée et peut m'aider je suis tout à fait preneur.

    Je vous donne en PJ quelques éléments mais n'hésitez pas à me dire ce qu'il vous faut si vous en souhaitez plus :
    - Copie d'écran du formulaire
    - Copie d'écran du code HTML associé
    - Bout de code VBA que j'ai réalisé qui ne permet pas la validation du formulaire;

    D'avance merci !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Set InputJourNaissance = IEDoc.all("form_declaration:champ_date_naissance")
        Set InputBoutonDateNaissance = IEDoc.all("trigger_form_declaration:champ_date_naissance")
        InputJourNaissance.Value = Format(Day(.Range("E" & LigneRUP)) & "/" & Month(.Range("E" & LigneRUP)) & "/" & Year(.Range("E" & LigneRUP)), "dd/mm/yyyy")
        InputBoutonDateNaissance.Click
     
        If WaitIE(IE, 10) = True Then
            MsgBox "Le site ne se charge pas"
            Exit Sub
        End If
    Images attachées Images attachées     

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    J'ai testé le bout de code suivant, qui semble fonctionner :
    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
    Sub TestURSSAF()
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim InputJourNaissance As Object
        IE.Visible = True
        IE.navigate "https://www.due.urssaf.fr/declarant/formulaireDueLibre.jsf"
        Call WaitIE(IE)
        Set IEDoc = IE.document
        Set InputJourNaissance = IEDoc.getElementsByName("form_declaration:champ_date_naissance")
        InputJourNaissance.Item.Value = "21/10/1980"
    'Ajouter ici la suite des traitements...
        IE.Quit
        Set IEDoc = Nothing
        Set IE = Nothing
    End Sub
    Je n'ai pas essayé de valider la page car il faudrait que je remplisse tous les champs...
    Précisez si cela conduit à une erreur lorsque vous exécutez votre code complet.

    Cordialement

  3. #3
    Membre à l'essai
    Homme Profil pro
    expert pack office excel VBA
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : expert pack office excel VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut
    Merci Ben,

    mais c'est exactement le code que j'ai mis en place.
    D'apparence cela foncitonne bien puisque la date s'inscrit dans un format à priori acceptable.
    Mais au moment de valider la saisie, le site refuse car la date n'est pas reconnue.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    c'est simple tu ne peux pas c'est justement une protection pour éviter les fraudes et mal entendus
    si le input text n'a pas été cliquer pour Edition le innertext est sans valeur même si tu injecte par vba des bonnes valeurs
    ou si le remplissage ne vient pas de la fonction déclenchée par le calendrier
    autrement les valeur sont prises en compte que si la page web est active et que les éléments ont été pointés par la souris

    on peut tricher en faisant un clik pour rien sur l'element des fois ca marche sinon c'est rapé

    j'ai tout dis
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    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,

    parfois il suffit juste de donner le focus à l'élément ou encore déclencher un de ses évènements,
    bref de l'observation doit naître la solution …

    ___________________________________________________________________________________________________________
    Je suis Paris, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Bonjour,

    parfois il suffit juste de donner le focus à l'élément ou encore déclencher un de ses évènements,
    bref de l'observation doit naître la solution …


    salut marc c'est exactement ce que je voulais dire quant je parlais de clik pour rien, ca trompe la protection JS "onwindow"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Je n'arrive pas à valider la date que j'entre dans la boîte en une seule fois. Et je ne comprends pour l'instant pas pourquoi.
    Mais si le côté redondant du code ci-dessous ne vous rebute pas trop, il m'a l'air d'être fonctionnel :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub TestURSSAF()
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim InputJourNaissance As Object
        IE.Visible = True
        IE.navigate "https://www.due.urssaf.fr/declarant/formulaireDueLibre.jsf"
        Call WaitIE(IE)
        Set IEDoc = IE.document
        With IEDoc
            With .getElementsByName("form_declaration:champ_date_naissance").Item
                .Click
                .Focus
                .Value = "21/10/1980"
                Call WaitIE(IE)
            End With
            With .parentWindow
                .execScript "ctrlDateNaissance('form_declaration','champ_date_naissance','champ_date_naissance_msgFor','Format invalide','Age du salarié inférieur à 14 ans.','Age du salarié supérieur à 70 ans.')", "JavaScript"
                Call WaitIE(IE)
                .execScript "updateDateNaissance('form_declaration','champ_date_naissance','date_naissance_dd', 'date_naissance_mm','date_naissance_aaaa')", "JavaScript"
                Call WaitIE(IE)
            End With
            Application.SendKeys "~", True
            Call WaitIE(IE)
            With .getElementsByName("form_declaration:champ_date_naissance").Item
                .Click
                .Focus
                .Value = "21/10/1980"
                Call WaitIE(IE)
            End With
            With .parentWindow
                .execScript "ctrlDateNaissance('form_declaration','champ_date_naissance','champ_date_naissance_msgFor','Format invalide','Age du salarié inférieur à 14 ans.','Age du salarié supérieur à 70 ans.')", "JavaScript"
                Call WaitIE(IE)
                .execScript "updateDateNaissance('form_declaration','champ_date_naissance','date_naissance_dd', 'date_naissance_mm','date_naissance_aaaa')", "JavaScript"
                Call WaitIE(IE)
                .Focus
            End With
            Application.SendKeys "~", True
            Call WaitIE(IE)
            With .getElementsByName("form_declaration:champ_dept_naiss").Item
                .Click
                .Focus
            End With
        End With
     
    'Ajouter ici la suite des traitements...
        IE.Quit
        Set IEDoc = Nothing
        Set IE = Nothing
    End Sub
    Faîtes-moi part des résultats de vos essais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] VBA EXCEL pilote BO
    Par JFTIDDU dans le forum SDK
    Réponses: 2
    Dernier message: 30/07/2009, 14h55
  2. VBA excel : piloter BdD access et y importer fichier CSV
    Par hnokia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2007, 17h30
  3. [VBA Excel] Piloter PowerPoint
    Par SilkyRoad dans le forum Contribuez
    Réponses: 2
    Dernier message: 07/03/2007, 05h14
  4. [VBA Excel] Quitter le formulaire actuel
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2006, 18h57
  5. [vba-excel] Affichage de formulaire
    Par decour dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2005, 11h04

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