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

Syntaxe Range

11 réponses
Avatar
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

10 réponses

1 2
Avatar
Hervé
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" a écrit dans le message de
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



Avatar
Daniel.C
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


Avatar
Péhemme
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é" a écrit dans le message de
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" a écrit dans le message de
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






Avatar
Péhemme
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" a écrit dans le message de
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






Avatar
Péhemme
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
Avatar
Daniel.C
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" a écrit dans le message de
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








Avatar
Péhemme
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" a écrit dans le message de
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" a écrit dans le message de
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












Avatar
Daniel.C
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


Avatar
Péhemme
Je finirai par comprendre...
Merci
Michel

"Daniel.C" a écrit dans le message de
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






Avatar
Jacquouille
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" a écrit dans le message de 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






1 2