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

Set Plage sur une autre feuille que l'active ? VBA

12 réponses
Avatar
SylVBA
Bonsoir =E0 vous,

Je cherche des explications afin de mieux comprendre le
fonctionnement:

Mon but =E9tant de d=E9finir une Plage qui est variable, qui ne comporte
JAMAIS de valeur sur la premi=E8re ligne (commence toujours vers la
sixi=E8me ou septi=E8me ligne de la colonne A).
Range(Range("A1").End(xlDown), Range("A65536").End(xlUp)).select fait
l'affaire pour tester la formule, ensuite je n'utilise pas le .select
dans la commande bien sur !

Les imp=E9ratifs :
Je me trouve sur la feuil1 qui est la feuille active
Je souhaite d=E9finir une plage sur la feuille 2, dans mon code la
msgbox me donne bien l'adresse de la plage sans faire r=E9f=E9rence =E0 la
feuille, je change de feuille (.select et/ou .activate) et la je pense
pouvoir =AB tromper =BB le programme en lui demandant un traitement sur la
plage et non il fait le traitement sur la Feuil1, et sur la plage
d=E9finie avant (set Plage =3D)

Comment peut on faire pour d=E9finir une Plage (set Plage=3D) sur une
feuille qui n'est pas active ?
Peut on ensuite faire un traitement sur cette plage sans activer la
feuille (additionner tel le code ou faire un tri ?)

Sub Macro1()
Dim Plage As Range
Set Plage =3D Range(Range("A1").End(xlDown), Range("A65536").End(xlUp))
MsgBox Plage.Address 'la plage est bonne
With Sheets("Feuil2")
For Each C In Plage
C.Value =3D C.Value + 1
Next C
End With
End Sub

Mon id=E9al existe t'il: Set Plage =3D LaFeuille.LaRange variable..........
For each c in Plage
Faire ceci
Next c
Un grand merci aux contributeurs,

SylVBA

10 réponses

1 2
Avatar
Tatanka
Bonsoir,

Il doit y avoir quelque chose de plus élégant mais ça me semble efficace :

Sub Macro1()
Application.ScreenUpdating = False
Dim F As Worksheet
Dim Plage As Range
Set F = ActiveSheet
Worksheets("Feuil2").Activate
Set Plage = ActiveSheet.Range([a1].End(xlDown), [A65536].End(xlUp))
With Plage
For Each C In Plage
C.Value = C.Value + 1
Next C
End With
F.Activate
Application.ScreenUpdating = True
End Sub

Serge


"SylVBA" a écrit dans le message de news:
Bonsoir à vous,

Je cherche des explications afin de mieux comprendre le
fonctionnement:

Mon but étant de définir une Plage qui est variable, qui ne comporte
JAMAIS de valeur sur la première ligne (commence toujours vers la
sixième ou septième ligne de la colonne A).
Range(Range("A1").End(xlDown), Range("A65536").End(xlUp)).select fait
l'affaire pour tester la formule, ensuite je n'utilise pas le .select
dans la commande bien sur !

Les impératifs :
Je me trouve sur la feuil1 qui est la feuille active
Je souhaite définir une plage sur la feuille 2, dans mon code la
msgbox me donne bien l'adresse de la plage sans faire référence à la
feuille, je change de feuille (.select et/ou .activate) et la je pense
pouvoir « tromper » le programme en lui demandant un traitement sur la
plage et non il fait le traitement sur la Feuil1, et sur la plage
définie avant (set Plage =)

Comment peut on faire pour définir une Plage (set Plage=) sur une
feuille qui n'est pas active ?
Peut on ensuite faire un traitement sur cette plage sans activer la
feuille (additionner tel le code ou faire un tri ?)

Sub Macro1()
Dim Plage As Range
Set Plage = Range(Range("A1").End(xlDown), Range("A65536").End(xlUp))
MsgBox Plage.Address 'la plage est bonne
With Sheets("Feuil2")
For Each C In Plage
C.Value = C.Value + 1
Next C
End With
End Sub

Mon idéal existe t'il: Set Plage = LaFeuille.LaRange variable..........
For each c in Plage
Faire ceci
Next c
Un grand merci aux contributeurs,

SylVBA
Avatar
SylVBA
Merci takanta

MAIS je dois rester sur la feuille active
j'ai un code qui fait la même procédure que toi, avec une écriture
différente....

