Mec, ça peut pas marcher ton truc...
Tu t'y prend mal...
j'ai bien compris ton problème...
NE redéclare pas ta variable tbl() dans ta Sub BtnCmdOk de ton forumlaire UserFormSelectionDeRepertoir.
Car si tu l'as redéclare, ce sera la variable LOCAL de cette Sub a laquelle tu ajouteras les enregistrements sur la colonne 1.
Tu n'as pas bien compris le fonctionnement des variables GLOBALES / LOCALES.
Va sur des sites de programmation où cela sera expliqué, car c'est primordial que tu comprennes cela...
En plus, tu n'as pas non plus compris l'allocation mémoire avec un tableau dynamique...
Essai de rentrer des valeurs dans la case 5 de ton tableau dynamique, tu verras que ça ne marchera pas dans ton code.
Il faut ALLOUER la mémoire dans ton tableau, c'est à dire lui dire "combien de case il faut qu'il reserve en mémoire).
Si tu veux stocker 5 chansons, tu feras :
Redim Preserve tbl(5)
Après cette instruction, tu auras allouer 5 cases contenant chacune un enregistrement de type "enr". (tout cela, dans ta mémoire RAM bien sûr).
J'ai compris ton problème, mais tu n'as pas compris la solution que j'essai de t'apporter... c'est ça le problème man...
Bon courage...
-------------------------------
Réponse au message :
-------------------------------
> enfait je pense que le plus gros probleme est que j'ai du mal expliquer mon probleme...
>
> ce que tu m a donner fonctionne très bien, mais enfait moi mon problème est que:
>
> J ai une feuille qui s apel UserFormSelectionDeRepertoir.frm ou j ai mon code et a un endroit j ai ceci
>
>
>
> Public Sub BtmCmdOk_Click() > > Dim tbl() As enr > Dim Fichier As String > Dim Chemin As String > > 'recherche les information dans les tag id3 et les met dans les variables. > > Dim enr1 As enr > enr1.Chemin = Chemin > enr1.Artiste = GetArtiste(Chemin & "\" & Fichier) > enr1.Titre = GetTitre(Chemin & "\" & Fichier) > enr1.Album = GetAlbum(Chemin & "\" & Fichier) > tbl(Ligne) = enr1 > > MsgBox tbl(0).Chemin > MsgBox tbl(0).Artiste > MsgBox tbl(0).Titre > MsgBox tbl(0).Album > > End Sub > |
> et la ça m afiche les valeur de la premiere ligne du tableau sur des msgbox
>
> puis j'ai aussi un modul qui s appel Tableau et dedan j'ai:
>
>
>
> Type enr > Chemin As String > Artiste As String > Titre As String > Album As String > End Type > > Public tbl() As enr > |
>
>
> et pour finir, j ai une deuxieme feuille qui s apel UserFormjukandsearch.frm et â un endroit dans cette feuille j ai ce code:
>
>
> Private Sub test_Click() > > MsgBox tbl(0).Chemin > MsgBox tbl(0).Artiste > MsgBox tbl(0).Titre > MsgBox tbl(0).Album > > End Sub > |
>
> alor ce que je ne comprend pas c'est que dans la premiere feuille ca affiche ce qu il y a dans la case 0 et dans la deuxième feuille ca ne marche pas.
>
> Car enfait ce que je voudrais faire, c est que sur la premiere feuille je défini ce qui vas dans le tableau et que ces valeur sois enregistrer dans le le module pour que je puisse apeler ces valeur n'importe quand.
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > C'est normal que ça ne marche pas...
> >
> > Tu n'as pas bien compris le fonctionnement des variables, ni le fonctionnement des tableaux dynamiques...
> >
> > Tout d'abord, pourquoi redéclares-tu ta variable tbl dans ta procédure (Sub) ?
> >
> > tbl est GLOBAL, car tu l'as déclaré Public dans ton Module Tableau. Cela te permet de l'utiliser n'importe ou dans ton projet et SANS JAMAIS LA REDECLARER !
> >
> > Ensuite, tu fais un MsgBox tbl(0).Chemin.
> > Cela ne peux pas marcher si tu n'as pas allouer de la mémoire pour la case 0 de ton tableau !
> >
> > Quand tu déclare un tableau dynamique, c'est à toi de lui allouer de la mémoire grâce à l'instruction suivante :
> > Redim Preserve tbl(5)
> >
> > J'ai mis 5 en exemple... Ceci permet d'allour en mémoire vive (dans la RAM de ton PC) 6 emplacements (donc 6 chasons dans ton tableau).
> >
> > Après, il faut remplir tes cases...
> >
> > Je te donne un exemple :
> >
> > >
> > > Private Sub test_Click() > > > > > > Redim Preserve tbl(0) > > > > > > tbl(0).Chemin = "c:" > > > tbl(0).Artiste = "Ben Harper" > > > tbl(0).Titre = "Burn One Down" > > > tbl(0).Album = "Fisht For your Mind" > > > > > > MsgBox tbl(0).Chemin > > > MsgBox tbl(0).Artiste > > > MsgBox tbl(0).Titre > > > MsgBox tbl(0).Album > > > > > > End Sub > > > |
> >
> > Est-ce que tu étudie ou a étudié la propgrammation ?
> > Tu débutes en VB ?
> >
> > Ce site est super pour les débutants...
> > On est tous passer par là...
> >
> > Bon courage...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Merci beaucoup, mais le gros prob c'est que sur mon autre feuille quand j'essaye de lire mon tableau, je n y arive pas.
> > >
> > > J ai mis ça dans mon sub pr faire un test. Mais ca ne marche pas
> > >
> > > Private Sub test_Click() > > > > > > Dim tbl() As enr > > > > > > MsgBox tbl(0).Chemin > > > MsgBox tbl(0).Artiste > > > MsgBox tbl(0).Titre > > > MsgBox tbl(0).Album > > > > > > End Sub > > > |
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Tu as déclaré ta variable tbl Public dans ton Module Tableau.
> > > >
> > > > Tu peux donc accéder à cette variable (qui contient une liste de chansons) depuis n'importe quel formulaire de ton projet ou depuis n'importe quel module.
> > > >
> > > > Ta variable tbl est GLOABL...
> > > >
> > > > Par contre, il faut que tu ajoutes une variables NbChanson qui te permettra de savoir combien tu as de chansons dans ton tableau tbl. (cependant, tu peux aussi faire avec UBound$(tbl), qui te retourne le nombre d'élement de ton tableau).
> > > >
> > > >
> > > > Ajoute ces 2 fonctions dans ton module Tableau :
> > > >
> > > >
> > > > 'Cette fonction te permet d'ajouter une chanson à ton tableau
> > > > Public Sub AddSong(Chemin as String, Artiste as String, Album as String, Titre as String)
> > > >
> > > > Redim Preserve tbl(NbChanson)
> > > > tbl(nbChanson).Chemin = Chemin
> > > > tbl(nbChanson).Artist = Artiste
> > > > .....
> > > > NbChanson = NbChanson + 1
> > > >
> > > > End sub
> > > >
> > > >
> > > > 'Cette fonction te permet d'enlever une chanson à ton tableau
> > > > Public Sub RemoveSong(Titre as String)
> > > >
> > > > '1- Tu recherche en parcourant ton tableau le Titre correspondant au paramètre
> > > >
> > > > '2- Tu appliques un algorithme qui va dpélacer les élément de ton tableau suivant
> > > >
> > > > '3- Tu décrémente ton compteur NbChanson
> > > >
> > > > (désolé, mais je n'ai pas le temps de te mettre ce code)
> > > >
> > > > End sub
> > > >
> > > >
> > > > CONSEILS :
> > > > Utilise un identifiant UNIQUE pour caractériser une chanson
> > > > (Tu ajoutes une variable Id as Long dans ton TYPE)
> > > >
> > > > Ajoute un champ Duree (qui correspond à la durée d'une chason)...
> > > >
> > > > Fais toi une petite table Merise ou UML pour bien conceptualiser ton projet...
> > > >
> > > > Bon courage...
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Merci beaucoup, ça fonctionne bien. Mais j'ai juste encore un petit probleme, J ai mis :
> > > > >
> > > > >
> > > > > Type enr > > > > > Chemin As String > > > > > Artiste As String > > > > > Titre As String > > > > > Album As String > > > > > End Type > > > > > > > > > > Public tbl() As enr > > > > > > > > > > |
> > > > >
> > > > > dans un module que j ai apeler Tableau, mais comme je rempli mon tableau, sur une feuille, et que je veux le lire sur une autre, je ne sais pas comment faire pour pouvoir accèder au donner que j ai placer dans mon tableau.
> > > > >
> > > > > Est ce que je dois utiliser un call??
> > > > >
> > > > > Merci d'avance
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Déclaration d'un tableau de String dynamique :
> > > > > > Dim tab() as String
> > > > > >
> > > > > > Allocation mémoire en préservant les éléments du tableau :
> > > > > > Redim Preserve tab(2)
> > > > > >
> > > > > > Affectations :
> > > > > > tab(0) = "toto"
> > > > > > tab(1) = "tata"
> > > > > > tab(2) = "tutu"
> > > > > >
> > > > > > Ajout d'une nouvelle String au tableau :
> > > > > > Redim Preserve tab(3)
> > > > > > tab(3) = "tété"
> > > > > >
> > > > > >
> > > > > > J'ai pris l'exemple d'une tableau dynamique de STRING, mais tu peux très bien créer ton propre type et en faire une liste dynamique...
> > > > > >
> > > > > > Private Type Personne
> > > > > > Nom as String
> > > > > > Prénom as String
> > > > > > Age as Byte
> > > > > > End Type
> > > > > >
> > > > > > Dim listPersonne() as Personne
> > > > > > Dim nbPersonne as Long 'Nombre de personne stocké dans la liste
> > > > > >
> > > > > > Après, tu te fais une fonction d'ajout d'une personne et une fontion pour enlever une personne...
> > > > > >
> > > > > > Je pense qu'avec tous les exemples cités, tu doit pouvoir y arriver maintenant...
> > > > > >
> > > > > > Bon courage
> > > > > >
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > En plus simple :
> > > > > > >
> > > > > > > Type TMonTableau
> > > > > > > Col1 as ...
> > > > > > > Col2 as ...
> > > > > > > Col3 as ...
> > > > > > > Col4 as ...
> > > > > > > end type
> > > > > > >
> > > > > > > dim montableau(0 to 10) as Tmontableau
> > > > > > >
> > > > > > > _________________________________________________
> > > > > > > La seule chose que non avons à faire ici-bas c'est
> > > > > > > choisir quoi faire du temps qui nous à été imparti !!!
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > >
> > > > > > > > Private Type enr
> > > > > > > > num As Integer
> > > > > > > > nom As String * 25
> > > > > > > > End Type
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Public Function IsArrayEmpty(ByVal V As Variant) As Boolean
> > > > > > > >
> > > > > > > > On Error Resume Next
> > > > > > > >
> > > > > > > > Err.Clear
> > > > > > > > V = UBound(V)
> > > > > > > > IsArrayEmpty = (Err.Number = 9)
> > > > > > > > Err.Clear
> > > > > > > >
> > > > > > > > End Function
> > > > > > > >
> > > > > > > > Private Sub essai()
> > > > > > > >
> > > > > > > > Dim tbl() As enr
> > > > > > > >
> > > > > > > > 'MsgBox IsArrayEmpty(tbl)
> > > > > > > >
> > > > > > > > ReDim tbl(5)
> > > > > > > >
> > > > > > > > 'MsgBox IsArrayEmpty(tbl)
> > > > > > > > Dim enr1 As enr
> > > > > > > > enr1.nom = "Nicolas"
> > > > > > > > enr1.num = 10
> > > > > > > > tbl(0) = enr1
> > > > > > > >
> > > > > > > > MsgBox tbl(0).num
> > > > > > > > MsgBox tbl(0).nom
> > > > > > > > End Sub
> > > > > > > >
> > > > > > > >
> > > > > > > > un tableau dynamique de deux colonnes
> > > > > > > >
> > > > > > > > ensuite il faut jouer avec preserve et redim pour le rendre dynamique a souhait :-)
> > > > > > > >
> > > > > > > >
> > > > > > > > -------------------------------
> > > > > > > > Réponse au message :
> > > > > > > > -------------------------------
> > > > > > > >
> > > > > > > > > bonjour,
> > > > > > > > >
> > > > > > > > > J'aimerais faire créé un tableau dynamique avec 4 colonnes
> > > > > > > > >
> > > > > > > > > Est-ce que quelqu'un pourrait m'aider??

> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>