VBA Fin de la fonction je reviens dans ma boucle ???

VBA Fin de la fonction je reviens dans ma boucle ??? - VB/VBA/VBS - Programmation

Marsh Posté le 29-01-2010 à 12:14:17    

Bonjour,  
 
Voila je viens de faire une fonction qui retourne lire un tableau passer en paramètre par valeur.
Dans cette fonction, je regenere un nouveau tableau.
Lorsque ma boucle For i = 0 arrive à nb_lig, j'arrive à la derniere ligne du code : End Function
 
Je pensé que j'allé arrete... la fonction mais non il revient sur la ligne "'''''''''''''''COMMENTAIRE
 
C'est parceque c'est une fonction ?
 
 
LireTableau =  
 

Code :
  1. Function LireTableau(ByVal transfert)
  2. Dim ligne_compare As Integer
  3. Dim ligne_origine As Integer
  4. Dim ligne_disponible As Integer
  5. ligne_disponible = nb_lig
  6. ligne_suivante = 0
  7. ligne_origine = 0
  8. i = 0
  9. j = 0
  10.     For i = 0 To nb_lig
  11.         For ligne_compare = (i + 1) To nb_lig
  12.             compte = 0
  13.             For j = 0 To nb_col
  14.                 If (transfert(i, j) <> -1) And (transfert(ligne_compare, j) <> -1) Then
  15.                     If transfert(i, j) >= transfert(ligne_compare, j) Then
  16.                         compte = compte + 1
  17.                         If compte = ligne_disponible Then
  18.                               tableau_original = transfert
  19.                               transfert = GenererTableau(ligne_compare, ligne_compare, transfert)
  20.                               LireTableau (transfert) '''''''''''''''''''''''''''''''''''''''''''COMMENTAIRE
  21.                               ligne_disponible = ligne_disponible - 1
  22.                         End If
  23.                      End If
  24.                 End If
  25.             Next j
  26.         Next ligne_compare
  27.     Next i
  28. End Function


Message édité par PsYKrO_Fred le 29-01-2010 à 12:14:58
Reply

Marsh Posté le 29-01-2010 à 12:14:17   

Reply

Marsh Posté le 29-01-2010 à 12:59:20    

C'est parce que c'est une fonction ... récursive!

Reply

Marsh Posté le 29-01-2010 à 13:02:45    

et comment j'en sorts de ma récursivité :)...?
 
 

Reply

Marsh Posté le 29-01-2010 à 20:03:36    

Aucune idée, je comprends pas trop le but de ton algo a ta ligne COMMENTAIRE, tu appelles lireTableau(transfert) alors que ton tableau transfert a une taille differente non? Comment fais-tu pour lui indiquer la nouvelle taille?

Reply

Marsh Posté le 30-01-2010 à 14:25:17    

breizhbugs a écrit :

Aucune idée, je comprends pas trop le but de ton algo a ta ligne COMMENTAIRE, tu appelles lireTableau(transfert) alors que ton tableau transfert a une taille differente non? Comment fais-tu pour lui indiquer la nouvelle taille?


 
via cette fonction GenererTableau  
 

Code :
  1. Function GenererTableau(ligne_supprimer As Integer, colonne_supprimer As Integer, ByVal tableau_original)
  2. Dim tableau_generer()
  3.     For i = 0 To nb_lig
  4.         For j = 0 To nb_col
  5.             If i = ligne_supprimer Or j = colonne_supprimer Then
  6.                 tableau_original(i, j) = -1
  7.             End If
  8.         Next j
  9.     Next i
  10.     GenererTableau = tableau_original
  11. End Function


 
En fait je supprime pas vraiment la ligne mais je mets une valeur à -1
Le problème c'est quand j'arrive à la fin de ma Fonction LireTableau au moment du End Function... je reviens la ou j'ai mis "COMMENTAIRE"
au lieu de revenir au début de ma fonction LireTableau....
 
Moi je veux qu'à la fin de ma fonction je retourne au début pas au milieux... sinon il m'incrémente mes variables et c'est reparti pour un tour... et le résultat est faux...

Message cité 1 fois
Message édité par PsYKrO_Fred le 30-01-2010 à 14:28:40
Reply

Marsh Posté le 31-01-2010 à 11:28:04    

PsYKrO_Fred a écrit :


 
En fait je supprime pas vraiment la ligne mais je mets une valeur à -1
Le problème c'est quand j'arrive à la fin de ma Fonction LireTableau au moment du End Function... je reviens la ou j'ai mis "COMMENTAIRE"
au lieu de revenir au début de ma fonction LireTableau....
 
Moi je veux qu'à la fin de ma fonction je retourne au début pas au milieux... sinon il m'incrémente mes variables et c'est reparti pour un tour... et le résultat est faux...


 
Non!
quand tu appel une fonction dans un programme (par exemple "transfert(i,j)" ), le programme continue après le retour de cette fonction!
Pourquoi veux tu qu'il en soit différemment quand tu appelles liretableau()
Il va te falloir réécrire ta fonction!


Message édité par breizhbugs le 31-01-2010 à 11:30:00
Reply

Marsh Posté le 01-02-2010 à 00:53:07    

mmm mais alors comment dois je la réécrire?
je suis dans un casse tete chinois lol....  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed