Fonction de tri dans un tableau

cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006 - 6 août 2006 à 22:55
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 7 août 2006 à 15:32
Bonjour,
Comme je n'ai pas eu de réponse la dernière fois que j'ai posé cette question, je la repose à nouveau !
Je cherche un moyen de trié une variable tableau de 9 colonnes, contenant des données numériques et alphanumériques (le tableau contient environ 500 lignes). Je voudrais trier suivant une première colonne, une seconde, ... etc. Sans modifier l'ordre des colonnes triées précedemment.
QQN peut m'agguyer ??

20 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 août 2006 à 23:13
Salut,

j'ai bien une technique mais il me faut juste un p'tit renseignement et je te fais la procédure :
* "Je voudrais trier suivant une première colonne, une seconde, ... etc"
=> Ca veut dire quoi exactement ?

C'est genre

Dupond Arnaud
Dupond Stéphane
Durand  Henri
(critère 1, critère 2) ? est ce bien cela ?

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
7 août 2006 à 00:03
Non pas vraiment en fait j'ai une liste tel que :



N°           Pièce                                  Nbre       Larg        Haut        Long        Paq. CC Remarque<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





1              PANNE_____________    7             76           195         2741       A





2             CHEVETRE VELUX___        2             76           195         1160        A





3             CHEVRON__________      1              42           65           6257      A





4             CHEVRON__________      3             42           65           5550      A





5             CHEVRON__________      16            42           65           5197       A





6             CALAGE____________    1              42           65           1038       A





7             CALAGE____________    4             42           65           637         A





8             CHEVRON__________      1              42           65           560         A





9             CALAGE____________    1              42           65           545         A





10            CHEVETRE VELUX___        2             40           195         1160        A





15            VOLIGE_____________ 1              18            195         9542      A





16            VOLIGE_____________ 1              18            195         5821       A





17            VOLIGE_____________ 1              18            195         4461       A





18            VOLIGE_____________ 2             18            195         3042      A





19            console_____________    1              70           100         805         C





20           ARBA______________    4             40           195         6257      C





21            ARBA______________    4             40           195         6257      C





22           ARBA______________    20           40           195         5550      C





23           FAUX ARBA_________     2             40           195         4996      C





24           FAUX ARBA_________     2             40           195         4996      C





25           ARBA______________    2             40           195         3583      C





26           ENTRAIT____________ 16            40           195         3393      C





27           ARBA______________    2             40           195         2876      C





28           ARBA______________    4             40           195         2598      C





29           ARBA______________    3             40           195         1692       C





30           ARBA______________    4             40           195         1157        C





31            ARBA______________    3             40           195         985         C





32           GOUSSET___________   16            40           195         710         C





33           ENTRETOISE________    15            40           145         560         C





34           BLOCHET___________    4             40           95           1106        C





35           JAMBE DE FORCE____      26           40           95           859         C





36           BLOCHET___________    22           40           95           696         C





37           console_____________    1              30           140         800         C





38           console_____________    1              30           140         600         C






 
Que je veux trier suivant un ordre de priorité (Colonne Paq (Alphabétique), puis Larg, Haut, Long par ordre décroissant) tel que :








N°           Pièce                                  Nbre       Larg        Haut        Long        Paq. CC Remarque





1              PANNE_____________    7             76           195         2741       A





2             CHEVETRE VELUX___        2             76           195         1160        A





10            CHEVETRE VELUX___        2             40           195         1160        A





15            VOLIGE_____________ 1              18            195         9542      A





16            VOLIGE_____________ 1              18            195         5821       A





17            VOLIGE_____________ 1              18            195         4461       A





18            VOLIGE_____________ 2             18            195         3042      A





3             CHEVRON__________      1              42           65           6257      A





4             CHEVRON__________      3             42           65           5550      A





5             CHEVRON__________      16            42           65           5197       A





6             CALAGE____________    1              42           65           1038       A





7             CALAGE____________    4             42           65           637         A





8             CHEVRON__________      1              42           65           560         A





9             CALAGE____________    1              42           65           545         A





