Byref visual basic excel

ortollj

XLDnaute Nouveau
Bonjour
pourquoi quand je declare les variables séparemment je peux les utiliser avec byref ,mais par contre si je les déclare sur la meme ligne cela ne fonctionne pas a la compilation j'ai un message d'erreur ?.
message d'erreur="type d'argument byref incompatible"
ne serait ce pas un bug ?,ce petit pb m'a fait perdre beaucoup de temps !!!!:mad:
:confused:
voir code ci dessous.

Option Explicit


Private Type Complex

re As Double
im As Double

End Type


Private Sub Fourier()
Dim m As String
Dim c As Complex
Dim d, t As Double


' declaration OK !
Dim c1 As Complex
Dim c2 As Complex

' declaration KO !
'Dim c1, c2 As Complex



c.re = 2: c.im = 3: c1.re = 7: c1.im = 9: c2.re = 7: c2.im = 9



t = modul(c)
'SigmaXk = MultC(xe, xk)
m = " Xe : " & Str(c.re) & "+i*" & Str(c.im) & _
" modulo : " & Str(t)
m = CStr(MsgBox(m, 1, "modulo"))
c = Multi(c1, c2)
End Sub
Private Function modul(ByRef z As Complex) As Double
modul = Sqr(z.re ^ 2 + z.im ^ 2)
End Function
Private Function Multi(ByRef z1 As Complex, ByRef z2 As Complex) As Complex
Dim z3 As Complex

z3.re = z1.re * z2.re - z1.im * z2.im
z3.im = z1.re * z2.im + z1.im * z2.re

Multi = z3

End Function
 

vbacrumble

XLDnaute Accro
Re : Byref visual basic excel

Bonsoir


Je ne suis pas d'accord avec vous messieurs :D

Ci-dessous extrait de l'aide en ligne de VBA

(la fameuse touche F1 )
Type, instruction, exemple
Cet exemple utilise l'instruction Type pour définir un type de données défini par l'utilisateur. L'instruction Type est utilisée au niveau module uniquement. Si elle apparaît dans un module de classe, une instruction Type doit être précédée du mot clé Private.

Type EmployeeRecord ' Crée un type défini par l'utilisateur.
ID As Integer ' Définit des éléments de type de données.
Name As String * 20
Address As String * 30
Phone As Long
HireDate As Date
End Type
Sub CreateRecord()
Dim MyRecord As EmployeeRecord ' Déclare la variable.

' L'affectation à la variable EmployeeRecord doit
' être effectuée dans une procédure.
MyRecord.ID = 12003 ' Attribue une valeur à un élément.
End Sub
 

ortollj

XLDnaute Nouveau
Re : Byref visual basic excel

Bonjour a tous
ce qui voudrait dire que quand je declare
' declaration KO !
Dim c1, c2 As Complex
:confused:c1 est de type indéterminé et c2 seulement de type complex ?

:)effectivement , ya_v_ka la declaration ci dessous fonctionne bien
Dim c1 As Complex, c2 As Complex

c'est tout de meme un peu louche.

:eek:j'ai du mal a comprendre ta réponse ,vbacrumble pourrais tu preciser ?
 

vbacrumble

XLDnaute Accro
Re : Byref visual basic excel

Bonjour


Je ne fais que citer l'aide d'Excel à propos de Type

(et quand je parlais des messieurs je m'adressais à skoobi et ya_v_ka ;) )

Et dans l'exemple de l'aide, les déclarations ne sont pas sur la même ligne.

Mais peut-être n'ai-je rien compris au problème ?
 

skoobi

XLDnaute Barbatruc
Re : Byref visual basic excel

Bonjour tout le monde,

vbacrumble, ce que je voulais dire en fait par "déclaré le type" c'est attribué un type VBA existant mais je pense que tu avais compris ;).

(et quand je parlais des messieurs je m'adressais à skoobi et ya_v_ka ;) )

J'espère que tu n'a pas vexé notre ami ortollj :D:p.

c'est tout de meme un peu louche.

Non, je ne trouve pas! Ce qu'il faut retenir c'est que l'on peut déclaré les variables l'une derrière l'autre (on économise un "Dim" et de la place si on en a beaucoup) ou l'une sous l'autre.
Perso je déclare (enfin pas toujours :D) les variables par genre comme ceci:

Code:
Dim a As String, b As String
Dim Cel As Range, Plage As Range
Dim Fl As WorkSheet, Sh as WorkSheet
Dim Lig As Long, Col As long

Bonne soirée Messieurs ;)
 

vbacrumble

XLDnaute Accro
Re : Byref visual basic excel

Re


skoobi
Je ne peux pas appeler un p'tit gars qui vient de s'inscrire sur le forum Môssieur :D

Mais je veux bien l'appeler jeune homme ou jeune padawan.

Quant à ma déclaration (non pas celle destiné eà Bercy)
Je la pratique ainsi.

Code:
Dim Fl As WorkSheet, Sh as WorkSheet
Dim Cel As Range, Plage As Range
Dim a$, b$, Lig&, Col&
 

ya_v_ka

XLDnaute Impliqué
Re : Byref visual basic excel

Hello la gang

Heureux de savoir que j'avais vu juste... je progresse ! par contre désolé pour les explications, à part que ça revient au même que :
dim A
dim B as complex
je ne saisis pas encore toujours les différences dans les déclarations...

Ya'v
 

wilfried_42

XLDnaute Barbatruc
Re : Byref visual basic excel

bonjour à tous

une petite précision dans cette ligne Dim c1, c2 As Complex

Quand on définit une variable sans préciser le type, cette variable devient de type variant qui peut prendre n'importe quel type de variable de base
ceci fonctionne mais personnellement, je ne le fais pas
Code:
    c2 = "zekfjaeljabl": MsgBox c2
    c2 = 125478.784: MsgBox c2
    c2 = DateValue("01/01/2009"): MsgBox c2
donc c1 est, comme défini ci-dessus, de type variant
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren