définir une taille pour mon array - VB/VBA/VBS - Programmation
Marsh Posté le 08-02-2012 à 11:13:39
Bonjour misato,
Ne manque-t-il pas une déclaration dans la variable tableau?
Code :
|
Du genre:
Code :
|
Où bien encore:
Code :
|
A tester!
Marsh Posté le 08-02-2012 à 14:04:43
Mais pourquoi utiliser une constante ?
Code :
|
Sinon, en effet tu peux utiliser ReDim dès que tu dépasses 51.
Code :
|
Marsh Posté le 08-02-2012 à 19:19:08
merci pour vos réponses !
alors, c'est du vbscript pour de la gestion active directory, donc je sais pas trop si il appréciera les Dim <variable> As <type> (me semble avoir vu que c'était pas pris en charge en VBS, uniquement VB/VBA), mais j'essaierai voir ce que mmarie propose demain. (vais ptet pouvoir tester tout de suite sur mon PC perso, tiens )
pour dje69r, disons que les traitements derrières sont déjà assez compliqués (ya 4 tableaux à gérer 2 par 2, donc, et je chope les lettres de début et de fin de chaque chaine de chaque tableau pour faire des traitements à base de case select ... qu'il faut que je répète après une pause le temps que l'AD prenne en compte la création des user, en gros), et j'ai pas envie de m'embéter à traiter ça autrement qu'avec une sortie violente en cas de dépassement de taille
la question serait aussi de savoir combien ça coute en terme CPU un Redim Preserve. si j'en fait 50 alors que je suis sur mon controleur de domaine qui gère toute la France (plusieurs milliers de personne rien qu'au service info, j'ai pas de visibilité sur la totalité de l'effectif ), et que je le plante ou le rends indisponible ...
edit : la méthode en 3 temps marche \o/ ! ... pourquoi j'y ai pas pensé plus tot ? (et donc, le "As <type>" me fait une erreur style "fin d'instruction attendue" ...)
bon, maintenant, en fait je vais ptet faire un truc style la taille à 25, et si je dépasse, je redim sur 25 de plus, et ainsi de suite ... histoire de pas faire trop de redim preserve
Marsh Posté le 08-02-2012 à 19:53:06
Citation : pour dje69r, disons que les traitements derrières sont déjà assez compliqués (ya 4 tableaux à gérer 2 par 2, donc, et je chope les lettres de début et de fin de chaque chaine de chaque tableau pour faire des traitements à base de case select ... qu'il faut que je répète après une pause le temps que l'AD prenne en compte la création des user, en gros), et j'ai pas envie de m'embéter à traiter ça autrement qu'avec une sortie violente en cas de dépassement de taille |
je ne vois pas le rapport. Une constante, d'ou son nom c'est sensé etre constant. Or, toi ca varie. Je te dis donc de passer par une variable.
Apres je ne sais pas ce que tu stocke, mais un Redim de 50 a 100 valeurs sur un tableau a une dimension, ca prend pas grand chose niveau ressource...
Sinon, des attaques d'AD via WMI en VBS j'en ai bouffé, pas eu de souci pour declarer une variable typee.
Marsh Posté le 08-02-2012 à 20:29:13
bon ...
pour le moment, 50 c plus ou moins le double de ce que j'ai eu de plus gros ... j'ai juste un peu peur qu'un traitement automatique sur autant de données soit juste pas normal, mon boulot c pas de faciliter ce genre de traitement, c de savoir s'il faut l'autoriser, à la base - accessoirement, j'avais quasiment jamais fait de VBS il y a moins de 2 semaines ... j'ai donc des appréhensions pour le moment
mais en gros, c juste de la paresse, si tu veux
et donc, quand tu déclares une constante dans un fichier VBS que tu double-cliques dessus, il t'envoie pas chier quand tu fais un dim <variable> as <type>
si je met un "= <valeur>" il me dit qu'il attendait une valeur au niveau du "as", si je mets rien, il me dit qu'il attendait une fin d'instruction (toujours sur le "as" ) ... m'enfin bref, pour le moment il se débrouille très bien tout seul !
Marsh Posté le 09-02-2012 à 09:00:16
Bonjour,
En fait le mieux c'est de redimensionner la variable tableau sur l'étendue d'une classe.
Par exemple, sur Excel, on pourrait utiliser la propriété "Count" de la collection "Sheets", le but est de toujours mettre à jour la variable et au revoir l'erreur!
Code :
|
Dans cet exemple on stock le nom des feuilles et on les réitère dans une MsgBox. La variable MyTab() est systématiquement redimensionnée quelque soit le nombre de feuille ajoutée ou supprimée.
Ceci marche très bien en VB/VBA.
Marsh Posté le 09-02-2012 à 10:19:19
Citation : et donc, quand tu déclares une constante dans un fichier VBS que tu double-cliques dessus, il t'envoie pas chier quand tu fais un dim <variable> as <type> |
Non mais tu ne t'emmerdes pas, tu ne mets pas "Option Excplicit" et tu déclares donc tes variables implicitement.
Par défaut c'est du variant mais en fonction de ce que tu affectes il change tout ca comme il faut.
Toto = "Salut" sera une String.
Pas besoin de se casser la tête avec ca...
Par contre, tu parles de milliers de personnes à attaquer dans AD, mais tu boucles sur 50 valeurs de tableau...
Tu fais quoi réellement ? Tu ajoutes juste des users à la volée ?
Marsh Posté le 09-02-2012 à 14:37:12
l'AD compte des milliers d'user. moi j'en ajoute quelques uns de temps en temps, avec des droits spécifiques. je veux pas non plus ajouter les droits à la moitié de la boite (remarque, plus de problème comme ça )
en tous cas merci, là pour le moment je me bats avec des ADODB.connection pour me logger sur différents domaines
Marsh Posté le 07-02-2012 à 20:15:00
bonjour,
j'ai un script VBS qui prends un fichier texte en entrée, et me stocke chaque chaine de caractère du fichiers dans un tableau.
j'ai défini mon tableau en faisant arrTest(50), donc mon tableau comporte 51 valeurs.
j'ai un indice indTest que je mets à zéro au début, et que j'incrémente (logique ) dans mes traitements.
si jamais mon indTest dépasse 50, je wscript.quit avec une erreur.
le problème, c que j'aimerais bien faire un truc plus propre, avec une constante que je déclarerai pour donner la taille des tableaux (oui car en fait j'en ai 4 en tout, des tableaux, et 2 indices car je gère mes tableaux par paires)
donc un truc style
Const TAILLE_MAX As Integer = 50 '// sauf qu'avec un peu de chance le As Integer n'est pas valide en vbs !
Dim arrTest(TAILLE_MAX) '// et mes autres tableaux mais bref OSEF
quand je lance ça, il me dit qu'il attends une constante à la ligne 2, caractère 13
le reste du script marche parfaitement et fait exactement ce que je veux qu'il fasse (enfin pour le moment je teste l'affichage des différentes variables que je manipule au lieu de créer les utilisateurs, mais ça ne saurait tarder )
ya moyen de faire ça, ou avec tous les Redim Preserve que j'ai vu dans la littérature, il est incongru de vouloir utiliser une constante de taille de tableau en VBS ?
merci
Message édité par misato le 07-02-2012 à 20:16:43
---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !