Set une plage sur une feuile non active (vba)

Le
SylVBA
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JPMonnier
Le #17674591
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" 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
michdenis
Le #17674761
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"
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
michdenis
Le #17674891
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" %
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"
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
JPMonnier
Le #17675021
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" 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" %
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"
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








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