Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3041 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Fonction qui ne retourne rien. Possible ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Fonction qui ne retourne rien. Possible ?

n°1344734
vinc35
Posté le 12-04-2006 à 09:34:31  profilanswer
 

Bonjour, je souhaite dans un programme ajouter une fonction d'affichage d'un tableau (n lignes, 2 colonnes)
 
Probleme, cette fonction ne doit rien revoyer, elle ne fait que copier les valeurs du tableau dans la feuille excel, or, VB n'accepte pas que je lance la fonction seule.
 
voici le code en question :
 

Code :
  1. Private Function Affichage(ByRef Matrice() As Double, ByRef Colonne As Integer)
  2. n = UBound(Matrice, 1)
  3. For i = 1 To n - 1
  4.     Cells(i + 1, Colonne) = Matrice(i, 1)
  5.     Cells(i + 1, Colonne + 1) = Matrice(i, 2)
  6. Next
  7. End Function


 
la fonction passe, mais si dans mon main je lui demande : "Affichage(Mat2004(), 8)" il me dit qu'il n'y a pas de = [:spamafote]  
 
par contre la suite passe tres bien :
 

Code :
  1. Private Function Affichage(ByRef Matrice() As Double, ByRef Colonne As Integer) As Integer
  2. n = UBound(Matrice, 1)
  3. For i = 1 To n - 1
  4.     Cells(i + 1, Colonne) = Matrice(i, 1)
  5.     Cells(i + 1, Colonne + 1) = Matrice(i, 2)
  6. Next
  7. Affichage = 1
  8. End Function


 
en appelant : c = Affichage(Mat2004(), 8)

mood
Publicité
Posté le 12-04-2006 à 09:34:31  profilanswer
 

n°1344773
olivthill
Posté le 12-04-2006 à 10:18:39  profilanswer
 

Il suffit de remplacer le mot "Function" par "Sub" après "Private", et "End Sub" à la place "End Function" (sauf si VBA le fait tout seul).
Pour de vieilles rasions qui remontent au début de l'informatique, une "function" retourne toujurs une valeur, et une subroutine n'en retourne pas.

n°1344778
vinc35
Posté le 12-04-2006 à 10:28:04  profilanswer
 

haaan ...
 
ok :)
 
merci
 
edit : et du coup, comment je lance ce sub dans mon main ?  [:core 666]


Message édité par vinc35 le 12-04-2006 à 10:30:30
n°1344784
tegu
Posté le 12-04-2006 à 10:33:17  profilanswer
 

Si tu as

Private Sub Toto(par1 as string)

alors tu le lances juste par

Toto "truc"


n°1344786
olivthill
Posté le 12-04-2006 à 10:36:22  profilanswer
 

Oui, pour appeler une sub ou function, on peut indiquer uniquement son nom sur une ligne.
On peut aussi mettre optionnellement le mot "call" devant ce nom de sub ou de function.
On peut aussi mettre les paramètres entre parenthèses ou utiliser la technique des paramètres nommés.

n°1344788
vinc35
Posté le 12-04-2006 à 10:37:52  profilanswer
 

donc voila ce que j'ai :
 

Code :
  1. Private Sub Affichage(ByRef Matrice() As Double, ByRef Colonne As Integer)


 
que je tente de lancer avec :
 

Code :
  1. Affichage(Mat2005(), 8)


 
Et j'ai le droit un magnifique : "Erreur de compilation. Attendu : ="

n°1344794
tegu
Posté le 12-04-2006 à 10:39:56  profilanswer
 

Enlève les parenthèses

Affichage Mat2005(), 8

ou utilise le mot clé Call

Call Affichage(Mat2005(), 8)

La syntaxe diffère entre les functions et les procédures (sub)


Message édité par tegu le 12-04-2006 à 10:41:11
n°1344795
vinc35
Posté le 12-04-2006 à 10:40:17  profilanswer
 

je m'auto reponds :
 

Code :
  1. Call Affichage(Mat2004(), 8)


 
marche tres bien, mais pas sans le call
 
en tout cas merci a vous du coup de main


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Fonction qui ne retourne rien. Possible ?

 

Sujets relatifs
Préremplir un email avec la fonction mailto:programmation socket. fonction accept() retourne 0
Sous VBA Fermeture du classeurAppel d'une macro en code VBA
Fonction HTML to BMP gratuite ? Convertir une page Web en image...Contenu d'une liste en fonction d'une autre le tout dynamiquement
fonction feof (), ecriture sur un fichier textecocher automatiquement 1 checkbox en fonction des données d'1 listbox
Afficher dans une TextBox en fonction d'une ListBox 
Plus de sujets relatifs à : [VBA] Fonction qui ne retourne rien. Possible ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR