Vb6 Procédure trop grande !!!

Résolu
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006 - 28 juin 2005 à 16:18
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006 - 28 juin 2005 à 17:22
Jes suis en stage
Je dois trier des feuilles excel à l'aide de vb6
Je le fais à travers des codes identificateurs situés sur la 1ère colonne
le problème c'est qu'il y en a 400 donc il faut que je fasse

dans un command click

if machin = truc then
copier
coller
elseif machin =chose then
copier
coller
......
......
...... endif
et ça 400 fois

je pense pas que je peux faire une boucle car je copie pas toujours vers la meme direction
Je ne peux pas compiler il me mets :
procédure trop grande

Si qq'un voit une solution une boucle ou qqchose ???????
ou comment augmenter la taille de la procédure ??????

Merci d'avance a tous et toutes

Batao

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
28 juin 2005 à 17:09
ce que je vois : des lignes trop répétées...

deux solutions envisageables :

for d =38 to 400 step 1
if instr ( ";valeur1;valeur2;" , ";" & appxl.cells(d,"a").value & ";" ) then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1
End if
next d

ou bien

Dim Found as Boolean

for d =38 to 400 step 1
Found = False
If appxl.cells(d,"a").value = "valeur1" then
Found = True
End if
........
If Found Then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1
end if
next d

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
3
cs_sitemo Messages postés 341 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 29 juin 2011 1
28 juin 2005 à 16:21
tu peux envoyer ce ke ta fai comment je voi mieux quest ce que tu veu faire
envoie moi


MK
0
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006
28 juin 2005 à 16:30
c du genre
m=1

for d =38 to 400 step 1

if appxl.cells(d,"a").value="FR200358854" then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1

elseif appxl.cells(d,"a").value="FR200358854" then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1

.....
......
400fois
endif
next d
donc ça fait beaucoup pour lui
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
28 juin 2005 à 16:31
utilises Select case plutot que ElseIF .....

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006
28 juin 2005 à 16:38
j'ai essayé avec select et des case mais sa change rien vers 200 sa merde
j'ai vu que c'était un problème de mémoire qu'une procédure ne pouvais pas excédé 64 ko
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
28 juin 2005 à 16:41
peux tu nous donner un vrai morceau de ton code, stp...

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006
28 juin 2005 à 16:52
Je prog pas sur la meme machine que le net
mais ya rien d'extra c pas un problème de code tout marche jusqu'à une certaine taille
comme indiqué ci-dessus
ya un for et dedans 1 if et 399 elseif
je sais c bourrin mais je voyais pas comment faire autrement

Private sub command1_click()

dim appxl......
dim appact.....

set ........

dim m as .......
m=1

for d =38 to 400 step 1

if appxl.cells(d,"a").value="valeur1" then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1

elseif appxl.cells(d,"a").value="valeur2" then
appxl.rows(d).select
appxl.selection.copy

appact.rows(m).select
appact.activesheet.paste
m=m+1

.....
......
400fois
endif
next d
end sub
0
batao Messages postés 50 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 15 mai 2006
28 juin 2005 à 17:22
Merci beaucoup Renfield
ça le fait grave j'en ait chié toute la journée mais je vais pouvoir rentrer chez moi la tête légère

j'avais essayé des
if machin = ("truc" && "muche") etc etc ......

déformation du langage C
mais que dal

c bon sa va me réduire considérablement le code ce sera plus digeste pour moi et pour l'ordi !!!!!!!

Bonne fin de soirée
Proggé pas trop
0
Rejoignez-nous