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 :

Utiliser un GoTo avec une variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut Utiliser un GoTo avec une variable
    Bonjour a tous,

    Je voudrais utiliser un GoTo avec une variable et sur deux sub pour faire un saut conditionnel, je ne sais pas si c'est faisable ou si il y a une autre solution pour y arriver.
    je vous met un exemple raccourci de ce que j'ai essayé de faire sans succès :


    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
    Public saut as string
    ---------------------------
    Sub macro1
     
    code
    code
    code 
     
    saut = saut1
    Call macro2
     
    code
    code
    code
     
    saut1:
     
    code
    code
    code
     
    saut = saut2
    Call macro2
     
    code
    code
    code
     
    saut2:
     
    code
    code
    code
     
    saut = saut3
    Call macro2
     
    code
    code
    code
     
    saut3:
     
    code
    code
    code
     
    End Sub
    -----------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub macro2
     
    code
    code
    code
     
    If ----------Then
    GoTo saut
    End If
     
    End Sub
    ---------------------
    En espérant avoir été assez clair, je n'ai pas mis le code entier car il est assez long et de plus je cherche déjà a savoir si c'est possible de faire cela comme ça.
    Donc toutes les infos peuvent me servir, et l'utilisation d'un GoTo n'est peut être pas la solution

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comment pourrions-nous savoir si ton utilisation de Goto "n'est peut être pas la solution" ?
    tu n'expliques pas quel type de projet tu cherches à développer

    déjà, les Goto sont à proscrire, sauf pour un usage ponctuel sur une ou deux lignes de codes. Mais sur un ensemble de procédures ....

    en l'état, je n'ai qu'une chose à dire : c'est difficilement réalisable, c'est une usine à gaz, il y a visiblement un problème de conception et de modélisation qui t'orientes vers des Goto. Revoit ta conception pour mieux gérer ton projet, sans Goto.


    dans l'attente d'une explication un peu plus précise, je n'ai rien d'autre à dire hélas



    EDIT : je n'arrivais pas à donner une image parlante ... ça vient de me faire tilt

    tu utilises des Goto comme on utiliserait des blocs If/Else/End if

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je pense très franchement que personne ici (bien au contraire) n'encouragera un tel mécanisme "spaghetti", non recommandable du tout pour mille et une raisons.
    Si tu y tiens toutefois : intéresse-toi alors aux instructions On...GoSub, On...GoTo, instructions, mais n'attends pas de moi (en tout état de cause à titre personnel) que j'aide à mettre en place un tel "machin", qui que puisse être le demandeur d'une telle "aide".

  4. #4
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Merci pour ta réponse joe.levrai

    Tu m'as déjà donné un aperçu de réponse en me disant que utiliser des GoTo n'était pas la solution.

    et en y réfléchissant je me suis dit que ça pourrait peut être fonctionner avec des If Then Else End If.

    Et je m'aperçois dans ton EDIT tu en parle, donc je vais creuser dans ce sens a moins que tu perçoit une autre solution de faire des sauts conditionnels, malgré j'en suis contient du peu d'info que je donne sur le code réel.
    Mais je recherche plus un angle de recherche et savoir s'il était pertinent d'utiliser un GoTo.

    Merci unparia d'ajouter ta contribution malgré le mécanisme "spaghetti"

    Mais je cherche juste (et n'étant un pro en VBA, je crois que ça ce voit ) comment réaliser le plus simplement possible un saut de quelque ligne de code en fonction d'un test.

  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, bonjour !

    Rien qu'en consultant l'aide VBA (tout y est !) concernant l'instruction If … Then … Else !

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Nous avons bien compris que tu veux faire un code en étages! On ce place au dernier étage et on descend, à défaut d'une information de saut on déroule tout le code, si non on se place sur l'étiquette appelée.

    C'est exactement la définition du langages spaghetti, on tire sur une nouille et toute l'assiette vient!

    Au niveau de la maintenance curative et/ou évolutive bonjours!

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 283
    Par défaut
    Mes 2 centimes en passant.
    Tu viens donc d'énoncer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si (test == vrai) alors
        goto quelques lignes plus loin
        blabla blibli
    fin_si
    Arrivée du goto
    Ce que j'écrirai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Si (test == faux) alors
        blabla blibli
    fin_si
    Enfin, un truc du genre.
    Même que "blabla blibli" pourrait être dans le corps d'une procédure appelée.

  8. #8
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Ok et merci a tous

    Pour mon code je vais continuer a pédaler dans les nouilles , car je ne vais pas tout remanier et en plus j'en ai pas forcément le niveau.
    Je vais donc me tourner vers des bloc If Then End If qui apparemment est la moins mauvaise des solutions.

    Encore merci a tous

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je vais donc me tourner vers des bloc If Then End If qui apparemment est la moins mauvaise des solutions.
    Bien. C'est déjà cela.
    Intéresse-toi maintenant également à la rubrique Select Case, instruction de ton aide VBA.

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

Discussions similaires

  1. Utilisation de getElementById avec une variable
    Par titiyoyo dans le forum jQuery
    Réponses: 2
    Dernier message: 28/09/2009, 23h48
  2. Utilisation de sed avec une variable
    Par Neuromancien2 dans le forum Linux
    Réponses: 5
    Dernier message: 18/07/2008, 17h53
  3. Utilisation de like avec une variable en VBA
    Par mawi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/01/2008, 12h47
  4. [XSLT]comment utiliser xsl:if avec une variable
    Par dbill dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/08/2007, 13h23
  5. [XSL] utilisation du mode avec une variable
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/04/2006, 10h12

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