Syntaxe Range

Le
Péhemme
Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie par
l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub
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
Hervé
Le #19657461
Bonsoir,

Essai de la façon suivante :

Sub De_Source_À_Destination()

Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range
Dim Fe As Worksheet

Set Fe = Worksheets("RECAP")

With Fe
DerLin = .Range("B65536").End(xlUp).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = .Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub

Hervé.


"Péhemme" news:OkcjEIC%
Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie
par l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub



Daniel.C
Le #19657451
Bonsoir.
Si tu ne qualifies pas Cells..., par défaut, VBA prend la cellule de la
feuille active. Tu définis donc une plage de RECAP limitée par des
cellules de la feuille active, d'où erreur. Mets :

With Worksheets("RECAP")
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With

Cordialement.
Daniel

Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une autre
page est active, j'obtiens un message "Erreur 1004 Erreur définie par
l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub


Péhemme
Le #19659451
Mille Mercis Hervé,

Par cette réponse, je comprends qu'il ne sert à rien de définir directement
avec "Set" l'objet Feuille avec lequel on va travailler.
On ne définit *que* le Range avec l'objet Feuille, tandis que l'on peut
définir directement une variable contenant l'objet Feuille où se trouve
l'information.
Enfin... je me comprends...
Merci
Michel


"Hervé" news:%230$9akC%
Bonsoir,

Essai de la façon suivante :

Sub De_Source_À_Destination()

Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range
Dim Fe As Worksheet

Set Fe = Worksheets("RECAP")

With Fe
DerLin = .Range("B65536").End(xlUp).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = .Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub

Hervé.


"Péhemme" news:OkcjEIC%
Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui
suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie
par l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub






Péhemme
Le #19659591
Mille Mercis Daniel,

Par cette réponse, je comprends qu'il ne sert à rien de définir directement
avec "Set" l'objet Feuille avec lequel on va travailler.
On ne définit *que* le Range avec l'objet Feuille, tandis que l'on peut
définir directement une variable contenant l'objet Feuille où se trouve
l'information.
Enfin... je me comprends...

Puisque tu a été sage ;-) tu as droit à une question supplémentaire :
Pourquoi, que je mette un . (point) devant Range de
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
ou que je n'en mette pas, cela fonctionne toujours ?

Bon, cela fonctionne et je pose encore des questions ?... ;-)

Merci encore
Michel


"Daniel.C" news:OuFcwkC%
Bonsoir.
Si tu ne qualifies pas Cells..., par défaut, VBA prend la cellule de la
feuille active. Tu définis donc une plage de RECAP limitée par des
cellules de la feuille active, d'où erreur. Mets :

With Worksheets("RECAP")
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With

Cordialement.
Daniel

Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui
suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie
par l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub






Péhemme
Le #19659701
Hervé et Daniel,

Pardon d'avoir l'esprit de l'escalier, mais pourquoi :
Set Cible = Worksheets("Detail").Range("A1")
fonctionne ?
Parce qu'elle n'est pas définie avec Cells ?

Bien amicalement
Michel
Daniel.C
Le #19659691
Bonne question ;-)
c'est vrai. moi je traduis en français :
Range(.Cells(1, 1), .Cells(DerLin, DerCol))
=plage commençant à la cellule A1 de la feuille RECAP et finissant à la
cellule xy de la feuille RECAP
C'est suffisant.
.Range(.Cells(1, 1), .Cells(DerLin, DerCol))
se traduit par :
plage de la feuille RECAP commençant à la cellule A1 de la feuille
RECAP et finissant à la cellule xy de la feuille RECAP
c'est bien aussi, mais comme tu as précisé que les cellules bornes
faisaient partie de la feuille RECAP, il s'en suit que la plage définie
fait partie de cette feuille donc pas besoin du point.
Daniel

Mille Mercis Daniel,

Par cette réponse, je comprends qu'il ne sert à rien de définir directement
avec "Set" l'objet Feuille avec lequel on va travailler.
On ne définit *que* le Range avec l'objet Feuille, tandis que l'on peut
définir directement une variable contenant l'objet Feuille où se trouve
l'information.
Enfin... je me comprends...

Puisque tu a été sage ;-) tu as droit à une question supplémentaire :
Pourquoi, que je mette un . (point) devant Range de
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
ou que je n'en mette pas, cela fonctionne toujours ?

Bon, cela fonctionne et je pose encore des questions ?... ;-)

Merci encore
Michel


"Daniel.C" news:OuFcwkC%
Bonsoir.
Si tu ne qualifies pas Cells..., par défaut, VBA prend la cellule de la
feuille active. Tu définis donc une plage de RECAP limitée par des cellules
de la feuille active, d'où erreur. Mets :

With Worksheets("RECAP")
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With

Cordialement.
Daniel

Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie
par l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub








Péhemme
Le #19659881
Tout est en effet dans le détail.
Encore Merci.
Depuis notre sortie en Bourgogne (tu étais jeune) JPS m'a défini comme
"celui qui s'accroche". Tu en fais actuellement les frais ;-)
Bien amicalement
Michel

