Base de donnée tableau 3 dimensions

Bonjours j'ai un petit souci.

Je souhaite créer une base de données à partir de liste d'élèves afin de pouvoir les réutiliser plus tard.

Il me semble avoir trouver le moyen de rentrer les différentes classes dans la base de données mais j'ai 2 gros problèmes.

1) Comment arriver à figer cette base de donnée et qu'elle ne se vide pas une fois rempli (sauf si je modifie une information ex : un élève arrive en cours d'année je le rajoute)

2) J'ai un bug car chaque variable impaire ne marche pas. Ex : Listeclasse(4, 2, 2) j'aurais bien la valeur lorsque je met un espion.

Mais si une des 3 coordonnées est impaire la variable ne s'inscrit pas Listeclasse(4, 2, 1) sera vide....

Je joint mon fichier le code est dans le module 2

Merci de votre aide par avance.

J'apprend le VBA grace a ce que je trouve sur ce site donc je suis débutant :/

Bonjour Masse.

Peux-tu expliquer pour quelle raison souhaites-tu enregistrer cette base de données ?

A quoi te servira-t-elle ?

Je souhaite ensuite incorporer des feuilles de notation ou de barème en fonction des activités que nous proposons.

Par exemple dans Relais terminale , je voudrai sélectionner la classe pour avoir a choisir dans des menu déroulant les élèves correspondant à cette classe.

Une fois la classe choisie et les élèves attribués à chaque groupe, je n'aurais plus qu'a rentrer leur temps et que le calcule de note se fasse en fonction des différents barèmes et de fait que les barèmes diffèrent des garçons et des filles.

ex : la feuille 3x400 3x500 ou les boutons font appel a 2 barèmes différents.

Je ne suis pas doué avec les listes déroulantes dans les feuilles de calcul.

Surtout qu'il faudrait que les listes déroulantes puissent interagir les unes avec les autres (éviter qu'un élève se trouver sur plusieurs groupes pour une même course).

Avec le fichier en l'état je ne pourrai pas apporter mon aide, j'en suis désolé.

Bonjour,

La macro corrigée

Option Explicit

Sub Init()
Dim listeclasse$(39, 2, 8)
Dim classe%, iRE%, iCE%, iCC%
Dim a%, b%, c%, i%, k%
'rem: La feuille Liste Classes doit être la feuille Active
Worksheets("Liste Classes").Activate
iRE = 4  'décalage ligne
iCE = 2  'décalage colonne
iCC = 5  'décalage classe
c = 0
For c = 0 To 8
    b = 0
    For b = 0 To 2
        a = 0
        For a = 0 To 39
            listeclasse(a, b, c) = Cells(iRE + a, iCE + b + c * iCC)
        Next a
    Next b
Next c

'Affichage classe 3 (211) => Ligne 50
classe = 3
For i = 0 To 39
   For k = 0 To 2
      Cells(50 + i, k + 2) = listeclasse(i, k, classe)
   Next
Next
[A50].Activate
End Sub

Remarque : Cette macro ne présente qu'un intérêt très relatif (disons... pour s'initier à la manipulation des tableaux 3D ! )

La manip des Array 3D est quand même un peu lourde. A mon avis tu aurais intérêt à te tourner vers les plagess dynamiques pour définir tes classes...

Exemple de plages dynamiques dans le classeur joint

Nota : La ligne 2 de la liste des classes à été défusionnée et centrée normalement.

Je t'ai mis en plus un exemple d'utilisation des plages dynamiques dans le module Macro2

A+

@ thebenoit59 Je pensai pour gérer les listes déroulantes créer des variable doublons de la classe selectionner pour la feuille d'activité en question. Et pour le coup ne pas sortir de la liste un élève déjà attribuer à un groupe m'arrange par exemple le cas de HADRI Katy qui a courru dans 2 groupe car le nombres d'élèves m'obliger à faire ca en relais 1ère.

@ galopin01

Déjà merci pour ta réponse il faut que je regarde ça très concentrer pour comprendre Peux tu m'expliquer les quelques modification que tu as opéré par exemple mettre des % à la suite d'une variable ou des $

Et dis moi si je me trompe, pour utiliser cette base de donnée il faudra que à chaque debut de nouvelle macro par exemple je rappel l'execution de init() pour les restocker dans la variable listeclasse?

si jamais je suis sur discord à

c'est comme skype ou teamspeak mais sans rien telecharger pour discuter c'st pratique et gratuit

Les déclaration collectives ça n'existe pas en VBA

Dim i, j, k as Integer 'iznogood !

Dans ce code seul k est integer i et j sont variant...

Il faudrait écrire :

Dim i as Integer , j as Integer , k as Integer 

ou encore

Dim i as Integer
Dim j as Integer
Dim k as Integer

ce qui m'agace au plus haut point.

Avec cette manière de faire :

Dim i% , j% , k% ' Les 3 variables sont déclarées integer

une variable déclrée avec le suffixe $ est une variable de type As "String"

Dim Machaine$
MaChaine = "123" 'est un String 

ça me fait d'ailleurs penser qu'il faut rajouter un :

Dim i% 'au début de ma macro ListUneClasse

Si tu utilises ta variable 3D tu peux stocker une variable en permanence à condition de la déclarer hors de la macro tout à fait en haut du module :

Option Explicit
Dim listeclasse$(39, 2, 8)
Sub init()
'...

Tu remarqueras que je n'utilise pas de variables. J'utilise directement le Nom de la Classe qui contient déjà tous les élèves. Dans ces conditions tu n'as pas besoin de stocker de variable...

Sub test()
Dim MaPlage
Set MaPlage = [C_210]
MsgBox "Nombre d'élève : " & MaPlage.Resize(, 1).Count
End Sub

A+

[EDIT] Discord ne prend pas en charge Edge

Rechercher des sujets similaires à "base donnee tableau dimensions"