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

Set une plage sur une feuile non active (vba)

6 réponses
Avatar
SylVBA
Bsr =E0 vous tous,

dans une proc=E9dure je souhaite d=E9finir une plage pour exporter cette
plage sur une autre feuille d'un autre classeur:

dans mes d=E9clarations:
Dim ExtractPlage As Range

J'ouvre un fichier sur le r=E9seau en lecture seule: OK
Il devient fichier actif: OK
Il s'ouvre sur une autre feuille qui se nomme "AA"
Sur la feuille "base" sans l'activer je souhaite exporter la plage
(variable) qui est A1:Hxx quelque chose 700/850/681 ...
Le nom de la feuille est "Base"
Attention la feuille "Base" n'est pas visible, elle est et doit rester
cach=E9e (je ne pense pas que cela change ...)

Set ExtractPlage =3D ActiveWorkbook.Sheets("Base").Range("A1:H700")
ExtractPlage.Copy

Si j'=E9cris en "Dur" comme cela Range("A1:H700") tout va bien

Si je souhaite rendre la plage variable comme cela:
Set ExtractPlage =3D
ActiveWorkbook.Sheets("Base").Range("A1",Range("H1").end(xldown))
alors l=E0 c'est impossible ....

1/ pourquoi ?
2/ Comment r=E9 =E9crire cette petite phrase ?

Je vous remercie sinc=E8rement

Je reste dans le coin !!

Merci encore de votre patiente et de votre p=E9dagogie....je vais y
arriver

Je serai alors fi=E8re ...;Lol !

Syl VBA

6 réponses

Avatar
JPMonnier
Bonsoir,
ta feuille Base peut être masquée

Sub Essai()
Sheets("base").Activate
Set ExtractPlage = ActiveWorkbook.Sheets("Base").Range("A1",
Range("H1").End(xlDown))
ExtractPlage.Copy
Sheets("aa").Activate
ActiveSheet.Paste Destination:=Worksheets("AA").Range("D1")
End Sub
--
Cordialement


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

dans une procédure je souhaite définir une plage pour exporter cette
plage sur une autre feuille d'un autre classeur:

dans mes déclarations:
Dim ExtractPlage As Range

J'ouvre un fichier sur le réseau en lecture seule: OK
Il devient fichier actif: OK
Il s'ouvre sur une autre feuille qui se nomme "AA"
Sur la feuille "base" sans l'activer je souhaite exporter la plage
(variable) qui est A1:Hxx quelque chose 700/850/681 ...
Le nom de la feuille est "Base"
Attention la feuille "Base" n'est pas visible, elle est et doit rester
cachée (je ne pense pas que cela change ...)

Set ExtractPlage = ActiveWorkbook.Sheets("Base").Range("A1:H700")
ExtractPlage.Copy

Si j'écris en "Dur" comme cela Range("A1:H700") tout va bien

Si je souhaite rendre la plage variable comme cela:
Set ExtractPlage ActiveWorkbook.Sheets("Base").Range("A1",Range("H1").end(xldown))
alors là c'est impossible ....

1/ pourquoi ?
2/ Comment ré écrire cette petite phrase ?

Je vous remercie sincèrement

Je reste dans le coin !!

Merci encore de votre patiente et de votre pédagogie....je vais y
arriver

Je serai alors fière ...;Lol !

Syl VBA
Avatar
michdenis
Essaie de cette manière :

with ActiveWorkbook
with .Sheets("Base")
Set ExtractPlage = _
.Range("A1", .Range("H1").end(xldown))
end with
End With
ExtractPlage.Copy





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

Bsr à vous tous,

dans une procédure je souhaite définir une plage pour exporter cette
plage sur une autre feuille d'un autre classeur:

dans mes déclarations:
Dim ExtractPlage As Range

J'ouvre un fichier sur le réseau en lecture seule: OK
Il devient fichier actif: OK
Il s'ouvre sur une autre feuille qui se nomme "AA"
Sur la feuille "base" sans l'activer je souhaite exporter la plage
(variable) qui est A1:Hxx quelque chose 700/850/681 ...
Le nom de la feuille est "Base"
Attention la feuille "Base" n'est pas visible, elle est et doit rester
cachée (je ne pense pas que cela change ...)

Set ExtractPlage = ActiveWorkbook.Sheets("Base").Range("A1:H700")
ExtractPlage.Copy

Si j'écris en "Dur" comme cela Range("A1:H700") tout va bien

Si je souhaite rendre la plage variable comme cela:
Set ExtractPlage ActiveWorkbook.Sheets("Base").Range("A1",Range("H1").end(xldown))
alors là c'est impossible ....

1/ pourquoi ?
2/ Comment ré écrire cette petite phrase ?

Je vous remercie sincèrement

Je reste dans le coin !!

Merci encore de votre patiente et de votre pédagogie....je vais y
arriver

Je serai alors fière ...;Lol !

Syl VBA
Avatar
michdenis
J'oubliais la question "pourquoi"

Si tu fais référence à une plage de cellules dont la feuille
n'est pas affichée à l'écran, tu dois t'assurer que tu places
un "POINT" devant l'objet "RANGE" pour signifier à excel
que la plage stipuler appartient bien à une feuille spécifique.

