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 :

code ne marche qu'en pas à pas détaillé


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de fuine0069
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 33
    Points : 42
    Points
    42
    Par défaut code ne marche qu'en pas à pas détaillé
    Bonjour,

    ci dessous un code qui à priori fonctionne lorsque je fais le pas à pas détaillé (même en restant appuyer sur F8) mais lorsque je fais fonctionner le code en mode normal, il ne me met pas le résultat dans la cellule,

    en espérant que vous pourrez m'aider sur le sujet.

    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
    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
     
    Sub premierIE()
     
    Set WB = ActiveWorkbook
    Set WS = WB.Worksheets("préavis")
    unifstatut = "31/12/2013" 'définition de la date de l'unification des statuts
     
    Set IE = CreateObject("InternetExplorer.Application") 'définition de IE
     
    'Check d'abord sur les champs renseignés si tout est bien rempli
    If WS.Cells(3, 2) = "" Then
    MsgBox "Veuillez entrer une date d'entrée svp", vbOKOnly + vbInformation, "date d'entrée"
    Exit Sub
    End If
     
        If WS.Cells(3, 2) < unifstatut And Cells(10, 2) = "" Then
        MsgBox "Veuillez mentionner les données salariales svp", vbOKOnly + vbInformation, "entrée avant le 31/12/2013"
        Exit Sub
        End If
     
            If WS.Cells(4, 2) = "" Then
            MsgBox "Veuillez entrer une date de sortie svp", vbOKOnly + vbInformation, "date de sortie"
            Exit Sub
            End If
     
                If WS.Cells(5, 2) = "" Then
                MsgBox "Veuillez entrer un type de sortie svp", vbOKOnly + vbInformation, "type de sortie"
                Exit Sub
                End If
     
     
    IE.navigate "http://www.opzegging.be/ECMS_CLIENT/configuration/pages/calculator.php"
    WaitIE IE 'Wait
    IE.Visible = True 'affichage ou non
    WaitIE IE 'Wait
     
    'on pointe le membre document
    Set IEDoc = IE.document
    WaitIE IE
     
    'on pointe la zone de nom et écrit le texte à l'intérieur
    Set InputEcaroZoneTexte = IEDoc.all("naam")
    InputEcaroZoneTexte.Value = "test"
     
    'idem date d'entrée
    Set InputEcaroZoneTexte2 = IEDoc.all("datum_indiensttreding")
    InputEcaroZoneTexte2.Value = WS.Cells(3, 2)
     
    'idem date de sortie
    Set InputEcaroZoneTexte3 = IEDoc.all("datum_ontslag")
    InputEcaroZoneTexte3.Value = WS.Cells(4, 2)
    DoEvents
     
    'si démission coche démission, sinon coche licenciement
    If WS.Cells(5, 2) = "démission" Then
    Set InputEcaroZoneTexte4 = IEDoc.all("ontslaggever_0")
    InputEcaroZoneTexte4.setAttribute "checked", True
    Else
    Set InputEcaroZoneTexte4 = IEDoc.all("ontslaggever_1")
    InputEcaroZoneTexte4.setAttribute "checked", True
    End If
     
    'selection des cas possibles
    Select Case WS.Cells(3, 2)
        Case Is < unifstatut And WS.Cells(5, 2) = "démission"
            Call cas1 'entrée avant unification + démission
        Case Is < unifstatut And WS.Cells(5, 2) <> "démission"
            Call cas2 'entrée avant unification + licenciement
        Case Is > unifstatut And WS.Cells(5, 2) = "démission"
            Call cas3 'entrée après unification + démission
        Case Is > unifstatut And WS.Cells(5, 2) <> "démission"
            Call cas4 'entrée après unification + licenement
    End Select
     
    WaitIE IE
     
    'fermeture page
    IE.Quit
    Set IE = Nothing
    Set IEDoc = Nothing
     
    End Sub
     
     
    Sub WaitIE(IE As InternetExplorer)
    Do Until IE.readyState = 4
        DoEvents
    Loop
    While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy = True
        DoEvents
    Wend
    End Sub
     
    Sub cas1()
     
    If WS.Cells(16, 2) < 32254 Then
    Set InputEcaroZoneTexte4 = IEDoc.all("arbeiderbediende_1")
    End If
    If WS.Cells(16, 2) > 32255 And WS.Cells(16, 2) < 64508 Then
    Set InputEcaroZoneTexte4 = IEDoc.all("arbeiderbediende_2")
    End If
    If WS.Cells(16, 2) > 64509 Then
    Set InputEcaroZoneTexte4 = IEDoc.all("arbeiderbediende_3")
    End If
    InputEcaroZoneTexte4.setAttribute "checked", True
     
    WaitIE IE 'Wait
    'on pointe notre bouton et click dessus
    Set InputEcaroBouton = IEDoc.all("calculate")
    InputEcaroBouton.Click
     
    WaitIE IE 'Wait
     
    'on prend le résultat et le transpose dans l'excel
    WS.Cells(3, 4) = IEDoc.body.all(271).innerText
     
    End Sub

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je pencherai pour un problème de temporisation à faire, ou d'exécution des tâches externes à gérer

    Mais des Wait simples et des DoEvents aux endroits où tu lances ou récupère une tâche dans l'instance IE (pas lors de la navigation).
    Si ça fonctionne, supprime ces temporisations une par une pour trouver les "moments" où ils sont nécessaires

  3. #3
    Membre du Club Avatar de fuine0069
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 33
    Points : 42
    Points
    42
    Par défaut
    merci Joe
    effectivement j'ai testé un peu partout et j'ai un endroit où je dois laisser un sleep 500 pour continuer à faire tourner le code

    mais j'ai trouvé un autre souci qui ne se pose pas en pas à pas détaillé mais bien en normal
    il bloque à ce niveau de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IE.navigate "http://www.opzegging.be/ECMS_CLIENT/pages/setlang.php?lang=fr"
    WaitIE IE
    IE.navigate "http://www.opzegging.be/ECMS_CLIENT/configuration/pages/calculator.php"
    WaitIE IE 'Wait
    et il reste calé sur le DoEvents du WaitIE IE et je vois que le sur IE.readystate = 1
    alors qu'en pas à pas détaillé, il avance bien...

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    WS.Cells(3, 2) < unifstatut ou WS.Cells(3, 2) < DateValue(unifstatut) ?

    cette adresse ne fonctionne pas : http://www.opzegging.be/ECMS_CLIENT/...ng.php?lang=fr

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Alors là, sans aucune garantie car je suis pas un expert du VBA/IE :

    - ajoute un paramètre optionnel à ta procédure WaitIE qui n'est utilisé que pour charger la page en français
    - ce paramètre est à utiliser dans ta boucle Do/Loop : tu fais un compteur qui va tenter X fois de passer en statut 4
    - au delà du compteur, tu forces l'état OK pour revenir à ta procédure appelante et charger ta calculatrice

    regarde si au final tu arrives bien sur la calculatrice en français.

    en fait, en testant manuellement (écrire dans la barre d'adresse) l'adresse pour basculer le site en Fr, ça ne fonctionne pas.
    Si tu passes par la page d'accueil et que tu cliques sur l'icône FR, la page se recharge mais ne conserve pas l'URL avec le setlang.php?lang=fr
    Ce qui me laisse à penser que le statut 4 n'est jamais atteint, même si la page se rafraîchit en langue française.

    #ApprentiSorcier

    EDIT : sinon, plutôt que cette usine à gaz que je viens de pondre, peut-être plutôt simuler le clic sur l'icone FR (à retrouver dans le DOM) et retester le statut de la page d'accueil plutôt ?

Discussions similaires

  1. Code qui marche sous Firefox mais pas sous Safari
    Par lorilan dans le forum jQuery
    Réponses: 0
    Dernier message: 21/01/2011, 21h27
  2. Pas à pas hyper détaillé
    Par Syntaxe error dans le forum Contribuez
    Réponses: 1
    Dernier message: 03/01/2010, 21h07
  3. [DOM] Code qui marche sous IE mais pas sous Firefox
    Par angoradefrance dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/03/2009, 14h29
  4. code qui marche sur firefox et pas sur IE7
    Par taka10 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/03/2007, 11h59
  5. Code qui marche, mais pas la mise à jour
    Par Cablan dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 17h09

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