begin process at 2012 02 13 21:04:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > [VB6] TRANSMETTRE UN TABLEAU PAR PROCÉDURE

[VB6] TRANSMETTRE UN TABLEAU PAR PROCÉDURE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :tableau, procedure, variable, transmistion, transmettre Niveau :Débutant Date de création :02/09/2010 Date de mise à jour :02/09/2010 11:45:14 Vu :2 362

Auteur : magicgus

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Tout le monde connait les tableaux...

Depuis toujours je pensais qu'il n'été pas possible de les transmetrent par procédure sous VB6, et bien je me trompé, alors que je me balader dans MSDN j'ai trouvé un indice qui me faisait pensait le contraire.

Bien que cette source soit bidon, je sait que bon nombre ne savent pas que c'est faisable car je m'étais déjà renseigné sans succés, du coup je post cette source pour en faire profité tout le monde...

Voir l'exemple :

Source

  • 'Dans un module :
  • 'La fonction qui renvoie un tableau
  • Public Function Tableau_Procedure() As String()
  • 'On crée tout d'abord un tableau temporaire car je ne sait pas pourquoi mais
  • 'il n'est pas possible de redimensionné le tableau de la fonction elle même
  • Dim Tableau_Temporaire() As String
  • 'J'ai laisser vide entre les parenthèses, ce qui signifie que le tableau est
  • 'dynamique
  • 'Comme on a un tableau dynamique il faut l'initialisé en lui donnant une taille
  • ReDim Preserve Tableau_Temporaire(0)
  • 'Voilà, on à une taille de zéro, maintenant on peut travailler avec
  • 'Ici on créer une boucle pour remplir ce tableau temporaire
  • For i = 1 To 10
  • 'On le redimensionne pour qu'il puisse accueillir une nouvelle valeur
  • ReDim Preserve Tableau_Temporaire(UBound(Tableau_Temporaire) + 1)
  • 'On entre cette nouvelle valeur
  • Tableau_Temporaire(i) = i
  • Next i
  • 'Maintenant que le tableau temporaire est remplit, on peut transférer ses
  • 'données au tableau de la procedure
  • Tableau_Procedure = Tableau_Temporaire
  • End Function
  • ________________________________________________________
  • 'Dans un formulaire :
  • 'On dispose un CommandButton et une LitBox pour tester le résultat
  • Private Sub Command1_Click()
  • 'Ici on créer aussi un tableau pour récupérer les valeurs de la fonction
  • Dim Tableau_Form() As String
  • 'On récupère les valeurs
  • Tableau_Form = Module1.Tableau_Procedure
  • 'Et maintenant on fait une boucle pour afficher les résultat dans
  • 'la zone de liste depuis le tableau précédemment rempli
  • For i = 0 To UBound(Tableau_Form)
  • List1.AddItem Tableau_Form(i)
  • Next i
  • End Sub
  • 'On ne peut pas travailler directement avec le tableau du module car on ne peut pas
  • 'appeler sont index :
  • 'Exemple :
  • List1.AddItem Module1.Tableau_Procedure(i)
  • '"Module1.Tableau_Procedure(i)" équivaudrais à vouloir passer un paramètre à la fonction
  • 'et non pas indiquer un index...
'Dans un module :


'La fonction qui renvoie un tableau
Public Function Tableau_Procedure() As String()

    'On crée tout d'abord un tableau temporaire car je ne sait pas pourquoi mais
    'il n'est pas possible de redimensionné le tableau de la fonction elle même
    Dim Tableau_Temporaire() As String
    'J'ai laisser vide entre les parenthèses, ce qui signifie que le tableau est
    'dynamique
    
    'Comme on a un tableau dynamique il faut l'initialisé en lui donnant une taille
    ReDim Preserve Tableau_Temporaire(0)
    'Voilà, on à une taille de zéro, maintenant on peut travailler avec
    
    'Ici on créer une boucle pour remplir ce tableau temporaire
    For i = 1 To 10
        
        'On le redimensionne pour qu'il puisse accueillir une nouvelle valeur
        ReDim Preserve Tableau_Temporaire(UBound(Tableau_Temporaire) + 1)
        
        'On entre cette nouvelle valeur
        Tableau_Temporaire(i) = i
        
    Next i
    
    'Maintenant que le tableau temporaire est remplit, on peut transférer ses
    'données au tableau de la procedure
    Tableau_Procedure = Tableau_Temporaire

End Function

________________________________________________________

'Dans un formulaire :


'On dispose un CommandButton et une LitBox pour tester le résultat

Private Sub Command1_Click()

    'Ici on créer aussi un tableau pour récupérer les valeurs de la fonction
    Dim Tableau_Form() As String

    'On récupère les valeurs
    Tableau_Form = Module1.Tableau_Procedure
    
    'Et maintenant on fait une boucle pour afficher les résultat dans
    'la zone de liste depuis le tableau précédemment rempli
    For i = 0 To UBound(Tableau_Form)
        List1.AddItem Tableau_Form(i)
    Next i
    
End Sub

'On ne peut pas travailler directement avec le tableau du module car on ne peut pas
'appeler sont index :

    'Exemple :
    List1.AddItem Module1.Tableau_Procedure(i)

    '"Module1.Tableau_Procedure(i)" équivaudrais à vouloir passer un paramètre à la fonction
    'et non pas indiquer un index...

 Conclusion

