mais je me demande si sa n'existe pas déjà
Quoi qu'il en soit je démarre plutôt bien

Code : Tout sélectionner
; Crée par Monsieur Dieppedalle David le 22 avril
Global NewList MesTableau.s() ; Les tableaux ainsi que toutes leurs données vont-être enregistrer dans cette liste chainée
Global *MemoireID = AllocateMemory(1) ; J'initialise l'adresse de la mémoire
Global *Pointeur = *MemoireID ; Je mémorise l'adresse de la memoire pour plus tard ajouté et lire des données
If *MemoireID ; Si l'allocation a bien fonctionné, tous va bien !
Else
Debug "Impossible d'allouer la mémoire demandée !"
EndIf
; Cette procedure servira pour y ajouté les données du tableau
Procedure AjoutDonnerMemoire(Donner$)
CopyMemoryString(PeekS(*Pointeur, -1, #PB_Ascii) + Donner$, @*Pointeur)
EndProcedure
Procedure.s CreeTableau(NomTableau$, NombreColonne, TailleColonne, NombreLigne, Chaine$) ; Crée un tableau avec le nombre de ligne et de colonne et taille des colonne indiquer puis remplie chaque élement avec la chaine, sa permet d'initialiser tous les élements du tableau
; J'aloue la mémoire néccessaire pour y introduire le tableau, je fait sa avec la mémoir pour que sa ail hyper vite !
*MemoireID = AllocateMemory(100000000) ; Y'aura surement du gaspillage de mémoire mais je préfère voir trop grand que pas asser (100 Mo)
*Pointeur = *MemoireID ; Je mémorise l'adresse de la memoire pour plus tard ajouté et lire des données
If *MemoireID ; Si la mémoire est valide
Else
Debug "Impossible d'allouer la mémoire demandée !"
ProcedureReturn Str(0) ; Sinon je quitte la procedure
EndIf
If Trim(NomTableau$) <> "" ; Si un nom a été donner pour le tableau
NomTableau$ = Trim(NomTableau$) ; J'enlève tous les éspace au début et a la fin du nom du tableau pour évité les erreur
; Je vais passer en revue chaque tableau de la liste
ForEach MesTableau()
; j'éxtrait le nom du tableau en court de lecture
VerrificationNomTableau$ = Trim(StringField(MesTableau(), 1, "|")) ; J'enlève les éspace si il en à
VerrificationNomTableau$ = RemoveString(VerrificationNomTableau$, " =", 1, 1); Je supprime le " =" apres le nom du tableau pour la vérrification ou sinon sa fausse tous
If NomTableau$ <> VerrificationNomTableau$ ; Si le nom du tableau est diffèrent du nom donner
; Tous va bien, le tableau n'éxiste pas
Else
; Sinon, le tableau éxiste déjà donc ont igniore tous simplement la commande
Debug "Le tableau: " + Chr(34) + NomTableau$ + Chr(34) + " éxiste déjà !"
ProcedureReturn Str(0) ; je quitte la procedure
EndIf
Next MesTableau()
Else ; Sinon si aucun nom de tableau n'as été donnée, nous allone crée automatiquement le nom de celui-ci suivent le nombre de tableau présent dans la liste
If ListSize(MesTableau()) > 0 ; Si la liste comptien au moins un tableau
NumeroTableau = ListSize(MesTableau()) + 1 ; J'incrémente de 1 le numero qui sera attribuer au nom du tableau
Else
NumeroTableau = 1 ; sinon si il n'y as aucun tableau dans la liste, le numéro du tableau commence a 1
EndIf
NomTableau$ = "Tableau " + Str(NumeroTableau) ; Je crée le nom du tableau automatiquement puisqu'aucun nom n'a été donner
EndIf
If NombreColonne <= 0 ; Si le tableau ne comptien aucune colonne, ce qui n'est pas possible
NombreColonne = 1 ; Ont met une colonne
EndIf
If NombreLigne <= 0 ; Si le tableau ne comptien aucune ligne, ce qui n'est pas possible
NombreLigne = 1 ; Et ont met une ligne
EndIf
; Je vais crée le tabeau
For CreationLigneTableau = 1 To NombreLigne ; Création des lignes du tableau
For CreationColonneTableau = 1 To NombreColonne ; Création des colonnes du tableau
If Len(Chaine$) > TailleColonne ; Si le texte de l'élement est supérieur a la taille de la colonne
Chaine$ = Mid(Chaine$, 1, TailleColonne) ; Je tronque la chaine, sinon ont va se croire dans la jingle lol
EndIf
; Ici je vais modeller le tableau pour que ce soit propre
; Toutes les colonnes auront la même grandeur, bin sinon je vous éxplique pas le chantier lol
If CreationColonneTableau = 1 ; Quand ont as crée la première colonne
If CreationLigneTableau = 1 ; Quand ont as crée la première ligne
AjoutDonnerMemoire("|" + Chaine$ + Space(TailleColonne - Len(Chaine$))) ; Donc ont as crée la première colonne et aussi la première ligne
Else
AjoutDonnerMemoire(Space(Len(NomTableau$ + " = |") - 1) + "|" + Chaine$ + Space(TailleColonne - Len(Chaine$))) ; Ici je calcule la position apres le nom du tableau, pour que les colonne soivent bien rectiligne
EndIf
Else ; Sinon ce n'est plus la première colonne que l'on crée mais bien une colonne suivente
AjoutDonnerMemoire("|" + Chaine$ + Space(TailleColonne - Len(Chaine$))) ;
EndIf
Next
; J'ajoute une nouvelle ligne dans le tableau
AjoutDonnerMemoire(Chr(13) + Chr(10))
Next
; Maintenant je stoque tout le tableau entier dans la liste au nom du tableau
AddElement(MesTableau())
MesTableau() = NomTableau$ + " = " + PeekS(*MemoireID)
ProcedureReturn NomTableau$ + " = " + PeekS(*MemoireID)
EndProcedure
Procedure AjouterLigneTableau(NomTableau$, Position, NombreLigne) ; Ajoute le nombre de ligne spécifier a partir de la position donnée, position étans le numero de la ligne
EndProcedure
Procedure AjouterColonneTableau(NomTableau$, NombreColonne) ; Ajoute le nombre de Colonne spécifier a partir de la position donnée, position étans le numero de la Colonne
EndProcedure
Procedure SupprimerLigneTableau(NomTableau$, NumeroLigne) ; Supprime une ligne complètte du tableau, les lignes suivente sont remonté d'une position
EndProcedure
Procedure SupprimerColonneTableau(NomTableau$, NumeroColonne) ; Supprime une Colonne complètte du tableau, les Colonne suivente sont décaler d'une position vers la gauche
EndProcedure
Procedure InsererElementTableau(NomTableau$, NumeroColonne, NumeroLigne, position, Element$) ; Inser l'élement a la ligne et colonne spécifier, position étans la position en caractère dans l'élément
EndProcedure
Procedure RechercherElementTableau(NomTableau$, Element$) ; Recherche l'élement parmie tous le tableaux
EndProcedure
Procedure RemplacerElementTableau(NomTableau$, NumeroColonne, NumeroLigne, Element$) ; Remplace le comptenue de l'élement par le nouvelle élement a la ligne et colonne spécifier
EndProcedure
Procedure EffacerElementTableau(NomTableau$, NumeroColonne, NumeroLigne) ; Efface l'élement spécifier a la ligne et colonne spécifier, l'élement sera alors vierge
EndProcedure
Procedure InversserElementTableau(NomTableau$, NumeroColonne1, NumeroLigne1, NumeroColonne2, NumeroLigne2) ; Inversse l'élement 1 avec l'élement 2 dans le tableau aux lignes et colonnes spécifier
EndProcedure
Procedure TailleElementTableau(NomTableau$, NumeroColonne, NumeroLigne) ; Renvoie la taille en caractère que fait l'élement a la ligne et colonne spécifier
EndProcedure
Procedure NombreLigneTableau(NomTableau$) ; Renvoie le nombre de Ligne que comptient le tableau
EndProcedure
Procedure NombreColonneTableau(NomTableau$) ; Renvoie le nombre de colonne que comptient le tableau
EndProcedure
Procedure TrierLigneTableau(NomTableau$, NumeroLigne, ModeTrie) ; Trie les élements d'une ligne entière, le mode peut être: Ordre alphabetique croissant, Ordre alphabetique décroissant, Taille
EndProcedure
Procedure TrierColonneTableau(NomTableau$, NumeroColonne, ModeTrie) ; Trie les élements d'une colonne entière, le mode peut être: Ordre alphabetique croissant = 1, Ordre alphabetique décroissant = 2, Taille = 3
EndProcedure
Procedure TrierTousTableau(NomTableau$, ModeTrie) ; Trie les élements du tableau entier, le mode peut être: Ordre alphabetique croissant, Ordre alphabetique décroissant, Taille
EndProcedure
Procedure CaseElementTableau(NomTableau$, NumeroColonne, NumeroLigne, CaseElement) ; Change la case de l'élement spécifier du tableau a la ligne et colonne spécifier, Case peut-être: Majuscule = 1 ou Minuscule = 2
EndProcedure
MonTableau$ = CreeTableau("", 1000, 10, 1000, "abcdefghijklmnop")
SetClipboardText(MonTableau$)