Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1673 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Passer un tableau en parametre de fonction ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Passer un tableau en parametre de fonction ?

n°618920
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 22-01-2004 à 14:34:49  profilanswer
 

exemple :
 
Dim Tab(7) as Integer
 
[...]
 
truc = UneFonction (Tab)
 
_____________________________________________
Function UneFonction (MonTableau(7) as integer)
[...]
End Function
_____________________________________________
 
Les parties en gras sont celles qui me dérangent, qu'est-ce que je dois mettre à la place pour que ça marche ?


Message édité par Kirvel le 22-01-2004 à 14:39:42

---------------
MyAnimeList
mood
Publicité
Posté le 22-01-2004 à 14:34:49  profilanswer
 

n°618921
Profil sup​primé
Posté le 22-01-2004 à 14:37:05  answer
 

avec dim ca passerai peut être ?

n°618925
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 22-01-2004 à 14:40:15  profilanswer
 

mr_mat a écrit :

avec dim ca passerai peut être ?


 
 :??:  :??:  :??:  :??:  :??:


---------------
MyAnimeList
n°618930
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 22-01-2004 à 14:41:42  profilanswer
 

dsl pour le double topic : un modo a déplacé un ancien topic mal placé


---------------
MyAnimeList
n°618943
Profil sup​primé
Posté le 22-01-2004 à 14:47:00  answer
 

mr_mat a écrit :

avec dim ca passerai peut être ?

ptain chuis fatigué moi je tape n'imp :D
 
je voulai dire avec ()  
montableau() as type
 
enfin je dis ca mais j'en sais rien j'ai fait très peu de vb mais bon y a des langages ou ca marcherai quoi :D

n°618946
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 22-01-2004 à 14:47:53  profilanswer
 

bon en fait j'ai réussi à feinter pour pas avoir à passer ce tableau en paramètres ...


---------------
MyAnimeList
n°618954
MagicBuzz
Posté le 22-01-2004 à 14:51:46  profilanswer
 

arrête de feinter, et utilise mon code, il marche très bien, et il fait ce que tu veux.

n°618960
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 22-01-2004 à 14:55:21  profilanswer
 

lol non c bon merci


Message édité par Kirvel le 22-01-2004 à 14:55:29

---------------
MyAnimeList
n°618964
Profil sup​primé
Posté le 22-01-2004 à 14:57:52  answer
 

g lu le truc de magicbuzz en gros c comme je disasi c juste que qd tu declare ta fonc au lieu de mettre montableau(7) tu met montableau() et ca passe il retrouve la taille tout seul il est intelligent vb

n°619019
drasche
Posté le 22-01-2004 à 15:26:02  profilanswer
 

+1 avec mr_mat :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 22-01-2004 à 15:26:02  profilanswer
 

n°619396
mareek
Et de 3 \o/
Posté le 22-01-2004 à 20:48:43  profilanswer
 

mr_mat a écrit :

g lu le truc de magicbuzz en gros c comme je disasi c juste que qd tu declare ta fonc au lieu de mettre montableau(7) tu met montableau() et ca passe il retrouve la taille tout seul il est intelligent vb


[:daplopbot] (qu'est-ce qu'il faut pas lire)
 
 
sinon, +1 avec tout le monde


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°619705
Profil sup​primé
Posté le 23-01-2004 à 09:26:20  answer
 

mareek a écrit :


[:daplopbot] (qu'est-ce qu'il faut pas lire)
 
 
sinon, +1 avec tout le monde

:lol:

n°619849
Sars
Posté le 23-01-2004 à 10:45:45  profilanswer
 

bah sinon tu passes les paramètres en variant et c'est bon...

n°619867
drasche
Posté le 23-01-2004 à 10:54:52  profilanswer
 

ou comment être sûr de ne pas se casser la tête, voilà bien une réflexion typique de pur programmeur VB :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°619888
MagicBuzz
Posté le 23-01-2004 à 11:02:51  profilanswer
 

drasche > fait pas ta timorée. je te rappelle qu'en C tu passerait un pointeur à la place et zou :D


Message édité par MagicBuzz le 23-01-2004 à 11:03:00
n°619890
drasche
Posté le 23-01-2004 à 11:04:09  profilanswer
 

en C je programmerais pas de la même façon qu'en VB, je me suis ramolli avec le temps :/


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°619912
Sars
Posté le 23-01-2004 à 11:21:26  profilanswer
 

