Pour compléter ma réponse, voici un exemple :

  sub main
  dim x as double
  x=2
  modif(x)
  print x
  end sub

  sub modif(x as double)
  print x
  x=3
  end sub

Lors de l'exécution de main, on a bien les affichages successifs :
2 (le print de la macro modif)
3 (le print de main après l'exécution de modif).

Si on modifie juste double en integer dans dim x :

  sub main
  dim x as integer
  x=2
  modif(x)
  print x
  end sub

  sub modif(x as double)
  print x
  x=3
  end sub

lors de l'exécution de main, on a alors les affichages successifs :
2 (le print de la macro modif)
2 (le print de main après l'exécution de modif) au lieu de 3.

Cela prouve que la conversion impicite de type double vers integer en sortie de 
modif pose problème.

Or je pense que, dans votre exemple, le fait de ne pas définir le type de Nrcc 
fait que la ligne
Nrcc=2
le définit implicitement comme un integer.


----- Message d'origine -----
De: pascal.chantri...@ac-grenoble.fr
Date: Mercredi, Juin 10, 2009 0:34 am
Objet: [prog] Re : Re: [prog] Paramètres par référence

> Bonjour,
> 
>  dim Nrcc,Mrcc,epsh1,epsb1 as double
> 
> ne définit pas Nrcc et Mrcc comme double mais comme variant.
> 
> La syntaxe basic impose de donner le type de chaque variable 
> séparément.En fait :
> 
>  dim Nrcc,Mrcc,epsh1,epsb1 as double
> 
> signifie :
> 
>  dim Nrcc as variant, Mrcc as variant, epsh1 as variant, epsb1 as 
> double
> Il est donc déjà normal que en remplaçant 
> 
>  dim Nrcc,Mrcc,epsh1,epsb1 as double
> 
> par
> 
>  dim Nrcc as double, Mrcc as double ,etc...
> 
> on puisse avaoir un comportement différent.
> 
> 
> Pascal
> 
> 
> ----- Message d'origine -----
> De: xavier roguiez <x...@geo.hmg.inpg.fr>
> Date: Mardi, Juin 9, 2009 10:46 pm
> Objet: Re: [prog] Paramètres par référence
> 
> > xavier roguiez a écrit :
> > > Bonsoir
> > >
> > > Je me trouve confronté à un problème dont je ne comprends ni 
> les 
> > > tenants ni les aboutissants;, est ce que quelqu'un peut m'aider ?
> > >
> > > J'ai sorti l'ECM suivant :
> > >
> > > option explicit
> > > sub interaction_Rect()
> > > dim Nrcc,Mrcc,epsh1,epsb1 as double
> > > Nrcc=2: Mrcc=2
> > > print Nrcc,Mrcc 'affiche 2 2 normal
> > > EffC_Rect(Nrcc,Mrcc)
> > > print Nrcc,Mrcc 'affiche 2 2 pas normal ?????????????????????
> > > end sub
> > >
> > > sub EffC_Rect(Nrc2 as double,Mrc2 as double)
> > > Nrc2=10: Mrc2=10
> > > end sub
> > >
> > > Par contre si je modifie les déclarations d'entêtes à savoir :
> > > dim Nrcc,Mrcc as double
> > En fait il faut modifier pour obtenir le bon résultat la 
> > déclaration en
> > dim Nrcc as double
> > dim Mrcc as double
> > 
> > >
> > >
> > > alors le comportement redevient normal...
> > > print Nrcc,Mrcc 'affiche 2 2 normal
> > > EffC_Rect(Nrcc,Mrcc)
> > > print Nrcc,Mrcc 'affiche 10 10  normal  !!!!!!!!!!!!!
> > >
> > > Avez vous une idée ?
> > > D'avance merci
> > > xavier
> > >
> > > ----------------------------------------------------------------
> --
> > ---
> > > To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
> > > For additional commands, e-mail: prog-h...@fr.openoffice.org
> > >
> > 
> > 
> > ------------------------------------------------------------------
> --
> > -
> > To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
> > For additional commands, e-mail: prog-h...@fr.openoffice.org
> > 
> > 
> 
> --------------------------------------------------------------------
> -
> To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
> For additional commands, e-mail: prog-h...@fr.openoffice.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à