"Daniel.C" news:uXwsJGJ%
Bonne question ;-)
c'est vrai. moi je traduis en français :
Range(.Cells(1, 1), .Cells(DerLin, DerCol))
=plage commençant à la cellule A1 de la feuille RECAP et finissant à la
cellule xy de la feuille RECAP
C'est suffisant.
.Range(.Cells(1, 1), .Cells(DerLin, DerCol))
se traduit par :
plage de la feuille RECAP commençant à la cellule A1 de la feuille RECAP
et finissant à la cellule xy de la feuille RECAP
c'est bien aussi, mais comme tu as précisé que les cellules bornes
faisaient partie de la feuille RECAP, il s'en suit que la plage définie
fait partie de cette feuille donc pas besoin du point.
Daniel

Mille Mercis Daniel,

Par cette réponse, je comprends qu'il ne sert à rien de définir
directement avec "Set" l'objet Feuille avec lequel on va travailler.
On ne définit *que* le Range avec l'objet Feuille, tandis que l'on peut
définir directement une variable contenant l'objet Feuille où se trouve
l'information.
Enfin... je me comprends...

Puisque tu a été sage ;-) tu as droit à une question supplémentaire :
Pourquoi, que je mette un . (point) devant Range de
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
ou que je n'en mette pas, cela fonctionne toujours ?

Bon, cela fonctionne et je pose encore des questions ?... ;-)

Merci encore
Michel


"Daniel.C" news:OuFcwkC%
Bonsoir.
Si tu ne qualifies pas Cells..., par défaut, VBA prend la cellule de la
feuille active. Tu définis donc une plage de RECAP limitée par des
cellules de la feuille active, d'où erreur. Mets :

With Worksheets("RECAP")
Set Source = Range(.Cells(1, 1), .Cells(DerLin, DerCol))
End With

Cordialement.
Daniel

Bonsoir à Tous,

Je deviens chèvre.
Pour une simple copie d'une page sur une autre, j'écris la macro qui
suit.
Elle fonctionne parfaitement bien si la page "RECAP" est active, si une
autre page est active, j'obtiens un message "Erreur 1004 Erreur définie
par l'application ou par l'objet" sur la ligne :
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))

Je dois donc avoir un problème de syntaxe, mais je ne vois pas lequel.
Quelque chose m'échappe.
Merci d'avance de votre aide
Michel

Sub De_Source_À_Destination()
Dim DerLin As Long
Dim DerCol As Integer
Dim Source As Range, Cible As Range

DerLin = Range("RECAP!B65536").End(xlUp).Row
DerCol = Sheets("RECAP").Cells.Find(What:="*", _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))
Set Cible = Worksheets("Detail").Range("A1")

Source.Copy Destination:=Cible

End Sub












Daniel.C
Le #19659871
Set Cible = Worksheets("Detail").Cells(1, 1)
est correct, parce que "Cells" est "qualifié" par le nom de la feuille,
c'est à dire que tu indiques le nom de la feuille.
Par contre,
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin,
DerCol))
n'est pas correct, parce que tu ne précises la feuille que pour "Range"
et pas pour les "Cells", qui de ce fait font référence à la feuille
active.
Daniel

Hervé et Daniel,

Pardon d'avoir l'esprit de l'escalier, mais pourquoi :
Set Cible = Worksheets("Detail").Range("A1")
fonctionne ?
Parce qu'elle n'est pas définie avec Cells ?

Bien amicalement
Michel


Péhemme
Le #19660831
Je finirai par comprendre...
Merci
Michel

"Daniel.C" news:esvH1OJ%
Set Cible = Worksheets("Detail").Cells(1, 1)
est correct, parce que "Cells" est "qualifié" par le nom de la feuille,
c'est à dire que tu indiques le nom de la feuille.
Par contre,
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
n'est pas correct, parce que tu ne précises la feuille que pour "Range" et
pas pour les "Cells", qui de ce fait font référence à la feuille active.
Daniel

Hervé et Daniel,

Pardon d'avoir l'esprit de l'escalier, mais pourquoi :
Set Cible = Worksheets("Detail").Range("A1")
fonctionne ?
Parce qu'elle n'est pas définie avec Cells ?

Bien amicalement
Michel






Jacquouille
Le #19662991
Salut tatous et tatousses
Le . (point) devant cell n'indique-t-il pas que cell fait partie de la
feuille active? Crois-je me souvenir.... ?????

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"Daniel.C" esvH1OJ%
Set Cible = Worksheets("Detail").Cells(1, 1)
est correct, parce que "Cells" est "qualifié" par le nom de la feuille,
c'est à dire que tu indiques le nom de la feuille.
Par contre,
Set Source = Worksheets("RECAP").Range(Cells(1, 1), Cells(DerLin, DerCol))
n'est pas correct, parce que tu ne précises la feuille que pour "Range" et
pas pour les "Cells", qui de ce fait font référence à la feuille active.
Daniel

Hervé et Daniel,

Pardon d'avoir l'esprit de l'escalier, mais pourquoi :
Set Cible = Worksheets("Detail").Range("A1")
fonctionne ?
Parce qu'elle n'est pas définie avec Cells ?

Bien amicalement
Michel






Publicité
Poster une réponse
Anonyme