Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !!!!

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
 

ya_v_ka

XLDnaute Impliqué
Re : Byref visual basic excel

Salut

Je ne suis pas sur, mais il me semble que même sur la même ligne tu dois déclarer les 2...

Dim c1 As Complex, c2 As Complex

et si ce n'est pas ça, les experts vont réagir...

Ya'v
 

vbacrumble

XLDnaute Accro
Re : Byref visual basic excel

Bonsoir


Je ne suis pas d'accord avec vous messieurs

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

(la fameuse touche F1 )
 

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
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.

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 .

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 ) 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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…