drasche a écrit :

ou comment être sûr de ne pas se casser la tête, voilà bien une réflexion typique de pur programmeur VB :o


 
Tu sais quoi j'aime pas ce langage et pourtant j'en bouffe toute la journée au taf. Bah je vais te dire un truc , que ce soit propre ou pas , c'est plus simple de laisser le type en variant.

n°619922
drasche
Posté le 23-01-2004 à 11:28:17  profilanswer
 

je prends la chose autrement, j'aime pas VB non plus et j'essaie d'optimiser autant que je peux pour diminuer la sensation de lenteur, alors j'emploie le variant le moins possible [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°619936
Sars
Posté le 23-01-2004 à 11:39:13  profilanswer
 

Je comprend ton point de vue...en même temps, je ne vois pas pourquoi utiliser les variant "ralentit" l'appli...que ça la rende plus lourde ok mais sinon je vois pas...quoiqu'il en soit quand t'as une interface graphique bien lourde, je suis pas sur que la taille des objets en mémoire ait un gros impact sur la vitesse d'éxécution...

n°619944
drasche
Posté le 23-01-2004 à 11:43:49  profilanswer
 

Le Variant influe sur la vitesse en ce sens que VB doit déterminer son type sous-jacent avant de bosser avec. Il y a plein de petits trucs comme ça en VB. Et il se peut qu'il doive le faire à chaque référence à un Variant vu que son contenu peut changer de type d'une ligne à l'autre.
 
Dans le même genre, t'as les propriétés par défaut dans les objets: VB doit déterminer lequel il s'agit avant de s'en servir. Moralité: je n'utilise jamais ce genre d'écriture.
 
Les objets dans les collections: à chaque fois que tu établis une référence, VB doit calculer la référence en question (donc le retrouver dans la collection), et ça aussi il le fait à chaque fois que tu y accèdes, il n'a pas une cache quelconque pour s'en rappeler. VB est un langage très simple mais aussi très primaire. J'ai pu vérifier tout cela en utilisant un profiler (TrueTime pour ne pas le citer). Les résultats sont édifiants.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°619961
Sars
Posté le 23-01-2004 à 11:54:14  profilanswer
 

Oki, je pensais que le type était déterminé à la compilation.
C'est sûr VB est primaire...c'est d'ailleurs pour ça que je n'ai même plus envie de me prendre la tête avec, donc je vais au plus simple même si c'est laid. Je me force quand même à laisser option explicit ;)

n°619963
MagicBuzz
Posté le 23-01-2004 à 11:55:15  profilanswer
 

Franchement, la vitesse n'est pas le point noir.
 
Pensez un peu au gars qui va passer derrière vous pour la maintenance ! Si c'est tout en Variant, on sait plus qui fait quoi, ce que doivent contenir les données, et dès qu'on touche à une ligne, toujours à cause du type Variant, au lieu de planter tout de suite, ça se met à péter à l'aute bout du programme, sans raison apparente. Du coup on passe des heures à chercher les effets de bords possible de la modif, alors qu'on a bêtement provoqué un problème de typage, mais vu qu'on a recopié la variable globale dans 25 autres variables variant globales aussi, ça pête sur une autre variable, dans un autre module, et c'est impossible de retrouver d'où ça vient.
 
Alors que quand c'est typé, à la première affectation, programme propre ou pas, VB va gueuler, on pourras alors débugger tout de suite.
 
Franchement, je le répète. VB est loin d'être un langage parfait, mais il est clairement mieu foutu que l'utilisation qu'en font certains. Un programme bien écrit en VB sera à la fois performant, stable et maintenable. J'ai des dizaines de progs à mon actif, donc certains ont subis de grosses évolutions. J'ai été surpris de relire les commentaires dans l'ent-tête :
- 1999-05-23 : First Release
- 1999-05-29 : Fix some bugs after customer feedback
- 2004-01-18 : New features
 
Voilà. Quand c'est développé proprement, un programme VB ne plante pas, et convient parfaitement à l'utilisation qu'on en fait.
Comme par enchantement, dans ce prog, y'a rigoureusement aucun type Variant, aucune conversion implicite, aucun "on error resume next" posé comme un con sans jamais être fermé ni trappé.
 
Alors après, si vous foutez un "on error resume next" à la première ligne du programme et que vous bosser avec des variant, faut pas vous étonner si le programme fait rigoureusement n'importe quoi (le plus marrant avec on error resume next en scope global, c'est qu'en plus ça va jamais planter, juste faire n'importe quoi ! trop fort non ? Vous devriez essayer, c'est génial à débugger après)


Message édité par MagicBuzz le 23-01-2004 à 11:55:58
n°619976
Sars
Posté le 23-01-2004 à 11:59:05  profilanswer
 

Attention, j'ai pas dit que je passais les integer en variant non plus...

n°620048
drasche
Posté le 23-01-2004 à 12:58:16  profilanswer
 

Sars a écrit :

Oki, je pensais que le type était déterminé à la compilation.
C'est sûr VB est primaire...c'est d'ailleurs pour ça que je n'ai même plus envie de me prendre la tête avec, donc je vais au plus simple même si c'est laid. Je me force quand même à laisser option explicit ;)


je parle des effets de bord de casting implicite dans la FAQ VB ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°620095
mareek
Et de 3 \o/
Posté le 23-01-2004 à 13:29:21  profilanswer
 

MagicBuzz a écrit :


plein de trucs pas cons


[:plusun]
 
Ce qui plombe le plus VB, c'est l'illusion de simplicité.  
 
Si on fait un travail rigoureux et qu'on connait bien l'IDE, ses possibilités et ses limites, il n'y a pas de raison qu'un programme enVB soit pire qu'un programme identique dans un autre langage (dans le cas général). Mais comme VB est censé s'adresser aux débutants, il y a plein de fausses facilités (on error resume next, les variant, les méthodes par défaut, la non obligation de déclarer ses variables, etc...) qui amène des bugs hyper durs à trouver et plombent les perfs comme c'est pas permis.
 
J'en viens à la conclusion que pour faire des trucs un peu évolués, il faut beaucoup mieux maitriser son environement de developpement en VB que dans d'autres langages présentés comme plus compliqués.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°620098
drasche
Posté le 23-01-2004 à 13:31:37  profilanswer
 

exemple de casting implicite foireux :D
 

Code :
  1. ? 68742 / (3600 * 24)


 
ah oui ça a l'air tout simple, et pourtant ça plante, c'est con hein?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°620139
Sars
Posté le 23-01-2004 à 14:03:37  profilanswer
 

mareek a écrit :


[:plusun]
 
Ce qui plombe le plus VB, c'est l'illusion de simplicité.  
 
Si on fait un travail rigoureux et qu'on connait bien l'IDE, ses possibilités et ses limites, il n'y a pas de raison qu'un programme enVB soit pire qu'un programme identique dans un autre langage (dans le cas général).


 
Ce qui le plombe c'est aussi pas mal de trucs pas très logiques et qui donnent l'impression que les mecs avaient pas vraiment de suite dans les idées quand il ont commencé à créer le langage...Biensur on peut toujours faire un truc stable mais bon même pour faire des trucs tout con on peut perdre pas mal de temps si on a pas 6 mois d'xp.
 
drasche > oué effectivement c'est assez con...c'est vraiment tout le problème de VB, il a tellement été simplifié qu'on en arrive à des conneries comme ça...c'ets un peu dommage quand même

n°620174
MagicBuzz
Posté le 23-01-2004 à 14:20:57  profilanswer
 

ça vous apprendra à pas travailler avec des constantes :o
 
pour info, c'est grace à des 68742 / (3600 * 24) qu'on a eu droit au problème de l'an 2000 et au problème du passage à l'euro.
je vous racontre pas non plus le bordel que c'est quand on change le taux de la TVA...
 
une constante, ça se type et ça se déclare dans le header du programme. après on l'appelle par son non, jamais directement sa valeur :o

n°620182
drasche
Posté le 23-01-2004 à 14:26:05  profilanswer
 

en fait j'ai montré cet exemple parce que je suis tombé dessus un jour dans le code, je sais plus pourquoi, et j'ai noté le type des variables: un long et deux integers. Un peu plus tard, on a tout converti en longs, plus d'integer dans le code sauf dans le cas de certaines contraintes.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°620187
MagicBuzz
Posté le 23-01-2004 à 14:32:14  profilanswer
 

au taf c'est encore mieu, l'ERP aime pas les nombres, alors il fait tout en varchar2 (string).
comme ça, pas de problème de transtypage, faut tout le temps se palucher un transtypage à la main pour pouvoir faire un calcul :D
 
vi, je sais, c'est des mabouls ceux qu'on fait l'ERP :D

n°620196
drasche
Posté le 23-01-2004 à 14:35:23  profilanswer
 

on se croirait revenu à dBase [:kiki]
 
Vous savez tout le bien que je pense des ERP toute façon :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°620231
MagicBuzz
Posté le 23-01-2004 à 14:52:36  profilanswer
 

on est deux :D
 
par contre, c'est une mine d'or quand tu bosses avec la base, y'a trop plein d'astuces vraiment intéressantes pour rendre générique et évolutif un MPD... c'est un peu le gros bordel au début, mais ensuite c'est trop bon !

n°621523
mareek
Et de 3 \o/
Posté le 25-01-2004 à 22:51:59  profilanswer
 

MagicBuzz a écrit :

on est deux :D
 
par contre, c'est une mine d'or quand tu bosses avec la base, y'a trop plein d'astuces vraiment intéressantes pour rendre générique et évolutif un MPD... c'est un peu le gros bordel au début, mais ensuite c'est trop bon !


Moi aussi j'ai une super astuce pour rendre un MPD générique et évolutif: Une table avec un champ de type blob [:ddr555]
 
(je rigole mais les ERP c'est un peu ça quand même :o)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°621730
MagicBuzz
Posté le 26-01-2004 à 11:17:20  profilanswer
 

Nan, une table "tbl" avec 20 champs de chaque type :D
 
Et pasde clé primaire, pas de contrainte ni rien.
 
Juste un champ "TBLCOD"
 
Comme ça tu crées autant de "tables" que tu veux à l'intérieur de cette dernière, et tu filtres par le champ "TBLCOD" pour retrouver les infos de ta "table".
 
Ca c'est du 100% hardcore :D
 
Mais mine de rien, utilisé à bon escient, ça permet de mettre en place des mécanismes avancés qui ont par contre de très gros avantages...

n°621786
mareek
Et de 3 \o/
Posté le 26-01-2004 à 12:21:54  profilanswer
 

ça revient à  ce que je disais, tu perds 90% des avantages d'une BD :/


Message édité par mareek le 26-01-2004 à 12:22:00

---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°621894
MagicBuzz
Posté le 26-01-2004 à 14:31:23  profilanswer
 

Ca peut dépendre des cas. Perso, j'utilise très souvent cette astuce maintenant pour gérer ce qui s'appelle des "descripteurs".
 
Evidement, l'implémentation est moins merdique, mais globalement ça revient au même :
-> Ajout de nouvelles dimensions sans modification de la base de données.
 
Par exemple, t'as un catalogue de produits.
Tu vends des stylos et des chaises.
 
Bah... Dans les deux cas, t'as des attributs :
- couleur
- prix
- matière
 
Mais avec un stylo, tu as en plus :
- type (bille, feutre, plume)
- km d'écriture
- foureau
- etc.
 
Et avec une chaîse :
- pieds
- revêtement
- inclinable
- pivotable
- réglable en hauteur
- roulettes
- etc.
 
Bah...
- soit tu crées 10 000 champs dans ta table sâchant que chaque produit en utilisera une 10aine à chaque fois...
- tu fais des champs génériques merdiques qui font que tu pourrais être amené à comparer le revêtement de la chaîse avec la couleur d'un foureau de stylo, source de problèmes...
- Tu utilises le système de descriptueur qui va stocker les infos requises et uniquement celles-ci pour chaque ligne de façon indépendante. Ainsi t'as un modèle qui reste lisible, et des données qui sont cohérentes, juste un peu plus lourdes à gérer.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Passer un tableau en parametre de fonction ?

 

Sujets relatifs
[VB] passer un array en parametre ???[XSLT] Récupération d'un paramètre dans l'URL
Connaître le nombre d'éléments d'un tableau[HTML] Hauteur d'une ligne dans un tableau
(Débutant) taille tableau caractèreFonction "inverse" de date : Wed, 14 jan -> 2004-01-14
fonction mysql_num_fields probComment passer un ' ds une variable lors d'une requete sql
ajouter tableau 
Plus de sujets relatifs à : [VBA] Passer un tableau en parametre de fonction ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR