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 :

Arrêter if lorsque la variable n'existe pas [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Arrêter if lorsque la variable n'existe pas
    BOnjour,
    J'ai fait des recherches sur le site mais je ne trouve rien sur mon problème.

    Probablement que c'est une question bien simple mais je suis loin d'être un expert en programmation.

    j'ai une macro qui va chercher des valeurs sur un site internet. Mon problème est que je ne sais pas combien de valeur le iedoc.all contient donc j'ai fait un for avec un nombre très élevé ( 5000 dans l'exemple ). Le problème est que quand le iedoc.all(x) n'existe plus, j'ai un message d'erreur.

    donc si mon site internet contient seulement 100 ligne quand mon for arrive à 101 j'ai un message d'erreur.

    Je cherche un code pour dire à la macro si iedoc.all(x).innertext N'existe pas, faire un exit for.

    C'est quand même difficilie à expliquer étant donner que je ne peux pas donner tout la macro. Si quelque chose n'est pas claire, n'hésitez pas a m'écrire.

    Merci et bonne journée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For x = 1 To 5000
     
            If ieDoc.all(x).innerText = "salairebrut" Then
                    a = ieDoc.all(x - 8).ID
                    Z = ieDoc.all(x).innerText
                    Exit For
            End If
            Next x

  2. #2
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    Tu peux très bien mettre au début de ta boucle.
    Cela dit quand on peut se passer de gérer des erreurs éventuelles on ne s'en prive pas.

    Car je je pense que tu t'y prends mal, en effet quand on travaille sur X éléments on peut utiliser le "GET" :
    getelementbyclassename
    getelementbyid
    etc...

    Tu as cela dans le tutoriel de qwazerty, et ce "get....." te donne le nombre d'éléments disponibles.
    A partir de la tu boucles de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i= 0 to ubound(get......)
    if get.....(i)="cequetuveux " then
    'reste du code 
    end if 
    next
    Si tu veux envoie une partie du code source où il y a les données que tu veux récupérer je te ferais un exemple.

    au plaisir

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci pour la réponse,

    c'Est exactement ce que je voulais.

    C'est sur que s'il y a moyen d'améliorer mes codes je suis toujours partant. J'ai joint un fichier avec 2 impression d'écran + mes lignes de code (dans le module 1)

    En passant le tutoriel qwazerty est vraiment bien c'est avec lui que j'ai réussi a faire mon programme malgré le fait que je n'avais presque jamais programmer.

    voici le code de la page web (voir en piece jointe car je ne sais pas comment l'insérer dans le texte.

    owa_reser_perso38 est la case à cocher que j'ai besoin.

    mais avant, je dois rechercher le terrain (ici c'est le terrain 3) et l'heure désirer. Je dois aussi vérifier s'il est disponible (donc vérifier si owa_no_client est vide).

    La raison pour la quel je fais un x allant jusqu'a 5000 c'est qu'il peut y avoir 4 terrains comme il peut y en avoir 20 donc je ne sais pas combien de ligne va avoir mon iedoc.all.

    quel serait ta solution pour empêcher l'erreur d'exécution lorsque les terrains demander ne sont pas disponible ??

    merci et bonne journée

    Voici mon code:

    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
    For x = 1 To 5000
            If ieDoc.all(x).innerText = "Terrain 3" Or ieDoc.all(x).innerText = "Terrain 4" Or ieDoc.all(x).innerText = "Terrain 5" Then
               If ieDoc.all(x - 6).Value = HRSUN Then  'vérification de l'heure
                  If ieDoc.all(x + 1).innerText = " " Then 'vérification de la disponibilité
                    a = ieDoc.all(x - 8).ID 'va chercher le nom de ma case à cocher
                    Exit For
                   End If
                End If
            End If
    Next x
     
     ieDoc.all(b).Click 'chose la case trouver dans la boucle 
     
    Sleep 1000
    ieDoc.parentWindow.execScript "javascript:valideEnregistrer();" 'enregistre
     
     
    1 Set IE = Nothing 'On libère la variable IE
     
    End Sub
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonjour,

    si tu veux rester dans ta boucle .. utiliser une boucle For .... each..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim oItem
    (..)
    For each oItem in ieDoc.all
            If oItem.innerText = "Terrain 3" Or ieDoc.all(x).innerText = "Terrain 4" Or ieDoc.all(x).innerText = "Terrain 5" Then
    (...)
     
    Next

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Un gros merci
    Je vous remerci enormement ma macro fonctionne parfaitement sans toujour m' envoyer d'erreur

    Tres bonne reponse

    Je vous souhaite bonne journee et bon temps des fetes

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

Discussions similaires

  1. [XL-2010] Code VBA pour ajout d'une date lorsqu'elle n'existe pas
    Par Jey14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/10/2013, 14h39
  2. Créer une variable de session si elle n'existe pas
    Par Augustule dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2011, 18h46
  3. [EasyPHP] warning si une variable n'existe pas
    Par gianni7033 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/09/2010, 18h59
  4. Réponses: 3
    Dernier message: 20/05/2009, 14h33
  5. Variable qui existe pas. Et alors?
    Par kalash_jako dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2006, 23h27

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