Ca marche tout simplement.


 Historique

02 septembre 2010 11:45:14 :
Rajout d'une saisie d'écran

 Sources du même auteur

Source avec Zip Source avec une capture [VB6 - ACTIVEX] RGWEATHER - LA MÉTÉO SIMPLEMENT DANS VOS APP...
Source avec Zip Source avec une capture [VB6 - ACTIVEX] MAGICBOX OU BOITE À CONTROLS...
Source avec Zip BACKGROUNDVIDEO.OCX

 Sources de la même categorie

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

 Sources en rapport avec celle ci

Source avec Zip GESTION PERSONNEL par oudlarbi
Source .NET (Dotnet) DATATABLE EN MATRICE 2D par CGSI3
Source avec Zip Source avec une capture RECHERCHE DES FICHIERS PAR LEURS NOMS par hackoo
Source avec Zip GESTION DYNAMIQUE DES ITEMS - BIEN PLUS INTERESSANT QUE LES ... par asimengo
Source .NET (Dotnet) COMPRESSION par amine_hassini

Commentaires et avis

Commentaire de Renfield le 02/09/2010 11:55:43 administrateur CS

j'avoue ne pas trop comprendre la chose...
un simple How-To sur comment renvoyer un tableau ?


nettoyons un peu le code...

completement contre-performant de faire ton Redim Preserve DANS la boucle.

alloue tes 10 Items AVANT la boucle, une fois pour toutes...

De plus, dans ton tableau, tu perds la case d'index 0 que tu ne remplis pas dans ta boucle For i = 1 To 10


Public Function Tableau_Procedure() As String()
Dim i As Long
Dim xsRet(9) As String
'# A voir si l'on a un nombre fixe d'element ou non...
'Dim xsRet() As String
    'ReDim Tableau_Procedure(9)
    For i = 0 To 9
        xsRet(i) = "Item " & i
    Next i
    Tableau_Procedure = xsRet
End Function



'Dans un formulaire :
Private Sub Command1_Click()
Dim i As Long
Dim Tableau_Form() As String
    Tableau_Form = Module1.Tableau_Procedure
    For i = 0 To UBound(Tableau_Form)
        List1.AddItem Tableau_Form(i)
    Next i
End Sub


Personellement, je prefere ce genre de choses:

Public Function RemplirTableau(ByRef vxsRet() As String) As Long
Dim i As Long
'# A voir si l'on a un nombre fixe d'element ou non...
    ReDim vxsRet(9)
    For i = 0 To 9
        vxsRet(i) = "Item " & i
    Next i
    '# Renvoie le nombre d'element du tableau
    RemplirTableau = 10
End Function

'Dans un formulaire :
Private Sub Command1_Click()
Dim i As Long
Dim xsItems() As String
    For i = 0 To RemplirTableau(xsItems) - 1
        List1.AddItem xsItems(i)
    Next i
End Sub

Commentaire de magicgus le 03/09/2010 10:54:55

Merci d'avoir apporter ces modifications Renfield ;)

Commentaire de drissou le 03/09/2010 13:24:53

Bonjour,

d'accord avec Renfield. On peut s'en servir pour extraire des enregistrement sur une requête de BDD.
J'utilise aussi des tableaux de "type utilisateur"..
Mais pour ma part je préfère rendre le tableau lui même.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

tableau de chaine...subtile. [ par rurouni ] bon, je suis pas encore le pro du VB...donc je vous pose mon probleme...J ai declare un tableau de string comme ca:Dim tab_str(10) As String * 9pour a Un probleme de tableau !!!!!! [ par coco ] J'ai un nom dans une variable. Je souhaite creer un tableau qui ait le nom de cette variable. sachant que le contenu de la variable varie.c'est un cod un tableau comme parametre? [ par bidules ] Salut,Peut on passer un tableau comme parametre dans une procedure personnaliser?exemple :'je cree la procedurepublic sub nom(par1,"et la je voudrais pb de variable [ par eryk17 ] j'ai déclaré et rempli un tabeau de type structure dans le formulaire1, sur un 2e formulaire je veux utiliser ce tableau dans une fonction mais il ne Une variable Tableau de controle !!! [ par Kywalh ] Salut,Bon, g un sérieux problème:Dim Ext as ControlSet Ext = Exten..... me balance une erreur !Le truc c'est que Exten est en fait un tableau de contr comment transmettre une variable d'un prog. VB vers un fichier DOC [ par costacourta ] comment transmettre une variable d'un prog. VB vers un fichier DOCA vodka a day keep the doctor away ! Initiliser un tableau [ par Freztagada ] Salut,Je n'arrive pas a trouver mon bonheur dans l'aide de VBExcel alors je m'adresse aux specialiste.Je voudrais savoir comment peut-on reinitialiser probleme de variable globale [ par fabieune ] Bonjour, g une variable (un tableau) initialisé ds un Form et un Command_Click(), j'appelle une fonction ds un module qui modifie ce tableau... Commen comment transmettre une variable d'une annimation vers une application vb [ par simo_boukoutaya ] je dois réalise une application en vb qui utlmise une annimation flash et je dois transmetre des varaible de flash vers l'application vb comment faire comment transmettre une variable d'une annimation vers une application vb [ par simo_boukoutaya ] je dois réalise une application en vb qui utlmise une annimation flash et je dois transmetre des varaible de flash vers l'application vb comment faire


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,588 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales