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

Le
SylVBA
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tatanka
Le #5017801
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" 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
SylVBA
Le #5017791
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
Tatanka
Le #5017771
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" 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
Jacky
Le #5017661
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"
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

anonymousA
Le #5017641
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



SylVBA
Le #5017631
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
anonymousA
Le #5017581
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




SylVBA
Le #5017571
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
anonymousA
Le #5017541
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




SylVBA
Le #5017521
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
Publicité
Poster une réponse
Anonyme