Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

initialisation variable range (prise de tete!!)

6 réponses
Avatar
mik
Bonjour,

en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi ceci
ne marche pas:

Function toto (Plage As Range) As Double
Dim taux As Range

Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe pas
cette ligne)
...

Sachant que cette fonction est appelée depuis la feuille SH_1

merci d'avance
mik

6 réponses

Avatar
Corona
Boujour Mik,
As-tu défini SH_2 comme une variable objet de type worksheet ?
Sinon évidemment la syntaxe est
Set taux = Sheets("SH_2").Range(Cells(3, 9), Cells(3, 9).End(xlDown))
Bonne journée
Philippe Tulliez


mik a écrit :
Bonjour,

en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi ceci
ne marche pas:

Function toto (Plage As Range) As Double
Dim taux As Range

Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe pas
cette ligne)
....

Sachant que cette fonction est appelée depuis la feuille SH_1

merci d'avance
mik


Avatar
Mishell
Ou sinon, essaie avec cette syntaxe plus précise:
Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))

Mishell


"mik" wrote in message
news:
Bonjour,

en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi
ceci
ne marche pas:

Function toto (Plage As Range) As Double
Dim taux As Range

Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe pas
cette ligne)
...

Sachant que cette fonction est appelée depuis la feuille SH_1

merci d'avance
mik


Avatar
mik
SH_2 est le (name) de ma feuille et non pas le name

Merci de ton aide

"Corona" wrote:

Boujour Mik,
As-tu défini SH_2 comme une variable objet de type worksheet ?
Sinon évidemment la syntaxe est
Set taux = Sheets("SH_2").Range(Cells(3, 9), Cells(3, 9).End(xlDown))
Bonne journée
Philippe Tulliez


mik a écrit :
> Bonjour,
>
> en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi ceci
> ne marche pas:
>
> Function toto (Plage As Range) As Double
> Dim taux As Range
>
> Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe pas
> cette ligne)
> ....
>
> Sachant que cette fonction est appelée depuis la feuille SH_1
>
> merci d'avance
> mik



Avatar
mik
ca marche merci. j'ai un peu de mal à comprendre quand même sur ce coup.
Bon dimanche

"Mishell" wrote:

Ou sinon, essaie avec cette syntaxe plus précise:
Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))

Mishell


"mik" wrote in message
news:
> Bonjour,
>
> en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi
> ceci
> ne marche pas:
>
> Function toto (Plage As Range) As Double
> Dim taux As Range
>
> Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe pas
> cette ligne)
> ...
>
> Sachant que cette fonction est appelée depuis la feuille SH_1
>
> merci d'avance
> mik





Avatar
Mishell
Dans la commande suivante,
Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown))

SH_2.Range() fait évidemment référence à la feuille SH_2
alors que Cells(2, 9) fait référence à la feuille active qui est SH_1,
ce qui est la cause du résultat erronné.

Pour éviter ce genre d'erreur, il est préférable de toujours être explicite
et de nommer systématiquement la feuille à laquelle appartient le Cells ou
le Range.
Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))

Mishell.




"mik" wrote in message
news:
ca marche merci. j'ai un peu de mal à comprendre quand même sur ce coup.
Bon dimanche

"Mishell" wrote:

Ou sinon, essaie avec cette syntaxe plus précise:
Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))

Mishell


"mik" wrote in message
news:
> Bonjour,
>
> en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi
> ceci
> ne marche pas:
>
> Function toto (Plage As Range) As Double
> Dim taux As Range
>
> Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe
> pas
> cette ligne)
> ...
>
> Sachant que cette fonction est appelée depuis la feuille SH_1
>
> merci d'avance
> mik







Avatar
mik
Re Merci

"Mishell" wrote:

Dans la commande suivante,
Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown))

SH_2.Range() fait évidemment référence à la feuille SH_2
alors que Cells(2, 9) fait référence à la feuille active qui est SH_1,
ce qui est la cause du résultat erronné.

Pour éviter ce genre d'erreur, il est préférable de toujours être explicite
et de nommer systématiquement la feuille à laquelle appartient le Cells ou
le Range.
Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))

Mishell.




"mik" wrote in message
news:
> ca marche merci. j'ai un peu de mal à comprendre quand même sur ce coup.
> Bon dimanche
>
> "Mishell" wrote:
>
>> Ou sinon, essaie avec cette syntaxe plus précise:
>> Set taux = SH_2.Range(SH_2.Cells(2, 9), SH_2.Cells(2, 9).End(xlDown))
>>
>> Mishell
>>
>>
>> "mik" wrote in message
>> news:
>> > Bonjour,
>> >
>> > en ce bon dimanche, quelqu'un aurait-il l'amabilité de me dire pourquoi
>> > ceci
>> > ne marche pas:
>> >
>> > Function toto (Plage As Range) As Double
>> > Dim taux As Range
>> >
>> > Set taux = SH_2.Range(Cells(2, 9), Cells(2, 9).End(xlDown)) (ne passe
>> > pas
>> > cette ligne)
>> > ...
>> >
>> > Sachant que cette fonction est appelée depuis la feuille SH_1
>> >
>> > merci d'avance
>> > mik
>>
>>
>>