20           ARBA______________    4             40           195         6257      C





21            ARBA______________    4             40           195         6257      C





22           ARBA______________    20           40           195         5550      C





23           FAUX ARBA_________     2             40           195         4996      C





24           FAUX ARBA_________     2             40           195         4996      C





25           ARBA______________    2             40           195         3583      C





26           ENTRAIT____________ 16            40           195         3393      C





27           ARBA______________    2             40           195         2876      C





28           ARBA______________    4             40           195         2598      C





29           ARBA______________    3             40           195         1692       C





30           ARBA______________    4             40           195         1157        C





31            ARBA______________    3             40           195         985         C





32           GOUSSET___________   16            40           195         710         C





33           ENTRETOISE________    15            40           145         560         C





37           console_____________    1              30           140         800         C





38           console_____________    1              30           140         600         C





19            console_____________    1              70           100         805         C





34           BLOCHET___________    4             40           95           1106        C





35           JAMBE DE FORCE____      26           40           95           859         C





36           BLOCHET___________    22           40           95           696         C
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 00:11
Ok, et dernière question, comment déclares-tu ton tableau ?

Parce qu'en fait, j'ai testé ceci : Dim Tableau(1 To 500, 1 To 500, etc... 9fois) et VB n'a pas apprécié ! Et l'OS s'est bloqué.

Ps : tu parles d'un tableau à 9 dimensions or dans ton exemple, il y a 7 colonnes

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 00:22
Bonsoir,
 @Mortalino
un tableau à 9 dimensions c ' est pas [1,9] ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 00:33
Salut Chaibat,

si je ne me trompe pas, un tableau déclaré comme ceci :
Dim MonTableau(1 To 10)         est un tableau unidimensionnel.

Tableau en 2D :
Dim MonTableau(1 To 10, 1 To 10)

Tableau en 3D :

Dim MonTableau(1 To 10, 1 To 10, 1 To 10)
etc...
Et si mes sources sont bonnes, un tableau peut avoir jusqu'à 60 dimensions.

Si j'analyse ton exemple : [1,9]
Pour moi, c'est un tableau 2D, sachant que la première colonne de ce tableau pourra contenir une seule donnée, alors que la seconde colonne pourra en contenir neuf.
Donc, pour l'exemple de guigui28, il lui faut 9 (ou 7 ?) colonnes, donc Dimensions.

A confirmer par plus expert que moi...

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
7 août 2006 à 00:36
'En fait j'utilise une classe "Ligne" qui représente un ligne avec 9 colonnes,
Dim Tableau(NOMBRE_COLONNE) As String
'et une classe "Tableau" qui représente un tableau de "Ligne".
Private Tb() As New Ligne
'j'utilise ensuite une fonction qui ajoute exactement le nombre de ligne voulue dans mon tableau
'***********************************************************************************
'* AJOUTE UNE LIGNE AU TABLEAU                                      *
'***********************************************************************************
Public Sub Add(DonnéeSéparéePointVirgule As String)
    Dim Tmp() As String
    Dim X       As Integer
    ReDim Preserve Tb(UBound(Tb) + 1) ' Ajoute une ligne
    Tmp = Split(DonnéeSéparéePointVirgule, ";") ' Decoupe la ligne
    If UBound(Tmp) <= Tb(0).Count Then
        For X = 0 To UBound(Tmp)
            Call Tb(UBound(Tb)).SetItem(X, Tmp(X)) ' Ajoute ligne
        Next
    End If
End Sub
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 00:48
Ok, et comment fais-tu pour lire, par exemple, la première ligne et la colonne n°2 ?
Après je t'embête plus et je regarde ça !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 01:06
@ Mortalino
c ' est pas 1 to 10 mais 1,10.
1 to 10 signifie une dimension et dix ligne
1, 10    signifie dix dimensions et une ligne

Il faut y aller en deux temps.
 >Avec Dim pour la dimension
 >Redim Preserve pour le nombre de lignes.
   Soit Redim Preserve (500,9]
   Ou alors en ajoutant, au besoin,  ligne par ligne : Redim Preserve (Nb de ligne +1 ,9]
  
