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 :

probleme avec la commande GoTo


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Par défaut probleme avec la commande GoTo
    Bonjour,
    Je voudrais effectuee une analyse systematique de ce que l'utilisateur de mon programme a choisi dans une listbox (nommee Rphrases). s'il a presse telle ligne il renvoie une certaine valeur dans une boite de texte (Cosshcat), s'il a presse une autre ligne il renvoie une autre valeur et ainsi de suite. Malheureusement, le code que j'ai ci-dessous ne fonctionne pas et me donne l'erreur suivante:
    "compile error
    label not defined" avec la ligne GoTo rcosshcat4 surlignee.
    Pourriez vous m'aidez sur ce point ou eventuellement me dire si ca n'est pas la meilleure facon d'analyser les resultats d'une listbox.
    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
    If Rphrases.Selected(35) Or Rphrases.Selected(37) _
    Or Rphrases.Selected(64) Or Rphrases.Selected(66) _
    Or Rphrases.Selected(83) Then
        If Val(CosshCat.Text) = 0 Then
        CosshCat.Text = ("5")
        End If
    Else: GoTo rcosshcat4
    End If
    
    rcoshhcat4:
                If Rphrases.Selected(19) Or Rphrases.Selected(20) _
                Or Rphrases.Selected(69) Or Rphrases.Selected(70) _
                Or Rphrases.Selected(71) Or Rphrases.Selected(72) _
                Or Rphrases.Selected(20) Then
                    If Val(CosshCat.Text) > 4 Then
                    CosshCat.Text = ("4")
                    End If
                Else:
                GoTo rcosshcat3
                End If
                etc...
    Merci d'avance.

    Fred.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Bonjour,

    Vérifie ton orthographe rcosshcat4 et rcoshhcat4:

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Je ne vois pas l'intégralité de ton code, mais il me semble que tu peux évoter tous ces goto gênants à divers titres (par un select case, par exemple)...

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Par défaut
    En ajoutant les deux points, j'ai toujours le meme probleme.
    Fred

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    le problème ne vient pas des 2 points
    rcosshcat4 et rcoshhcat4 ne sont pas écrits pareils

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Un conseil : Suis les conseils d'ucfoutu
    L'utilisation de goto dans le code est la pire des façons de programmer. On les réserve pour la gestion d'erreurs et encore, seulement quand ces erreurs imposent une sortie de procédure.
    Enfin, dans une boucle, les goto saturent la pile, ce qui peut avoir pour effet de planter l'application, en l'occurence Excel, et pas seulement la macro. Bref, dans ce cas là, si des modifs ont été réalisées, tu les perds.
    Juste un conseil en passant.

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Par défaut
    A David: effectivement,c'etait bien une erreur de frappe Coshh au lieu de cossh. c'est le genre d'erreur qu'on ne voit plus apres un certain temps.
    et ca fonctionne plutot bien.

    j'ai maintenant essaye de faire passer la boucle logique avec un select case et ca ne marche pas aussi bien. je l'avais considere avant mais je ne voyais pas comment faire pour inclure les deux conditions (quelle ligne de combobox lutilisateur a selectionne et quelle est la valeur dans la boite de texte).
    voici ce que j'avais ecris:
    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
    Select Case Rphrases.Selected(i)
    Case Is = Rphrases.Selected(35) Or Rphrases.Selected(37) _
    Or Rphrases.Selected(64) Or Rphrases.Selected(66) _
    Or Rphrases.Selected(83)
        If Val(CosshCat.Text) = 0 Then
        CosshCat.Text = ("5")
        End If
     
    Case Is = Rphrases.Selected(19) Or Rphrases.Selected(20) _
                Or Rphrases.Selected(69) Or Rphrases.Selected(70) _
                Or Rphrases.Selected(71) Or Rphrases.Selected(72) _
                Or Rphrases.Selected(20)
                    If Val(CosshCat.Text) > 4 Then
                    CosshCat.Text = ("4")
                    End If
     
     
    Case Is = Rphrases.Selected(22) Or Rphrases.Selected(23) _
                Or Rphrases.Selected(24) Or Rphrases.Selected(33) _
                Or Rphrases.Selected(34) Or Rphrases.Selected(36) _
                Or Rphrases.Selected(40) Or Rphrases.Selected(42) _
                Or Rphrases.Selected(73) Or Rphrases.Selected(74) _
                Or Rphrases.Selected(75) Or Rphrases.Selected(76) _
                Or Rphrases.Selected(81) Or Rphrases.Selected(82) _
                Or Rphrases.Selected(84) Or Rphrases.Selected(86) _
                Or Rphrases.Selected(87) Or Rphrases.Selected(88) _
                Or Rphrases.Selected(89) Or Rphrases.Selected(90) _
                Or Rphrases.Selected(91) Or Rphrases.Selected(92)
                    If Val(CosshCat.Text) > 3 Then
                    CosshCat.Text = ("3")
                    End If
    Case else: CosshCat.Text = ("2")
    End Select
    Merci pour vos conseils.
    Fred.

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

Discussions similaires

  1. Problème avec les commandes systèmes
    Par ouakammathieu dans le forum Administration système
    Réponses: 8
    Dernier message: 27/05/2006, 15h06
  2. Problème avec la commande cd
    Par leia dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/10/2005, 21h40
  3. Problème avec la commande MAKE
    Par julio26 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 30/04/2005, 20h48
  4. Problème avec la commande su
    Par leng dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 10/02/2005, 17h31
  5. Problème avec la commande tar
    Par R3iTt0R dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 01/09/2004, 10h06

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