Je ne peux pas l'utiliser dans ce cas, ma vraie question:
Peut on faire un set Plage = sur une autre feuille que l'active sans
activer la feuille ou l'on souhaite faire le set plage ?

Le but étant ensuite sur cette plage de faire des opérations ou des
tris

Merci et bonne nuit !

SylVBA
Avatar
Tatanka
Bonsoir Sylvie,

Tu ne restes peut-être pas sur la feuille active durant
l'exécution de ma macro mais tu ne t'en rends pas compte
( Application.ScreenUpdating = False )
et une fois la macro exécutée, tu es sur ta feuille active.

Sans activer la feuille concernée, moi pas savoir mais les
grandes personnes seront bientöt de retour :-)

Bonne nuit à toi aussi

Serge


"SylVBA" a écrit dans le message de news:
Merci takanta

MAIS je dois rester sur la feuille active
j'ai un code qui fait la même procédure que toi, avec une écriture
différente....

Je ne peux pas l'utiliser dans ce cas, ma vraie question:
Peut on faire un set Plage = sur une autre feuille que l'active sans
activer la feuille ou l'on souhaite faire le set plage ?

Le but étant ensuite sur cette plage de faire des opérations ou des
tris

Merci et bonne nuit !

SylVBA
Avatar
Jacky
Bonjour,

Comment peut on faire pour définir une Plage (set Plage=) sur une feuille
qui n'est pas active ?
Par exemple

'------------
Sub Macro1()
Dim Plage As Range, y As Long, x As Long
y = Sheets("Feuil2").[a1].End(4).Row
x = Sheets("Feuil2").[A65536].End(3).Row
If y = 65536 Then MsgBox "Aucune donnée": Exit Sub
Set Plage = Sheets("feuil2").Range("A" & y & ":" & "a" & x)
With Sheets("Feuil2")
' MsgBox Plage.Address 'la plage est bonne
For Each c In Plage
c.Value = c.Value + 1
Next c
End With
End Sub
'-----------------

--
Salutations
JJ


"SylVBA" a écrit dans le message de news:

Bonsoir à vous,

Je cherche des explications afin de mieux comprendre le
fonctionnement:

Mon but étant de définir une Plage qui est variable, qui ne comporte
JAMAIS de valeur sur la première ligne (commence toujours vers la
sixième ou septième ligne de la colonne A).
Range(Range("A1").End(xlDown), Range("A65536").End(xlUp)).select fait
l'affaire pour tester la formule, ensuite je n'utilise pas le .select
dans la commande bien sur !

Les impératifs :
Je me trouve sur la feuil1 qui est la feuille active
Je souhaite définir une plage sur la feuille 2, dans mon code la
msgbox me donne bien l'adresse de la plage sans faire référence à la
feuille, je change de feuille (.select et/ou .activate) et la je pense
pouvoir « tromper » le programme en lui demandant un traitement sur la
plage et non il fait le traitement sur la Feuil1, et sur la plage
définie avant (set Plage =)

Comment peut on faire pour définir une Plage (set Plage=) sur une
feuille qui n'est pas active ?
Peut on ensuite faire un traitement sur cette plage sans activer la
feuille (additionner tel le code ou faire un tri ?)

Sub Macro1()
Dim Plage As Range
Set Plage = Range(Range("A1").End(xlDown), Range("A65536").End(xlUp))
MsgBox Plage.Address 'la plage est bonne
With Sheets("Feuil2")
For Each C In Plage
C.Value = C.Value + 1
Next C
End With
End Sub

Mon idéal existe t'il: Set Plage = LaFeuille.LaRange variable..........
For each c in Plage
Faire ceci
Next c
Un grand merci aux contributeurs,

SylVBA

Avatar
anonymousA
Bonjour,

Pour définir une plage d'une autre feuille , il n'est en effet nullement
nécessaire de s'y rendre et même plutôt déconseillé en dehors de cas de
figure très particuliers.

Exemple, je suis en Feuil1 et je veux définir une plage sur une feuille
dont le nom d'onglet est toto . Dans le programme, j'écris (et attention
aux points (.) dans les instructions ci-dessous , ils sont essentiels
pour une bonne prise en compte de la plage que tu souhaites):

With worksheets("toto")

Set rng = .Range(.Range("A1").End(xlDown), .Range("A65536").End(xlUp))

End With

