Bonjour,
Je lis ça et là qu'il ne faut pas utiliser GOTO.
Donc bêtement je fais ce qu'on me dit et essaye de ne pas l'utiliser mais ... pourquoi ?
Merci d'avance :-)
Bonjour,
Je lis ça et là qu'il ne faut pas utiliser GOTO.
Donc bêtement je fais ce qu'on me dit et essaye de ne pas l'utiliser mais ... pourquoi ?
Merci d'avance :-)
Bonjour,
je crois que l'exercice devient très intéressant quand on "inverse les rôles".
alors je m'y colle : pourquoi as-tu besoin de GOTO dans tes projets ? Quel est l'impérieux besoin qui les nécessitât ?
![]()
Bonjour
Unà joe.levrai.
Et pour répondre à Limace_hurlante : ce n'est pas que "c'est mal", mais que cela me "fait mal" (torticolis, maux de crâne, etc ...), comme tous les mécanismes de type "spaghettis".
Rien ne t'empêche d'utiliser de tels mécanismes, mais comprends alors bien que rares seront les masochistes qui accepteront d'analyser et/ou maintenir ton code .![]()
Bonjour,
Un code bien structuré mérite une bonne analyse. Le goto c'est utile dans le cours typique ou le jumping!
Le
Salut, un débat sur la chose
Merci de toute vos réponses !
Poin d'impérieux besoin, mais juste un instant de temps en temps ou l'amateur novice que suis se dit devant un truc comme ca (voir ci dessous) qu'il y a forcément moyen de faire sans le goto mais est-ce-que ca vaux la peine de chercher ? Est-ce que le GOTO c'est vraiment horrible, voila voila ...
(je précise au passage que je viens tout juste de comprendre que mon code ne marchera pas car on ne pourrait sois disant pas mettre de variable tableau en public dans les module de classe
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 For i = 1 To FeuilleDeRecherche.Range("A" & Rows.Count).End(xlUp).Row ' on fait une boucle qui va de la preimere ligne à la dernier ligne ecrite 'si (dans les 3 premiers caractère de la ligne i colone 1 il y a "PAU" ET que le code est écrit en gras alors If Len(FeuilleDeRecherche.Cells(i, 1).Value) < gandeurducode Then GoTo icI: If Left(FeuilleDeRecherche.Cells(i, 1).Value, grandeurDuCode) = CodeRecherche Then If QueLeGras = True And FeuilleDeRecherche.Cells(i, 1).Font.Bold = False Then GoTo icI Else ReDim Preserve LesControls(NVar).LaVariable(0 To j) usf.Controls(BoiteARemplir).AddItem FeuilleDeRecherche.Cells(i, k).Value 'alors on inscrit ce qu'il y a dans la collne 2 de la ligne i dans la liste déroulante LesControls(NVar).LaVariable(j) = i 'on enregistre le numero i de la ligne dans la variable J j = j + 1 ' on change de J pour le prochain tour de la boucle End If End If icI: Next i ' on change de ligne i
Je lis partout cette histoire de spagettis, mais qu'est-ce donc ?
De plus, les seul personne qui serait succeptible de maintenir mon code c'est moi ... j'essaie d’être clair dans mes commentaire pour me comprendre longtemps plus tard mais bon ...
MErci, j'avais cherché : "goto vba" mais j'avais omi de tenter avec d'autre langage de programmation
Pour ne pas avoir a rédiger ce qui l'est déjà depuis kala kala :Je lis partout cette histoire de spagettis, mais qu'est-ce donc ?
très exactement ceci :
https://fr.wikipedia.org/wiki/Syndro..._de_spaghettis
qui est entre autres le résultat de l'utilisation de cela :
https://fr.wikipedia.org/wiki/Programmation_spaghetti
EDIT : j'ajoute aux deux lectures ci-dessus la suivante :
https://fr.wikipedia.org/wiki/Th%C3%A9orie_du_chaos
Cette dernière ne concerne pas directement le sujet en lui-même, mais devrait t'aider à comprendre certains aspects (bien qu'ils puissent échapper à la perspicacité des uns ou des autres)
Après, ce n'est qu'une question de choix personnel du risque de se retrouver un jour gêné par une "construction" dans laquelle la modification ou le déplacement d'un seul élément peut mettre en péril l'ensemble des éléments, sauf à passer un temps quelquefois fou à déterminer toutes les conséquences possibles au sein d'imbrications, de ramifications, etc ....
Qu'un bug, un défaut, un cas particulier non prévu, etc ... intervienne et le risque devient alors grand de tenter un "rafistolage" qui ne mettrait pas en péril un autre élément, voire l'ensemble des éléments.
Voilà. Tout le reste ne serait que baratin.
Bonjour,Un programme spaghettis, est un programme linéaire d'un seule tenant. On titre sur un spaghettis et on déroule le code du sub au end sub!Un langage spaghettis c'est un train qui part de paris et s'arrête à lyon.Un goto c'est un aiguillage, si je place un changement de rail sur ma voie ferrée, je change la destination de mon train, Marseille par exemple. En soit c'est simple mais ce n'est plus le même programme. Je l'ai fait d'un claquement de doigt, mais ai'je vraiment analysé les conséquences?La modification du tracé exige une analyse et la réécriture d'une partie du code pas de jump dans toutes les directions qui rendent le code illisible et In maintenable!
Par exemple je viens de faire un explication spaghettis!
Dernière modification par Invité ; 31/01/2017 à 10h34.
Bonjour,
sans parler des solutions qui poussent a utiliser des goto, le cas dans lequel la solution goto est la plus efficace en VBA et celle recommandée est lors de la gestion des erreurs.
http://silkyroad.developpez.com/VBA/...rreurs/#LIII-A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 On Error GoTo plop 'code plop: 'code
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Bonsoir,
En soit le goto, ce n'est pas vraiment le problème !
Après tout on revient aux prémices; notre bon vieux assembleur, qui quoique l'on dise est fortuitement d'actualité. Et oui le goto c'est son truc!
Le problème du goto c'est la maintenance curative et évolutive. Un code découpé et module et méthode sera et réutilisable ,maintenables et compréhensible.
Dans un programme spaghettis, je peux faire un branchement intempestif vers une autres étiquette afin d'ajouter un fonctionnalité, c'est facile mais ca peut rapporter trop gros!
Il faut avoir l'ambition de croire que notre programme nous survivrais; et que d'autre génération auront en charge de le maintenir.
Personnellement je garde espoirs.
Partager