Affecter une valeur a un tableau

king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004 - 13 mai 2004 à 15:35
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004 - 14 mai 2004 à 14:42
salut a tous..;

ai du mal a saisir le fonctionnement des tableaux sous VB..;

voici le code ke j'utilise pour affecter une cvaleur a un tableau

Function code_RII()
  'macro permettant de générer des codes en concatenant les deux premieres cellules de ma feuille
Dim code() As String
Dim nbligne As Integer
Dim compteur as Integer
nbligne = Worksheets(3).UsedRange.Rows.Count
nbligne = nbligne + Worksheets(3).UsedRange.Row - 1
Application.ScreenUpdating = False 
compteur = 0
For ligne = 2 To nbligne
code(compteur) = Cells(ligne, 1).Value & "-" & Cells(ligne, 2).Value
compteur = compteur + 1
Next ligne
code_RII = code()
End Function


je sais ke cette methode fonctionne mais j'obtiens le msg d'erreur suivant:
l'indice n'appartient pas a la selection

donc si j'ai compris je suis out de mon tableau mais je ne suis pas meme pas entre dedans vu ke le msg arrive des la premiere affectations..

dc si vous savez faites moi partager votre savoir..;
@+++

10 réponses

blissdumpweed Messages postés 79 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 8 juin 2004
13 mai 2004 à 15:38
Je suppose que ton tableau s'appelle Code, donc si c'est ça : tu dois mettre un nombre entre les parenthèses de ton tableau
Exemple : Dim Code(20) as String
Ton tableau qui s'appelle Code Possédera 21 lignes, car la première ligne a l'index 0.
0
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
13 mai 2004 à 15:51
okipi je dois specifier la taille
belle erreur de ma part car c pareil en C(langage dou je vien)

mais par hasard est ce ke tu sais comment allouer dynamikement cette taille de tableau..

(en C on utilise malloc ou calloc)

mais mmerci pr ta reponse... elle me fait bien avancer
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
13 mai 2004 à 15:57
Bonjour,

tu peux faire le redimensionnement lorsque tu y ajoutes des choses :

Dim tableau() As String
Dim cpt As Integer

cpt = 0
For cpt = 0 To 10
ReDim Preserve tableau(cpt)
tableau(cpt) = "élément n° " & cpt
Next cpt

For cpt = 0 To 10
MsgBox tableau(cpt)
Next cpt


Fanny
0
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
13 mai 2004 à 16:07
merci fanny...
je teste de suite et te tient au courant
:clown)
0

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

Posez votre question
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
13 mai 2004 à 16:12
tester et msg erreur
PS: j'vous jure ke je vais pas expres...

Function code_RII()
  'macro permettant de générer des codes en concatenant les deux premieres cellules de ma feuille
Dim code() As String
Dim nbligne As Integer
Dim compteur As Integer
nbligne = Worksheets(3).UsedRange.Rows.Count
nbligne = nbligne + Worksheets(3).UsedRange.Row - 1
Application.ScreenUpdating = False
compteur = 0For ligne 2 To nbligne>ReDim Preserve code_RII(compteur)
code(compteur) = Cells(ligne, 1).Value & "-" & Cells(ligne, 2).Value
compteur = compteur + 1
Next ligne
code_RII = code()
End Function


juste encore un petit coup de pouce
0
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
13 mai 2004 à 16:13
tester et pas de msg d'erreur
MERCI FANNY apprecie tes coups de mains

Function code_RII()
  'macro permettant de générer des codes en concatenant les deux premieres cellules de ma feuille
Dim code() As String
Dim nbligne As Integer
Dim compteur As Integer
nbligne = Worksheets(3).UsedRange.Rows.Count
nbligne = nbligne + Worksheets(3).UsedRange.Row - 1
Application.ScreenUpdating = False
compteur = 0
For ligne = 2 To nbligne
ReDim Preserve code(compteur)
code(compteur) = Cells(ligne, 1).Value & "-" & Cells(ligne, 2).Value
compteur = compteur + 1
Next ligne
code_RII = code()
End Function
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
13 mai 2004 à 16:19
Euh juste comme ça ...
d'après ton code tu veux redimensionner :
code_RII(compteur)
alors que code _RII est ta fonction ...
c'est code(compteur) tout court qu'il faut que tu ReDim Preserve.

Fanny
0
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
13 mai 2004 à 16:27
oui oui ai vu mon erreur juste apres m'etre plaint..;
donc on efface ce msg et on garde celui ou je dit ca marche...
merci fanny
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
13 mai 2004 à 19:05
Au passage, supprime le "Preserve", ton redim sera plus rapide.
Le Preserve demande à VB de conserver les infos contenu dans le tableau dynamique qd il le redimensionne. Comme ton tableau est vide, tu peux ne pas conserver ces infos.

Christophe R.
0
king_kunu Messages postés 52 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juin 2004
14 mai 2004 à 14:42
euh si
le redimensionnement est en fonction de compteur... et se fait a l'interieur de ma boucle...
comme ca j'aggrandit mon tableau au coup par coup...
si g bien tout compris a son fonctionnement
0
Rejoignez-nous