Tableau variant

ThierryR

XLDnaute Nouveau
Bonjour à tous,

J'ai une feuille avec des données. Je cherche à remplir un tableau avec ces données en passant par Type (Je suis up pour une autre méthode :) si plus simple)

Voici ma programmation qui coince sur la dernière ligne quand je veux restituer une information du tableau stocké:


Type InfoImmobilisation
Compte As String
Montant As Currency
ModeAcquisition As String
Année As Integer
Taux As Currency
ModeSortie As String
Sortie As Integer
Dotation As Currency
AmortAnt As Currency
End Type


Public Sub TestTab()

Dim Immobilisations() As InfoImmobilisation
Dim Comptes As String
Dim I As Integer
Dim J As Integer

Compte = Worksheets('Immobilisations').Range('B2').Value
I = 1
J = 1

Do Until Comptes = ''

I = I + 1

Comptes = Worksheets('Immobilisations').Cells(I, 2).Value
Immobilisations(J).Compte = Worksheets('Immobilisations').Cells(I, 2).Value
Immobilisations(J).Montant = Worksheets('Immobilisations').Cells(I, 5).Value
Immobilisations(J).ModeAcquisition = Worksheets('Immobilisations').Cells(I, 6).Value
Immobilisations(J).Année = Year(Worksheets('Immobilisations').Cells(I, 7).Value)
Immobilisations(J).Taux = Worksheets('Immobilisations').Cells(I, 8).Value
Immobilisations(J).ModeSortie = Worksheets('Immobilisations').Cells(I, 9).Value
Immobilisations(J).Sortie = Worksheets('Immobilisations').Cells(I, 10).Value
Immobilisations(J).Dotation = Worksheets('Immobilisations').Cells(I, 11).Value
Immobilisations(J).AmortAnt = Worksheets('Immobilisations').Cells(I, 12).Value

J = J + 1

Loop

Worksheets('Menu').Range('C9').Value = Immobilisations(3).Année


End Sub
 
A

Amydale

Guest
J'ai du mal a voir comment ca ne plante pas avant ta derniere ligne.

Tu n'as pas bien défini ton tableau.

Soit tu connais le nombre d'éléments de ton tableau et tu mets par exemple si tu as 17 éléments :

Dim Immobilisations(1 to 17) As InfoImmobilisation

Si tu ne connais pas le nombre d'éléments, il faut redimensionner ton tableau à chaque insertion, c a d :

ajouter :
Redim Preserve Immobilisations(1 to J)
a l'interieur de ton Do Until Comptes=''. (Il faut bien mettre le preserve, sinon ca te revide ton tableau a chaque fois).

Désolé de pas t'envoyer directement de fichier mais je n'ai pas d'excel sur ce poste

Ah tiens, une derniere remarque, tu n'as peut-etre pas besoin de I et J puisque tu leur fais faire la meme chose :eek:)

Bon courage
 

ThierryR

XLDnaute Nouveau
Bonjour Amydale et le forum,

Merci d'avoir pris le temps de me répondre.

Merci pour l'information pour le Redim Preserve.
J'ai une question concernant ce dimensionnement de tableau :
Si je le dimensionne avant la boucle, dois je quand meme un Dim Preserve ?
Quant au I et J, il y a un décalage de 1 entre les deux B) .
Merci encore beaucoup

ThierryR
 

Discussions similaires

Statistiques des forums

Discussions
312 779
Messages
2 092 042
Membres
105 162
dernier inscrit
djikon