Enfin je pense.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 01:16
Et bien merci de tes explications car je ne connaissais pas du tout cette syntaxe !
Mais ta façon à l'air mille fois plus simple que l'utilisation de ses class ^^

> "Enfin je pense."  => je pense aussi que le Redim pour l'ajout est comme tu l'as dit

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 01:22
 @Mortalino

A qui tu parlais là ?
Si c ' est à moi , il faut tester car je ne suis pas tellement sûr qu ' il n' y parait.
Ca fait longtemp que je n' ai pas travailler avec les tableaux.
Celà dis il faut maintenant s' attaquer au problème du tri.
Je cogite en ce moment sur le sujet.J' ai une idée.Mais
Il me faudra encore du temps.
A+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 01:33
Oserais-je la dévoiler ?

Bon je me lance, comme ça j'aurai un avis !
J'avais pensé utiliser une application pour le tri : Excel.
Tableur ayant de multiples fonctionnalités, j'imaginais un code qui ouvre Excel, on insère ses données dans ce tableur, et on utilise la fonction Tri ("Sort" si j'ai bonne mémoire), qui intègre les critères (tri par colonne 1, puis 4, puis 6 etc...)
Une fois le tri effectué, replacer les données dans son tableau !

1/ L'ouverture d'Excel est rapide
2/ Le tri aussi
3/ et ce sera efficace

Qu'en penses-tu ?

Ps : je teste ta déclaration et te tioens au courant

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 01:41
Bien joué Chaibat !

    Dim Tableau()       As String
    ReDim Tableau(1, 10)

For i = 1 To 10
    Tableau(1, i) = i * 10
Next i

MsgBox Tableau(1, 2) ' *** donne 20
MsgBox Tableau(1, 4) ' *** donne 40
MsgBox Tableau(1, 6) ' *** donne 60

Je confirme donc tes bonnes explications
@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 01:45
Pour ma déclaration, je viens de tester . Il faut juste remplacer les crochets par les parenthèses.
Quand à ton idée : fonces !
Moi j ' ai pensé à du code VB. Ca sera long, mais bon : on aura tout essayé.

a+
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 02:05
Pour Dim Tableau()  As String
Tu peux mettre (si besoin est) Dim Tableau()  As variant.
Comme ça tu pourra insérer toute sorte de données .
Ainsi :
Tableau(1, 2) pourra contenir une chaine
MsgBox Tableau(1, 4) ""  ""  ""  un entier
MsgBox Tableau(1, 6) ""  ""  ""  une Date

etc...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 02:06
T' as vu le copier coller ?!!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 02:11
Oui. (Je lisais un autre Topic.)  ;)
Si on peut éviter le Variant, c'est préférable mais s'il y a plusieurs types de données, il est vrai que l'on a pas le choix !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 03:58
voilà mon idée.
C' est une ébauche . Reste à l' améliorer
 
Dim T() As Variant
 ReDim Preserve T(501, 8)
 'J' ai ajouter une ligne et une colonne pour le besoin du traitement

 Dim i As Integer
 Dim Y As Integer
 
  For i = 1 To 500
      'concaténer les autres colonnes et les insérer dans la 8iéme
      T(i, 8) = T(i, 2) & Str(T(i, 3)) & Str(T(i, 4)) & _
                  Str(T(i, 3)) & Str(T(i, 4)) & Str(T(i, 5)) & _
                  Str(T(i, 6)) & (T(i, 7))
      'str pour les valeurs numériques
  Next


  '2° tri sur la 8iéme colonne
  Dim Fin As Boolean
  Dim Y As Integer
  Dim Z As Integer 
 
Fin = False
  
  Do While (Fin = False)
   For i = 1 To 500
    Z=0
     For y=i to 500
      If T(i, 8) > T(Y, 8) Then
         T(501, 8) = T(i, 8)
         T(I, 8) = T(Y , 8)
         T(Y, 8) = T(501, 8)
      
         Z = Z + 1
   
    End If
  Next Y
  Next I    If Z 0 Then Fin True
  Loop
End Sub


