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 - E] Problème avec un 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
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Par défaut [VBA - E] Problème avec un GoTo
    Bonjour à tous,

    Dans le morceau de code ci dessous, il me dit que ma référence pour mon goto est non vailde. Est ce que ma syntaxe est bonne ? Est ce qu'il y a une autre manière que ce goto de brute épaisse pour "simuler" un Next[/CODE] dans une boucle For ?

    PS : fts est une classe que j'ai définie => pas de pb à ce niveau là

    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
    For Each UneCellTer In Range(Cells(2, 4), Cells(Der, 4))
            If UneCellTer.Offset(0, 1).Value = fts.sousjacent Then  'sousjacent correct
                If UneCellTer.Value = "SHA" Then 'c'est bien une opération sur shares (?)
                    If Right(UneCellTer.Offset(0, 5).Value, 9) = DateOperation Then 'date correcte
                'test du sens : si FTS = acheteur, SHA doit être vendeur et vice versa
                    Select Case UneCellTer.Offset(0, -3) 'sens de SHA
                        Case Is = "Buy"
                            If UneCell.Offset(0, -3).Value = "Buy" Then
                                Application.Goto Sortir 'FTS achetés et Shares achetés => pas bon
                            ElseIf UneCell.Offset(0, -3).Value = "Sell" Then 'FTS vendus et shares achetées => OK
                                fts.prixref = UneCellTer.Offset(0, 3) 'on prend le prix de la première case qui vérifie les critères comme prix de ref
                                Set fts1 = fts
                                But = fts.quantity * Quotite
                                fts1.quantity = UneCellTer.Offset(0, -2).Value
                                Call recherchesuivantSHAprFTS(UneCellTer.Row)
                                fts.prixref = fts1.prixref
                                Exit For
                            Else
                                MsgBox "souci à l'horizon"
                                Stop
                            End If
                        Case Is = "Sell"
                            If UneCell.Offset(0, -3).Value = "Sell" Then
                                Application.Goto Sortir 'FTS vendus et Shares vendues => pas bon
                            ElseIf UneCell.Offset(0, -3).Value = "Buy" Then 'FTS achetés et shares vendues => OK
                                fts.prixref = UneCellTer.Offset(0, 3) 'on prend le prix de la première case qui vérifie les critères comme prix de ref
                                Set fts1 = fts
                                But = fts.quantity * Quotite
                                fts1.quantity = UneCellTer.Offset(0, -2).Value
                                Call recherchesuivantSHAprFTS(UneCellTer.Row)
                                fts.prixref = fts1.prixref
                                Exit For
                            Else
                                MsgBox "souci à l'horizon"
                                Stop
                            End If
                        Case Is = "Internal"
                            If UneCell.Offset(0, -3).Value = "Buy" Then 'FTS achetés
                                If UneCellTer.Offset(0, 15) <> "ZG" Then 'Shares achetées
                                    Application.Goto Sortir
                                Else 'shares vendues
                                    fts.prixref = UneCellTer.Offset(0, 3)
                                    Set fts1 = fts
                                    But = fts.quantity * Quotite
                                    fts1.quantity = UneCellTer.Offset(0, -2).Value
                                    Call recherchesuivantSHAprFTS(UneCellTer.Row)
                                    fts.prixref = fts1.prixref
                                    Exit For
                                End If
                            ElseIf UneCell.Offset(0, -4).Value = "Sell" Then 'FTS vendus
                                If UneCellTer.Offset(0, 12) <> "ZG" Then
                                    Application.Goto Sortie 'Shares vendues
                                Else 'Shares achetées
                                    fts.prixref = UneCellTer.Offset(0, 2)
                                    Set fts1 = fts
                                    But = fts.quantity * Quotite
                                    fts1.quantity = UneCellTer.Offset(0, -3).Value
                                    Call recherchesuivantSHAprFTS(UneCellTer.Row)
                                    fts.prixref = fts1.prixref
                                    Exit For
                                End If
                            End If
                    End Select
                End If
            End If
        End If
    Sortir: Next UneCellTer

  2. #2
    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
    Tu es sûr d'en avoir besoin ?
    Tu es dans un select case,
    Tu remplis une condition dans un case ...
    Et en sortant du select case, tu n'as que des Endif...
    Tu souhaites rester dans la boucle...
    A première vue, ton goto ne sert à rien
    Vérifie et dis-nous

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Par défaut
    pffffffffffffffffffffffffffffff!!!!!!!!!!!!!!!!!!!!

    Tu as entièrement raison... Perdu dans mes conditions, je n'ai pas vu la simplicité !!!
    Peut-être que de mettre un Then sans rien après m'a "enduit d'erreur".

    Merci beaucoup.

    Lycaon

    PS : ceci dit, je suis quand même interessé par la syntaxe de GoTo...

  4. #4
    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
    N'utilise jamais goto dans une boucle, c'est bon pour saturer la mémoire.
    J'ai déjà donné plusieurs fois l'explication : à chaque goto tu écris une nouvelle adresse en mémoire, alors dans une boucle...
    Son usage peut se révéler utile en gestion d'erreur quand "On error Resume Next" pose problème (quoi qu'en testant l'erreur je n'ai jamais eu à utiliser un goto)
    Donc, pour ce qui est de l'utilisation de goto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub GotoErreur()
    On Error GoTo fin::
        Err.Raise (vbObjectError + 1004)
    fin::
        MsgBox "J'ai l'erreur " & Error(Err)
    Err.Clear
    End Sub
    A+

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

Discussions similaires

  1. [VBA-E] & problème avec GetOpenFileName
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/03/2006, 17h20
  2. [VBA-E] Problème avec des dates !
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2006, 13h12
  3. [VBA-E] problème avec la fonction print#
    Par phoon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2006, 09h51
  4. [VBA-E] Problème avec Application.StatusBar
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2006, 16h44
  5. [VBA] [WORD] problèmes avec NUMPAGES
    Par meufeu dans le forum VBA Word
    Réponses: 9
    Dernier message: 08/08/2005, 16h24

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