Problème avec offset

[Fermé]
Signaler
Messages postés
11
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
10 juillet 2014
-
Messages postés
11
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
10 juillet 2014
-
Bonjour,

J'aimerai copier la plage de cellule B2:B35 depuis un workbook data vers un workbook Model. j'ai besoin d'utiliser la fonction offset pour pouvoir faire varier le numéro de colonne. J'ai écrit ce code mais il ne fonctionne pas :

wbkData.Worksheets("CAC").Range(Range("A1").Offset(1, 1) : Range("A1").Offset(35, 1)).Copy Destination:=wbkModel.Worksheets("Stocks").Range(Range("A1").Offset(1, 1) : Range("A1").Offset(35, 1))

Pouvez-vous me dire ou il pourrait y avoir une erreur ?

Merci !

5 réponses

Messages postés
2228
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2021
331
Bonjour
ceci devrait fonctionner
wbkData.Worksheets("CAC").Cells(2, 2).Resize(35, 1).Copy Destination:=Worksheets("Stocks").[A1]

cdlt
Messages postés
11
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
10 juillet 2014

Merci,

cependant j'ai un message d'erreur "subscript out of range"
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 181
Bonjour,
C(est vrai que pourquoi faire simple quand ont peu faire compliqué ? ..:-)
    wbkData.Sheets("CAC").Range("B2:B35").Copy wbkModel.Sheets("Stocks").Range("B2")
A+

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Bonjour,
Salut tout le monde,

Lorsque je saisis ton code, le débogage me signale l'erreur directement....
De plus, l'aide VBA sur les propriétés de l'objet Range est très claire :
Range(Cell1, Cell2)......

Remplace juste les : par , :
wbkData.Worksheets("CAC").Range(Range("A1").Offset(1, 1), Range("A1").Offset(35, 1)).Copy Destination:=wbkModel.Worksheets("Stocks").Range(Range("A1").Offset(1, 1), Range("A1").Offset(35, 1)) 

Sinon, Lermite222 a certainement la solution la plus simple.
Messages postés
11
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
10 juillet 2014

Merci pour vos réponses, celle de Frenchie83 fonctionne bien et me permet de coder la suite de mon programme comme voulu.

je rencontre un autre problème dans le début de mon programme. Je souhaite créer une listbox qui viendrait chercher les noms d'actions situés dans différentes worksheets (ici, "CAC", que j'ai stocké dans une variable "indice") sur la ligne A a partir de A2.

J'ai écrit ce code qui semble fonctionner, mais j'ai un message d'erreur "Object variable not set" type 91 qui apparait malgré tout, avec la ligne en gras ci dessous surlignée :




Private Sub CommandButton1_Click()

Dim period As Long, NbRows As Long, years As Integer, indice As String, status As Integer, icolumn As Integer, TargetR As Double, RfRate As Double, SharpeStock1 As Double, SharpeStock2 As Double, SharpeStock3 As Double, wbkData As Workbook, wbkModel As Workbook, StdDevStock1 As Double, StdDevStock2 As Double, StdDevStock3 As Double, VarStock1 As Double, VarStock2 As Double, VarStock3 As Double, i As Integer, AverageReturnStock1 As Double, AverageReturnStock2 As Double, AverageReturnStock3


Indice = "CAC"
years = 3

If years = 3 Then
period = 35
End If


Set wbkData = Workbooks.Open("D:\Data base Test.xlsm")
Set wbkModel = Workbooks.Open("D:\Model workbook test.xlsm")

' display the names of the stocks in the listbox

wbkData.Worksheets(indice).Activate


For icolumn = 1 To Range(Range("B1"), Range("B1").End(xlToRight)).Columns.Count

lstStocks.AddItem Range("B1").Offset(0, icolumn - 1).Value

Next icolumn

je ne comprend pas d'ou vient le problème, j(a

Merci d'avance !