Un tableau stocké en mémoire avec allocation dynamique.

Adoc5 Messages postés 53 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 1 octobre 2007 - 5 mai 2004 à 14:11
darollinghobbit Messages postés 55 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 18 juin 2004 - 6 mai 2004 à 11:41
Bonjour tout le monde,

J'ai des valeurs dans un tableau Excel, je veux mettre ces valeurs dans un tableau stocké en mémoire avec allocation dynamique. A partir de là je veux moyenner deux à deux chaques nombres de ce tableau et stocker le résultat dans le même tableau dynamique en écrasant le contenu de la première case. Et tout ceci en VB sous Excel.

Quelqu'un a-t-il une idée ?
Merci d'avance.
:)

3 réponses

darollinghobbit Messages postés 55 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 18 juin 2004 1
5 mai 2004 à 15:16
Salut,

Tout d'abord tu dois parcourir ton fichier excel (pour l'exemple je n'utilise que deux colonnes mais tu peux en utiliser plus)

Dim mySheet as Excel.Workbook
Dim iCpt as integer
Dim iTab as integer
Dim monTab() as long

Set mySheet = Sheet("Feuil1")

iCpt = 1
iTab = 0

'On initialise la première ligne du tableau à deux dimensions
Redim monTab(1,iTab)

'Lecture de la feuille excel tant que la valeur de la cellule An n'est pas nulle
While mySheet.Range("A" & iCpt) <> ""

'On récupère les valeurs de la cellule A de la ligne iCpt et on les stockes dans monTab
monTab(0,iTab) = mySheet.Range("A" & iCpt)

'Idem pour les vaeurs de la cellule Bn
monTab(1,iTab) = mySheet.Range("B" & iCpt)

'Calcul de la moyenne sur la première case du tableau
monTab(0,iTab) = (monTab(0,iTab) + monTab(1,iTab))/2

'On incrémente les compteurs
iCpt = icpt + 1
iTab = iTab + 1

'Redimensionnement du tableau
Redim Preserve monTab(1,iTab)

Wend

Ceci devrait faire ce que tu veux
0
Adoc5 Messages postés 53 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 1 octobre 2007 1
5 mai 2004 à 15:46
Ok merci bien.

Mais la compilation plante et me surligne le mot Sheet (celui après le égal).

Set mySheet = Sheet("Sheet1") (car j'ai la version américaine).

As-tu une idée ?
Merci d'avance.
:)
0
darollinghobbit Messages postés 55 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 18 juin 2004 1
6 mai 2004 à 11:41
Petite erreur de ma part avec ceci ça fonctionne

Dim mySheet As Excel.Worksheet
Dim iCpt As Integer
Dim iTab As Integer
Dim monTab() As Long

Set mySheet = Worksheets("Feuil1")
0
Rejoignez-nous