'traitement à optimiser .c' est pas tout à fait ça
' mais l' idée est là.
>Si quelqu' un pourrait le faire avec une Recursive ça serait bien.




'3° supprimer la 501 ième ligne et la 8 ième colonne
 ReDim Preserve T(500, 7)
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
7 août 2006 à 10:09

Pour votre info, jusqu'a présent j'ai contourné le problème en créant une base access, à chaque chargement de fichier, ce qui me permet de réorganiser mes valeurs comme je veux à travers une requête. Seulement voilà, c'est bien facile mais ça prend du temps... énormément de temps.Je vous met un extrait de mon module qui me servais jusqu'a présent : ça peut peut-être vous servir, mais je pense que l'utilisation des tableaux est bien plus rapide.'==================================================================================================='Fonction permettant de charger les données du fichier lu depuis la bdd'===================================================================================================Public Sub ChargerGrille()' Variable pour la connexion    Dim Cnx As New ADODB.Connection' Variable pour le recordset    Dim RS As New ADODB.Recordset' Requête pour la base de données    Dim Sql As StringOn Error GoTo Fin' Choix du fournisseur de la base de données pour Access - Microsoft jet OLEDB    Cnx.Provider = "Microsoft.jet.OLEDB.4.0"' Chemin d'accès à la base de données    Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" & _                                  "Data Source=" & App.Path & "\Tmp.mdb; "' Ouverture de la connection    Cnx.Open' Config du recordset    With RS    .CursorLocation = adUseClient    .CursorType = adOpenDynamic    .LockType = adLockPessimistic    RS.Open "SELECT DONNEES.Num, DONNEES.Groupe, DONNEES.Nom, DONNEES.Nombre, DONNEES.Largeur, DONNEES.Hauteur, DONNEES.Longueur, DONNEES.Matière, DONNEES.Remarque " & _            "From DONNEES " & _            "ORDER BY DONNEES.Groupe, DONNEES.Largeur DESC , DONNEES.Hauteur DESC , DONNEES.Longueur DESC;", Cnx    .Requery    .MoveFirst    End With' Boucle de chargement de la grille    Do Until RS.EOF        FrmDonnées.Liste.AddItem (RS!Num) & Chr(9) & (RS!Groupe) & Chr(9) & (RS!Nom) & Chr(9) & (RS!Nombre) & Chr(9) & (RS!Largeur) & Chr(9) & (RS!Hauteur) & Chr(9) & (RS!Longueur) & Chr(9) & (RS!Matière) & Chr(9) & (RS!Remarque)        RS.MoveNext    Loop    FrmDonnées.Liste.ScrollBars = flexScrollBarBothFinFin:    Set Cnx = Nothing    Set RS = Nothing    Exit SubFin:    MsgBox "Erreur N°: " & Err.Number & " => " & Err.Description    GoTo FinFin    'If Err.Number = 9 Then MsgBox Err.DescriptionEnd Sub'==================================================================================================='Fonction permettant de connaître le nombre de ligne dans le fichier lu (Donner en variable'le chemin d'accès au fichier)'===================================================================================================Private Sub ChercheNbreLigne(CheminFichier)Dim FS, A As ObjectDim StreamLine As String    Set FS = CreateObject("Scripting.FileSystemObject")    Set A = FS.OpenTextFile(CheminFichier, 1, 0)    Do While A.AtEndOfStream True        StreamLine = A.ReadAll        NL = A.Line    Loop    A.CloseEnd Sub
'==================================================================================================='Fonction permettant de créer une base de donnée format access, et les tables qui vont bien,'à chaque chargement d'un fichier'associé à la dll : Microsoft Access 11.0 Object Library'==============================================================================================='Public Sub CréationBase()'Dim Chemin As String'Dim AppAccess As New Access.Application'Dim Connection As New ADODB.Connection'Dim Cd As New ADODB.Command'Dim Sql As String'' Définition du chemin'    Chemin = App.Path & "\Tmp.mdb"'' On supprime le fichier (Supprimé dans la corbeille windows) s'il est déjà existant'    If Dir$(Chemin) vbNullString Then Kill Chemin'' Création de la base'    Set AppAccess = CreateObject("Access.Application.11")'    AppAccess.NewCurrentDatabase Chemin'' Fermeture de l'objet'    AppAccess.CloseCurrentDatabase: Set AppAccess = Nothing'' Choix du fournisseur de la base de données pour Access - Microsoft jet OLEDB'    Connection.Provider = "Microsoft.jet.OLEDB.4.0"'' Chemin d'accès à la base de données'    Connection.ConnectionString = Chemin'' Ouverture de la connection'    Connection.Open'' Pour relier la connexion ouverte à la commande'    Cd.ActiveConnection = Connection'' Définition d'une requête de création de table'    Sql = "Create Table DONNEES  (Num NUMERIC , Groupe CHAR(50) , Nom CHAR(50), Nombre NUMERIC NOT NULL, Largeur NUMERIC NOT NULL, Hauteur NUMERIC NOT NULL, Longueur NUMERIC NOT NULL, Matière CHAR(50), Remarque CHAR(50))"'' Exécution de la commande'    Cd.CommandText = Sql'    Cd.Execute Sql'' Définition d'une requête de création de table'    Sql = "Create Table LISTE  (Num NUMERIC , Groupe CHAR(50) , Nom CHAR(50), Nombre NUMERIC NOT NULL, Largeur NUMERIC NOT NULL, Hauteur NUMERIC NOT NULL, Longueur NUMERIC NOT NULL, Matière CHAR(50), Remarque CHAR(50))"'' Exécution de la commande'    Cd.CommandText = Sql'    Cd.Execute Sql'' Fermeture des objets déclarés'    Connection.Close: Set Connection = Nothing'    Set Cd = Nothing'End Sub'==================================================================================================='Fonction premettant de supprimer les données contenue dansla base de données temporaire'===================================================================================================Public Sub VideBdd()' Variable pour la connexion    Dim Cnx As New ADODB.Connection' Variable pour le recordset    Dim RS As New ADODB.Recordset' Variable d'incrémentation (Boucle)    Dim I As IntegerOn Error GoTo erreur' Choix du fournisseur de la base de données pour Access - Microsoft jet OLEDB    Cnx.Provider = "Microsoft.jet.OLEDB.4.0"' Chemin d'accès à la base de données    Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" & _                                  "Data Source=" & App.Path & "\Tmp.mdb; "' Ouverture de la connection    Cnx.Open' Config du recordset    With RS    .CursorLocation = adUseClient    .CursorType = adOpenDynamic    .LockType = adLockPessimistic    .Open "Select * from DONNEES;", Cnx    .Requery    End With' Boucle de suppression des données Table "DONNEES"    If RS.RecordCount > 0 Then        For I = 0 To RS.RecordCount - 1            RS.Delete            RS.MoveNext        Next    End If' On ferme le recordset    Set RS = Nothing' Config du recordset    With RS    .Open "Select * from LISTE;", Cnx    .Requery    End With' Boucle de suppression des données Table "LISTE"    If RS.RecordCount > 0 Then        For I = 0 To RS.RecordCount - 1            RS.Delete            RS.MoveNext        Next    End If'Ferme et détruit le recordset pour libérer de l'espace mémoire    Set Cnx = Nothing    Set RS = Nothing    Exit Suberreur:    MsgBox "Erreur N° : " & Err.Number & " => " & Err.Description & " => Module Op Fichier/VideBdd()"    Exit SubEnd Sub'==================================================================================================='Fonction permettant d'importer les données du fichier csv vers la base de données'crée précédemment'===============================================================================================Public Sub ChargeMdbBVN()' Variable pour la connexion    Dim Connection As New ADODB.Connection' Variable pour le recordset    Dim RS As New ADODB.Recordset' Requête pour la base de données    Dim Sql As String' Fichier Lu    Dim FileStream As TextStream' Variable contenant une ligne du fichier texte    Dim Ligne As String' Tableau sur une ligne séparant les données d'une ligne du fichier texte    Dim TabLigne() As String' Variable contenant du texte    Dim Texte As String' Variable contenant des nombres    Dim Chiffre As DoubleOn Error GoTo erreur' Choix du fournisseur de la base de données pour Access - Microsoft jet OLEDB    Connection.Provider = "Microsoft.jet.OLEDB.4.0"' Chemin d'accès à la base de données    Connection.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" & _                                  "Data Source=" & App.Path & "\Tmp.mdb; "' Ouverture de la connection    Connection.Open' Config du recordset    With RS    .CursorLocation = adUseClient    .CursorType = adOpenDynamic    .LockType = adLockPessimistic    .Open "Select * from DONNEES;", Connection    .Requery    End With' Boucle d'importation des données    Set FileStream = FS.OpenTextFile(AccèsFichier, ForReading, False)    While Not FileStream.AtEndOfStream        RS.AddNew            Ligne = FileStream.ReadLine            TabLigne = Split(Ligne, Délimiteur)            Texte = TabLigne(0): RS!Num = Texte 'Num NUMERIC NOT NULL            Texte = TabLigne(1): RS!Groupe = Texte 'Groupe CHAR(50)            Texte = TabLigne(2): RS!Nom = Texte 'Nom CHAR(50)            Chiffre = TabLigne(3): RS!Nombre = Chiffre 'Nombre NUMERIC NOT NULL            Chiffre = TabLigne(4): RS!Largeur = Chiffre 'Largeur NUMERIC NOT NULL            Chiffre = TabLigne(5): RS!Hauteur = Chiffre 'Hauteur NUMERIC NOT NULL            Chiffre = TabLigne(6): RS!Longueur = Chiffre 'Longueur NUMERIC NOT NULL            Texte = TabLigne(7): RS!Matière = Texte 'Matière CHAR(50)            Texte = TabLigne(8): RS!Remarque = Texte 'Remarque CHAR(50)        RS.Update        RS.Requery    Wend    FileStream.Close    Set FileStream = Nothing'Ferme et détruit le recordset pour libérer de l'espace mémoire    Set Connection = Nothing    Set RS = Nothing    Exit Suberreur:    MsgBox "Le fichier lu n'est pas au format approprié : la fonction est prévue pour lire " & _        vbCr & "les données suivantes dans cet ordre :" & vbCr & "" & _        vbCr & "    1°) Le Numéro de bois qui peut être alphanumérique" & _        vbCr & "    2°) Le Groupe qui peut être alphanumérique" & vbCr & _        "    3°) Le Nom qui peut être alphanumérique" & _        vbCr & "    4°) Le Nombre qui doit être Numérique" & _        vbCr & "    5°) La Largeur qui doit être Numérique" & _        vbCr & "    6°) La Hauteur qui doit être Numérique" & vbCr _        & "    7°) La Longueur qui doit être Numérique" & _        vbCr & "    8°) La Matière qui peut être Alphanumérique" & _        vbCr & "    9°) Une Remarque qui peut être Alphanumérique (Facultative)" & _        vbCr & "" & vbCr & "La fonction en cours est donc annulée." & _        vbCr & "Veuillez ré-exporter le fichier *.cvs au format attendu. ", vbOKOnly + vbDefaultButton1 + vbExclamation, "Erreur de lecture : "    Exit SubEnd Sub
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
7 août 2006 à 13:34
Je reviens sur l'idée de chaibat05, de concaténer toute les valeurs d'une ligne dans une même cellule ; ça fonctionne très bien mais seulement pour des nombres du même ordre de grandeur. dès qu'on a des valeurs qui ne comporte pas le même nombre de chiffre le tri n'est plus cohérent...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 15:32
Bonjour tout le monde.
Je m' excuse pour cette nuit.
Je tombais de fatigue et j' ai écris le tout à la hate.
J' ai voulais lancer l' idée et passer le relais à ceux qui se lèvent tôt.

Pour le problème des  des valeurs qui ne comporte pas le même nombre
de chiffre ,il faudra penser à formater ces valeurs pour que le tri soit cohérent...

Pour ma part, je vais continuer à travailler le sujet.
A+
0
Rejoignez-nous