La plage en question a pour parent la feuille de nom d'onglet toto.si tu
veux t'en convaincre , écris à la suite de ce qui précède

msgbox rng.parent.name

Ensuite , il te sera aisé d'écrire p.e

for each c in rng
c.value=c.value+1
next

tu vois que tu n'as rien activé, ni sélectionné et tu es donc toujours
sur ta feuille active qui est différente de la feuille "toto".

A+


Bonsoir à vous,

Je cherche des explications afin de mieux comprendre le
fonctionnement:

Mon but étant de définir une Plage qui est variable, qui ne comporte
JAMAIS de valeur sur la première ligne (commence toujours vers la
sixième ou septième ligne de la colonne A).
Range(Range("A1").End(xlDown), Range("A65536").End(xlUp)).select fait
l'affaire pour tester la formule, ensuite je n'utilise pas le .select
dans la commande bien sur !

Les impératifs :
Je me trouve sur la feuil1 qui est la feuille active
Je souhaite définir une plage sur la feuille 2, dans mon code la
msgbox me donne bien l'adresse de la plage sans faire référence à la
feuille, je change de feuille (.select et/ou .activate) et la je pense
pouvoir « tromper » le programme en lui demandant un traitement sur la
plage et non il fait le traitement sur la Feuil1, et sur la plage
définie avant (set Plage =)

Comment peut on faire pour définir une Plage (set Plage=) sur une
feuille qui n'est pas active ?
Peut on ensuite faire un traitement sur cette plage sans activer la
feuille (additionner tel le code ou faire un tri ?)

Sub Macro1()
Dim Plage As Range
Set Plage = Range(Range("A1").End(xlDown), Range("A65536").End(xlUp))
MsgBox Plage.Address 'la plage est bonne
With Sheets("Feuil2")
For Each C In Plage
C.Value = C.Value + 1
Next C
End With
End Sub

Mon idéal existe t'il: Set Plage = LaFeuille.LaRange variable..........
For each c in Plage
Faire ceci
Next c
Un grand merci aux contributeurs,

SylVBA



Avatar
SylVBA
Merci pour ton aide,

mais si je ne peux pas quitter la feuille active c'est que j'ai un
évenement worksheet_change...

Merci pour ton aide,

Je guette le retour des MVP ou de ceux qui pourrait l'être au vu de la
qualité pédagogique des réponses apportées

merci et bon week end

SylVBA
Avatar
anonymousA
Bonjour,

Il me semble qu'il n'y a pas de rapport entre un évènement
Worksheet_Change ( qui est déclenché par une modification de la valeur
des cellules et encore pas toujours ) et le fait de quitter ou de
revenir sur une feuille , évènements qui eux sont contrôlés par les
procédures evenementielles Activate et Deactivate des feuilles.

Mais peut-être n'en as tu pas assez dit ?

A+


Merci pour ton aide,

mais si je ne peux pas quitter la feuille active c'est que j'ai un
évenement worksheet_change...

Merci pour ton aide,

Je guette le retour des MVP ou de ceux qui pourrait l'être au vu de la
qualité pédagogique des réponses apportées

merci et bon week end

SylVBA




Avatar
SylVBA
Sorry !!!!!!!!!!!!

C'est un Activate, puis un change.......

Confuse du samedi !

Bref peut on définir une plage une feuille qui n'est pas celle qui est
active .......

Merci à vous,

SylVBA
Avatar
anonymousA
pour la définition de la plage, tu as 2 réponses sur ce même fil, celle
de Jacky et la mienne.

A+


Sorry !!!!!!!!!!!!

C'est un Activate, puis un change.......

Confuse du samedi !

Bref peut on définir une plage une feuille qui n'est pas celle qui est
active .......

Merci à vous,

SylVBA




Avatar
SylVBA
Alors là la honte !!

J'avais pas vu vos 2 réponses, mais la dernière qui semblait être la
suite de hier soir tard !!!!

j'ai répondu sans voir vos réponses à la même heure, un problème de
rafraichissement ou c'est moi qui dort encore ?

je vais essayer et je reviens dans la journée,

merci d'avance à vous 2,

Sans ta réponse j'attendrai encore!

le samedi, c'est vrai que c'est pas fait pour bosser !

de toute façon j'ai bonne espoir, généralement vous 2 , les réponses
c'est du costaud !

Merci et je reviens pour commenter en fin de journée !

SylVBA
1 2