L'utilisation de With ...End With facilite la saisie du code
dans de tel cas. Dans l'exemple du code soumis, remarque
que j'ai utilisé le point devant chaque expression "Range"

C'est plus facile et simple d'écrire comme ceci:
with .Sheets("Base")
Set ExtractPlage = _
.Range("A1", .Range("H1").end(xldown))
end with

que d'employer ceci :
Sheets("Base").Range("A1", Sheets("Base").Range("H1").end(xldown))




"michdenis" a écrit dans le message de news:
%
Essaie de cette manière :

with ActiveWorkbook
with .Sheets("Base")
Set ExtractPlage = _
.Range("A1", .Range("H1").end(xldown))
end with
End With
ExtractPlage.Copy





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

Bsr à vous tous,

dans une procédure je souhaite définir une plage pour exporter cette
plage sur une autre feuille d'un autre classeur:

dans mes déclarations:
Dim ExtractPlage As Range

J'ouvre un fichier sur le réseau en lecture seule: OK
Il devient fichier actif: OK
Il s'ouvre sur une autre feuille qui se nomme "AA"
Sur la feuille "base" sans l'activer je souhaite exporter la plage
(variable) qui est A1:Hxx quelque chose 700/850/681 ...
Le nom de la feuille est "Base"
Attention la feuille "Base" n'est pas visible, elle est et doit rester
cachée (je ne pense pas que cela change ...)

Set ExtractPlage = ActiveWorkbook.Sheets("Base").Range("A1:H700")
ExtractPlage.Copy

Si j'écris en "Dur" comme cela Range("A1:H700") tout va bien

Si je souhaite rendre la plage variable comme cela:
Set ExtractPlage ActiveWorkbook.Sheets("Base").Range("A1",Range("H1").end(xldown))
alors là c'est impossible ....

1/ pourquoi ?
2/ Comment ré écrire cette petite phrase ?

Je vous remercie sincèrement

Je reste dans le coin !!

Merci encore de votre patiente et de votre pédagogie....je vais y
arriver

Je serai alors fière ...;Lol !

Syl VBA
Avatar
JPMonnier
Bonsoir MD,
c'est vrai que c'est plus facile dans ton ex
Ici on donne ce que l'on sait et on prend ce que l'on ne sait pas
C'est bien le but du forum !

--
Cordialement

"michdenis" a écrit dans le message de
news:%
J'oubliais la question "pourquoi"

Si tu fais référence à une plage de cellules dont la feuille
n'est pas affichée à l'écran, tu dois t'assurer que tu places
un "POINT" devant l'objet "RANGE" pour signifier à excel
que la plage stipuler appartient bien à une feuille spécifique.

L'utilisation de With ...End With facilite la saisie du code
dans de tel cas. Dans l'exemple du code soumis, remarque
que j'ai utilisé le point devant chaque expression "Range"

C'est plus facile et simple d'écrire comme ceci:
with .Sheets("Base")
Set ExtractPlage = _
.Range("A1", .Range("H1").end(xldown))
end with

que d'employer ceci :
Sheets("Base").Range("A1", Sheets("Base").Range("H1").end(xldown))




"michdenis" a écrit dans le message de news:
%
Essaie de cette manière :

with ActiveWorkbook
with .Sheets("Base")
Set ExtractPlage = _
.Range("A1", .Range("H1").end(xldown))
end with
End With
ExtractPlage.Copy





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

Bsr à vous tous,

dans une procédure je souhaite définir une plage pour exporter cette
plage sur une autre feuille d'un autre classeur:

dans mes déclarations:
Dim ExtractPlage As Range

J'ouvre un fichier sur le réseau en lecture seule: OK
Il devient fichier actif: OK
Il s'ouvre sur une autre feuille qui se nomme "AA"
Sur la feuille "base" sans l'activer je souhaite exporter la plage
(variable) qui est A1:Hxx quelque chose 700/850/681 ...
Le nom de la feuille est "Base"
Attention la feuille "Base" n'est pas visible, elle est et doit rester
cachée (je ne pense pas que cela change ...)

Set ExtractPlage = ActiveWorkbook.Sheets("Base").Range("A1:H700")
ExtractPlage.Copy

Si j'écris en "Dur" comme cela Range("A1:H700") tout va bien

Si je souhaite rendre la plage variable comme cela:
Set ExtractPlage > ActiveWorkbook.Sheets("Base").Range("A1",Range("H1").end(xldown))
alors là c'est impossible ....

1/ pourquoi ?
2/ Comment ré écrire cette petite phrase ?

Je vous remercie sincèrement

Je reste dans le coin !!

Merci encore de votre patiente et de votre pédagogie....je vais y
arriver

Je serai alors fière ...;Lol !

Syl VBA








Avatar
SylVBA
merci à vous 2

je ne peux pas essayer ce soir, le réseau n'est pas à la
maison..........

Dès demain je fais les essais et reviens

Merci JPMonnier mais je pense avoir essayer cela, et je pense avoir un
bugg

A voir demain

je vous remercie tout plein

Bonne soirée

SYL VBA
Avatar
SylVBA
Bonsoir,

merci à vous 2, merci aussi à Michdenis pour l'explication du
"Pourquoi"

J'ai fait les essais, et tout est ok, fonctionne parfaitement.

Bonne soirée et à bientôt !!!!

SylVBA