Problème avec Type défini par l'utilisateur...

Problème avec Type défini par l'utilisateur... - VB/VBA/VBS - Programmation

Marsh Posté le 02-01-2012 à 22:47:26    

Bonjour,
 
Je souhaite travailler avec un type de données défini par l'utilisateur mais lorsque j'appelle le Sub testFunction avec l'argument testArray, VBA me renvoie l'erreur suivante:
http://i.imgur.com/ezUie.gif
 
Voici mon code:

Type testType
    Value As Long
    Address As String
End Type
 
Sub testSub()
    Dim testArray() As testType
    ReDim testArray(1 To 10)
    testArray(1).Value = 3
    testArray(1).Address = ActiveCell.Address
    testFunction (testArray)
End Sub
 
Sub testFunction(x)
    For Each i In x
        i.Value = Abs(i.Value)
    Next i
End Sub


 
Je ne comprends pas ce qui cloche. J'ai l'impression d'être dans le cas de la liaison anticipée vue que je déclare testArray avec "As testType"...
 
Au secours! Merci d'avance,
 :hello:


---------------
last.fm
Reply

Marsh Posté le 02-01-2012 à 22:47:26   

Reply

Marsh Posté le 05-01-2012 à 12:56:26    

Hello
 
Le plus simple c'est de déclarer en public ta variable TestArray et que la fonction (ou le sub) TestFunction soit dépendant.
J'avoue ne jamais avoir eu à passer en parametre un tableau typé.
 
Exemple qui fonctionne :

Code :
  1. Type testType
  2.     Value As Long
  3.     Address As String
  4. End Type
  5.     Public TestArray() As testType
  6. Sub testSub()
  7.     ReDim TestArray(1 To 10)
  8.     TestArray(1).Value = 3
  9.     TestArray(1).Address = ActiveCell.Address
  10.     TestArray(2).Value = 4
  11.     TestArray(2).Address = ActiveCell.Address
  12.     testfunction
  13. End Sub
  14. Sub testfunction()
  15.     For i = 1 To UBound(TestArray)
  16.          TestArray(i).Value = Abs(TestArray(i).Value)
  17.     Next i
  18. End Sub


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 07-01-2012 à 00:57:45    

Merci dje69r, mais mon problème venait en fait de la façon avec laquelle j'appelle la fonction... Il suffisait de supprimer les parenthèses autour de l'argument... :sweat:
Dire que j'ai perdu 5 jours là dessus... :D

 
Code :
  1. testFunction testArray


Et non:

Code :
  1. testFunction (testArray)


Message édité par Cutter le 07-01-2012 à 00:58:23

---------------
last.fm
Reply

Marsh Posté le 07-01-2012 à 10:53:22    

Et moi je n'ai meme pas tiqué...


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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