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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] [vba] aide à la syntaxe pour la dimension d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] [vba] aide à la syntaxe pour la dimension d'un tableau

n°1915719
komaxi
Posté le 17-08-2009 à 13:50:24  profilanswer
 

Bonjour à vous,
 
J'aimerais avoir un petit renseignement de votre part à propos de la définition des tableau sous VBA.
 
Voilà, j'aimerai créer un tableau dont les dimensions varient en fonction des données d'entrée... et donc j'ai écrit:
 
 
Dim i as integer
Dim Camion() as string
 
For i=1 to n    'où n est un paramètre entier  
  Camion(i)= "......."  'A la place des ..... on a une phrase qui est chargée avec la procédure
  ....
Next
 
Mon problème vient de la syntaxe: en écrivant de cette manière, à chaque incrémentation de i, la dimension de Camion() change et est égale à i. Or ce que je souhaite faire c'est incrémenter les lignes du tableau camion. Et à la fin je dois en ressortir un tableau récapitulatif des phrase entrées dans le tableau camion.
 
Exemple:
Camion 1 = phrase 1
Camion 2 = phrase 2
Camion 3 = phrase 3
Camion 4 = phrase 4
....
Camion n = phrase n
 
Donc quel syntaxe doit-on utiliser pour aboutir au résultat de l'exemple?  
 
Merci de vos réponse


Message édité par komaxi le 18-08-2009 à 09:17:40
mood
Publicité
Posté le 17-08-2009 à 13:50:24  profilanswer
 

n°1915725
Deamon
Posté le 17-08-2009 à 14:07:03  profilanswer
 

ReDim Preserve Camion(i)
pour le faire à chaque fois mais si tu connais n tu peux faire
ReDim Camion(n)
au départ.

 

http://msdn.microsoft.com/fr-fr/li [...] 80%29.aspx


Message édité par Deamon le 17-08-2009 à 14:07:41
n°1915729
komaxi
Posté le 17-08-2009 à 14:15:21  profilanswer
 

Merci pour ta réponse, mais n je ne le connais pas au départ...
je vais tout de suite voir le lien que tu m'as donné

n°1915733
Deamon
Posté le 17-08-2009 à 14:17:49  profilanswer
 

Tu utilises la 1ere solution avec ReDim Preserve Camion(UBound(Camion)+1) je crois que ça doit marcher.

n°1915739
komaxi
Posté le 17-08-2009 à 14:23:19  profilanswer
 

merci,
j'ai réécrit ce que tu as marqué mais vb me souligne camion (celui après ubound) et me dit: " une valeur de type string ne peut pas etre convertie en 'Système.Array' "

n°1915741
komaxi
Posté le 17-08-2009 à 14:24:31  profilanswer
 

nan...oubli ce que je viens de dire lol

n°1915746
komaxi
Posté le 17-08-2009 à 14:30:51  profilanswer
 

Parcontre là il me souligne toute la ligne "Camion(UBound(Camion)+1)"
et il me dit que "la valeur ne peut etre null. Nom du paramètre 'Array' a la valeur Nothing"
 
je n'arrive pas a voir d'où ça vient

n°1915753
Deamon
Posté le 17-08-2009 à 14:41:27  profilanswer
 

Fais un ReDim Camion(1) au départ pour qu'il ne soit pas nul à cause du UBound. Du coup ça décale la taille à mettre à chaque fois.

n°1915775
komaxi
Posté le 17-08-2009 à 14:56:16  profilanswer
 

pour ce qui est du Redim camion(1) ça fonctionne, mais le problème de départ ne change pas car je continu à écrire:
 
pour i =1 à n
camion(i) = "phrase i"
fin
 
et quand i change, c'est la dimension de camion() qui change.

n°1915778
komaxi
Posté le 17-08-2009 à 14:59:04  profilanswer
 

désolé encore, j'ai encore omis un argument..; ça fonctionne
merci Deamon

mood
Publicité
Posté le 17-08-2009 à 14:59:04  profilanswer
 

n°1915784
komaxi
Posté le 17-08-2009 à 15:03:30  profilanswer
 

en fait ce problème persiste pour i=3
 
Normalement le ReDIm je le rapel à chaque début de Sub où je réutilise le tableau camion, pas à chaque fois que je l'incrémente??

n°1915794
Deamon
Posté le 17-08-2009 à 15:14:29  profilanswer
 

ReDim c'est pour augmenter la taille de ton tableau. Donc tu l'appelles dès que t'as besoin d'une case supplémentaire.
Si t'as fait un Redim de 2 t'auras 2 cases, si tu veux écrire en camion(3) faudra faire un Redim de 3.


Message édité par Deamon le 17-08-2009 à 15:15:29
n°1915804
komaxi
Posté le 17-08-2009 à 15:23:29  profilanswer
 

Merci de ton aide,
J'ai un autre problème maintenant, je viens de me rendre compte en mettant des msgBox que dès que j'incrément camion() et que je fait un nouveau Redim, il supprime la valeur précédente de camion() pour ne garder en mémoire seulement la dernière valeur entrée
 
Aurais-tu une petite idée?

n°1915814
Deamon
Posté le 17-08-2009 à 15:39:07  profilanswer
 

Cf ma 1ere réponse et l'aide Microsoft : ReDim Preserve Camion(i)

n°1915829
komaxi
Posté le 17-08-2009 à 15:58:06  profilanswer
 

Merci encore pour ton aide très efficace et très rapide


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

  [Résolu] [vba] aide à la syntaxe pour la dimension d'un tableau

 

Sujets relatifs
Tableau de pointeurs en cAffichage des variables d'un tableau
[Résolu] Placer le code source d'une page web en buffer (Winnet)[VBS] Comparaison de dates (résolu)
Menustrip à placer n'importe où [RESOLU]Aide script concaténation intelligente sur deux fichiers
[Résolu] Commander une LED reliée au port //Fichier excel généré qui a une taille anormale [RESOLU]
Un tableau de liste chaînée 
Plus de sujets relatifs à : [Résolu] [vba] aide à la syntaxe pour la dimension d'un tableau


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