Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Trie d'un tableau dynamique avec type? [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (pcpunch)

mardi 29 juin 2004 à 02:12:36 | Trie d'un tableau dynamique avec type?

pcpunch

Slt pour les besoin d'un prog je dois trie un tableau dynamique comptenant un type :

Private Type V
D As String
Deb As String
Fin As String
Prog As String
Lib As String
End Type

Dim TabLigne() As V

D etant une date (29.06.)
Deb une heure de debut(13:55)
Fin une heures de fin (sans importance)
Prog sans importante
Lib sans importance

Voila je dois trie ce tableau :
1er par ordre de date
2eme par ordre de debut

Si qq a la solution une fonction ou autres car je sature ce soir lol, je n'ai pas trouver !!!!
++ merci

mardi 29 juin 2004 à 03:00:10 | Re : Trie d'un tableau dynamique avec type?

DeadlyPredator

Qu'est-ce que tu pense de ça :
(j'utilise un listbox pour le trie (lstTriage) et une autre pour afficher les résultats (list1))


Option Explicit

Private Type V
D As String: Deb As String: Fin As String: Lib As String
End Type

Private TabLigne() As V

Private Sub Trier(Liste As ListBox)
Dim arrBuf() As V, I As Long, Col As Variant, lngDecalage As Long
Liste.Clear
For I = LBound(TabLigne) To UBound(TabLigne)
Liste.AddItem TabLigne(I).D & "*" & TabLigne(I).Deb & "@" & I
Next
ReDim arrBuf(LBound(TabLigne) To UBound(TabLigne))
For I = LBound(arrBuf) To UBound(arrBuf)
Col = Split(Liste.List(I - LBound(arrBuf)), "@", 2)
arrBuf(I) = TabLigne(Col(1))
Next
TabLigne = arrBuf
End Sub

Private Sub RemplirTableau()
Dim I As Long
ReDim TabLigne(1 To 255)
For I = 1 To 255
Randomize
TabLigne(I).D = Int(Rnd * 9999) + 1
Randomize
TabLigne(I).Deb = Int(Rnd * 9999) + 1
Next
End Sub

Private Sub AfficherResultats()
Dim I As Long
For I = LBound(TabLigne) To UBound(TabLigne)
List1.AddItem TabLigne(I).D & " - " & TabLigne(I).Deb
Next
End Sub
Private Sub Form_Load()
RemplirTableau
Trier lstTriage
AfficherResultats
End Sub



VIVE LE QUÉBEC!
Essayez ça

Dim l As Long: Do Until l = -1: l = l + 1: Loop

p.s.Si vous l'avez essayé, vous êtes vraiment stupide

mardi 29 juin 2004 à 11:51:47 | Re : Trie d'un tableau dynamique avec type?

pcpunch


Dsl mais ton code ne fonctionne pas!!!

ma question reste ouverte , je bloque la dessus!!!

mardi 29 juin 2004 à 12:10:05 | Re : Trie d'un tableau dynamique avec type?

liquide

Membre Club
bon bien etant donné que je connais tes capacités a développer, je ne suis pas sur que ce soit ce que tu attends mais tampis je te poste une eventuelle solution.

j'ai juste fais un test basic avec une listbox



Private Type V
D As String
Deb As String
Fin As String
Prog As String
Lib As String
End Type

Dim TabLigne(15) As V

Private Sub Command1_Click()
List1.Clear
For i = 0 To 15
For k = 1 To Len((TabLigne(i).D))
pp = pp & Asc(Mid$((TabLigne(i).D), k, 1))
Next k
For j = i + 1 To 15
For k = 1 To Len((TabLigne(j).D))
aa = aa & Asc(Mid$((TabLigne(j).D), k, 1))
Next k

If pp < aa Then
mm = TabLigne(j).D
TabLigne(j).D = TabLigne(i).D
TabLigne(i).D = mm
End If

aa = ""
Next j
Next i

For i = 0 To 15
List1.AddItem TabLigne(i).D
Next i

End Sub

Private Sub Form_Load()
For i = 0 To 15
TabLigne(i).D = i & "-12"
List1.AddItem TabLigne(i).D
Next i
End Sub


il y a forcement a redire sur le code mais bon ... à tester
dsl pour les variables, c'etait du rapidos

bonne prog
liquide

mercredi 30 juin 2004 à 00:33:02 | Re : Trie d'un tableau dynamique avec type?

DeadlyPredator

il faut mettre 2 liste dans la form : une appellée list1 et une autre appellée lstTriage qui à la propriétée "Sorted" à True. C'est censé marcher parfaitement.

VIVE LE QUÉBEC!
Essayez ça

Dim l As Long: Do Until l = -1: l = l + 1: Loop

p.s.Si vous l'avez essayé, vous êtes vraiment stupide

mercredi 30 juin 2004 à 12:16:21 | Re : Trie d'un tableau dynamique avec type?

pcpunch

Non je n'utilise pas les listbox!!!!

Le probléme est réglé merci a juvamine pour ses explications...

Voici le code utilisans un trie a bulle, c'est pas le trie le plus rapide mais ca marche !!

Je le depose au cas ou qq cherche ça!!!


Private Type V
StrDate As Date
StrDebut As Date
StrFin As String
StrCha As String
End Type
Dim Tabligne(0 To 5) As V

Private Sub Form_Load()

Tabligne(0).StrDate = "26/06"
Tabligne(0).StrDebut = "12:30"
Tabligne(0).StrFin = "12:55"
Tabligne(0).StrCha = "TF1"

Tabligne(1).StrDate = "26/06"
Tabligne(1).StrDebut = "11:30"
Tabligne(1).StrFin = "12:59"
Tabligne(1).StrCha = "C+"

Tabligne(2).StrDate = "29/06"
Tabligne(2).StrDebut = "02:30"
Tabligne(2).StrFin = "02:55"
Tabligne(2).StrCha = "ARTE"

Tabligne(3).StrDate = "26/06"
Tabligne(3).StrDebut = "22:30"
Tabligne(3).StrFin = "02:55"
Tabligne(3).StrCha = "TF1"

Tabligne(4).StrDate = "29/06"
Tabligne(4).StrDebut = "01:30"
Tabligne(4).StrFin = "02:55"
Tabligne(4).StrCha = "F3"

Tabligne(5).StrDate = "26/06"
Tabligne(5).StrDebut = "00:10"
Tabligne(5).StrFin = "02:55"
Tabligne(5).StrCha = "F2"

'Affichage du tableau dans list1 non trié
Call affiche(List1)

End Sub

Private Sub Command1_Click()

'1 Trie par date
'===============
Dim temp As V

Do
nb = 0
DoEvents

For i = 0 To UBound(Tabligne) - 1

If Tabligne(i).StrDate > Tabligne(i + 1).StrDate Then

temp.StrDate = Tabligne(i).StrDate
temp.StrDebut = Tabligne(i).StrDebut
temp.StrFin = Tabligne(i).StrFin
temp.StrCha = Tabligne(i).StrCha

Tabligne(i).StrDate = Tabligne(i + 1).StrDate
Tabligne(i).StrDebut = Tabligne(i + 1).StrDebut
Tabligne(i).StrFin = Tabligne(i + 1).StrFin
Tabligne(i).StrCha = Tabligne(i + 1).StrCha

Tabligne(i + 1).StrDate = temp.StrDate
Tabligne(i + 1).StrDebut = temp.StrDebut
Tabligne(i + 1).StrFin = temp.StrFin
Tabligne(i + 1).StrCha = temp.StrCha

nb = nb + 1

End If

Next i

Loop Until nb = 0

'2 Trie par Heure de debut
'=========================

Dim var As Date
i = 0
While i < UBound(Tabligne)

lemin = i

var = Tabligne(i).StrDate

'on recup l'indice de la derniere date pareil
While Tabligne(i).StrDate = var And i < UBound(Tabligne)
i = i + 1
Wend
lemax = i - 1

Do
nb = 0
For j = lemin To lemax - 1

If Tabligne(j).StrDebut > Tabligne(j + 1).StrDebut Then

temp.StrDate = Tabligne(j).StrDate
temp.StrDebut = Tabligne(j).StrDebut
temp.StrFin = Tabligne(j).StrFin
temp.StrCha = Tabligne(j).StrCha

Tabligne(j).StrDate = Tabligne(j + 1).StrDate
Tabligne(j).StrDebut = Tabligne(j + 1).StrDebut
Tabligne(j).StrFin = Tabligne(j + 1).StrFin
Tabligne(j).StrCha = Tabligne(j + 1).StrCha

Tabligne(j + 1).StrDate = temp.StrDate
Tabligne(j + 1).StrDebut = temp.StrDebut
Tabligne(j + 1).StrFin = temp.StrFin
Tabligne(j + 1).StrCha = temp.StrCha
nb = nb + 1

End If

Next j

Loop Until nb = 0

i = lemax + 1
Wend

'Affichage du tableau trié par date et par heure
Call affiche(List2)

End Sub




Sub affiche(Src As ListBox)
Src.Clear
For i = 0 To UBound(Tabligne)
With Tabligne(i)
Src.AddItem .StrDate & " " & .StrDebut & " " & .StrFin & " " & .StrCha
End With
Next i
End Sub




++



Cette discussion est classé dans : trie, dynamique, string, type, tableau


Répondre à ce message

Sujets en rapport avec ce message

Trie tableau dynamique avec type [ par pcpunch ] Slt j'ai un tableau "ARTICLE" dynamique avec un type :Type ArticleVCode As StringNom As StringFamille As StringTVA As StringTTC As StringEnd TypePubl Convertion de string en decimal [ par tiwolfette ] Bonjour à tous,Je stocke dans un tableau de type string une grande quantité d'info et notamment des chiffres a virgules. Chiffres dont je dois me serv excel tableau croise dynamique [ par chmod__777 ] Bonjour a tous,Voila mon probleme, j ai des donnees dans une feuille excel reparties de la sorte:Type de magazine, Nom du magazine, PointsJe cree un t Tableau Dynamique [ par maesius ] Bonjour,Voial g fait cela sur une form :Private Type Type_Tab_position TPos_nom As String TPos_actif As Integer TPos_X As Single TPos_Y As taille en mémoire de tableau ou de type personnel [ par marco62118 ] bonjour à tous voilà un petit bout de code. Type TyCellule Mot_Av_H As String Mot_Av_V As String Mot_Ap_H As String Mot_Ap_V As St Tableau dynamique [ par bizzard4 ] BonjourJ'ai fait une application web (ASB.NET - VB) avec un tableau dynamique qui affiche les dépenses et revenus de ma compagnie. Je voudrais faire l incompatibilité de type [ par h_adil ] lorsque je compile mon code sur vba j'ai un message d'erreur "incompatibilité de type" strTabName=CDE20070702090603189.txtje voudrais savoir comment i Liaison Module de classe pour DLL [ par drouault ] Bonjour,J'ai un souci que je n'arrive pas à résoudre mais qui doit pourtant être assez simple. Je débute dans la programmation avec les modules de cla Boucle dans tableau qui renvoie faux a chaque fois [ par niko14 ] Bonjour tout le monde, eh oui c'est encore moi!!!voila j'ai un petit probleme!!je charge un tableau avec 41000 codes, oui rien que ca!!ensuite j'ai fa tableau dynamique [ par darkflyer ] bonjour,j'avais une question concernant l'utilisation des tableau dynamiques pour lire un fichier dont je conais pas le nombre lignes ni de colonnes.c


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.