Vb6 Procédure trop grande !!!

Résolu
Signaler
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006
-
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006
-
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

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
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
Messages postés
341
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
29 juin 2011
1
tu peux envoyer ce ke ta fai comment je voi mieux quest ce que tu veu faire
envoie moi


MK
0
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
utilises Select case plutot que ElseIF .....

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
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
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006

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
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006

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