|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
je n'arrive pas à retrouver cette instruction
il me semblait que c'etait go to mais j'ai dû confondre avec goto je veux, dans ma macro, mettre des "marques" pour à un n'importe qu'elle endroit, lui dire de reprendre à tel autre... j'ai déjà des boucles For... Next... en route et des If à l'interieur de celles ci, mais je veux qu'à certaines reponsent des conditions, stopper la boucle et renvoyer le traitement plus haut ou plus bas dans la macro... question subsidiaire : si je fais de telles marques, End if et Next à la fin de mes conditions et boucles deviennnent t-ils inutiles ?? merci |
|
|
00
|
|
|
#2 | |
![]() ![]() |
Citation:
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
oui, j'espere voir à peu pret ce que c'est... mais c'est vrai que cette question doit etre un peu simplette...
voilà mon code, histoire de voir où j'en suis : Code :
Or, à chaque fois qu'un groupe a été formé et imprimé, la descente du tableau et des criteres reprends à la suite, et c'est pour reprendre cela que j'i marqué ( c'est faux ) goto line1 et 2 avec les deux marqueurs line 1, c'est pour cette operation que je ne connais pas le code |
||
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
bonsoir,
depuis que j'ai commencé ce post, je me casse la tête sur ce code... j'ai corrigé les boulettes de end if et next qu'il manquait, mais il me manque encore le code pour relancer la boucle plus haut... dans mon code qui est joint plus haut, c'est pas evident, mais en fait il faut juste qu'en bout de condition, en "Else" je puis relancer la boucle beaucoup plus haut, au debut de la premiere boucle for où il y a le test des quatres comparaisons de cellule merci pour votre aide, n'hesitez pas à me donner un lien s'il existe un tuto là dessus |
|
|
00
|
|
|
#5 |
![]() ![]() |
ben j'ai beau relire ton code et je ne comprends pas ce que tu ve faire .... et comment s'imbriquent toutes tes boucles for..?
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
00
|
|
|
#6 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Déjà, au lieu d'utiliser des goto, fais des procédures indépendantes dont l'appel peut être conditionné (if... then, Select case... ou autres)
Pour chaque goto, tu perds l'adresse de retour à la ligne suivant le goto. Traduit en clair, cela te sature la mémoire en un éclair. Fut une époque lointaine où ils étaient utilisés par manque ou ignorance des outils permettant de structurer un programme. On appelait ça le style "Nouille" Ces programmes étaient "imbitable" et surtout "indépannable" C'est d'ailleurs ce qu'il t'arrive. Restructure déjà ton programme en remplaçant tous tes goto par des sub-routines. Si tu as besoin de passer des paramètres (des valeurs) de la procédure principale aux autres, et que ça te pose problème, regarde l'aide ou demande ici si tu n'y parviens pas. Si tu as besoin de variables communes à toutes tes procédures, tu peux les déclarer en variables public. Bref, je suis comme bbil, je ne comprends rien à ton code... parce qu'il est impossible à quelqu'un qui ne l'a pas écrit, de le comprendre. Et donc, de t'aider N'hésite pas à nous demander... mais STUCTURE ! A+ et bon courage |
|
|
00
|
|
|
#7 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#8 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Merci bbil, mais tu m'as grillé sur la ligne...
keguira, non, remplace tout cequ'il y a à partir de chaque adresse:: par des appels à procédures indépendantes. Pas de goto, un call nomDeLaProcédure Exemple : au lieu de goto liste1 Code :
A+ Edit Comme z ne change pas de valeur, tu peux faire plus simplement une sub, auquel cas tu l'appelles Call line1 z Sub line1(z) '... '... End sub |
||
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
j'ai compris (enfin) je suis en train de bosser dessus, et mon code va être 15 fois plus court effectivement !
du coup j'ai deux petits problemes à resoudre : - la macro renvoyée dans ma boucle va donc me servir à chercher les 5 autres lignes identiques à la première trouvée (identiques si 4 criteres respectés) : est ce que je peux faire ça avec un recherchev ou un truc dans le genre, et surtout comment : dites moi juste vers où chercher pour faire un truc bien, j'essaierai de me dépatouiller ensuite - deuxièmement, les valeurs trouvées grace à ce rechercheV ne doivent pas être reprise dans la suite de ma boucle, du coup je pensais mémoriser ma colonne où il y a le critere vrai ( qui me permet de décider qu'elles sont les lignes à imprimer ) pour changer le vrai en faux dés que la valeur est selectionnée par le recherchev, et remettre les valeurs à l'identique en toute fin de traitement : est ce que ça peut se faire et est ce que je me dirige vers quelque chose de pertinent ? merci pour votre aide |
|
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
ça marche !
avant de mettre résolu, si une bonne ame veux bien y jeter un oeil pour me dire s'il est à peut pret efficace, structuré et "bitable" je vais rajouter une condition pour lancer les sub supplétaires, si la recherche d'une valeurs ne donne rien, inutile de refaire une recherche derriere; mais sinon pour moi j'ai fais ce que j'ai pu... Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Ok, c'est mieux et c'est lisible
Juste une petite remarque dans "Call recherche_n(a)", a ne sert à rien, que ce soit à l'appel ou dans la sub appelée. Tu peux le supprimer partout Code :
|
||
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2004 Messages : 30 ![]() |
ah ben merci !
du coup j'ai pas compris quand une variable doit etre reprise en public, j'avais meme dans l'idée que j'avais de la chance que ça marche sans avoir mis la variable en public... dans quel cas aurais t-il fallu faire ça ?? merci encore pour votre aide, et bon week end egalement |
|
|
00
|
|
|
#13 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
La variable public est utile quand tu ne peux pas la passer en paramètre.
Prends un userform Pour l'ouvrir, tu as une macro dans un module standard. Dans cette macro, et par exemple, tu ouvres un fichier, récupères son chemin et son nom. Dans l'userform, tu désire récupérer l'un et l'autre sans avoir à écrire de nouveau du code Tu peux alors déclarer, en tête de ton module standard, les variables Chemin et NomFichier Ainsi, dans l'userform, tu pourras récupérer le chemin et le nom du fichier si tu en as besoin C'est un exemple mais il y en a bien d'autres. Je te conseille un coup d'oeil dans l'aide à Dim, Public, etc A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com