Problème avec offset

Fermé
Sophie Grml Messages postés 11 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 10 juillet 2014 - 18 nov. 2013 à 03:41
Sophie Grml Messages postés 11 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 10 juillet 2014 - 18 nov. 2013 à 12:15
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

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
18 nov. 2013 à 04:09
Bonjour
ceci devrait fonctionner
wbkData.Worksheets("CAC").Cells(2, 2).Resize(35, 1).Copy Destination:=Worksheets("Stocks").[A1]

cdlt
0
Sophie Grml Messages postés 11 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 10 juillet 2014
18 nov. 2013 à 04:32
Merci,

cependant j'ai un message d'erreur "subscript out of range"
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 18/11/2013 à 10:41
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 .
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
18 nov. 2013 à 11:50
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sophie Grml Messages postés 11 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 10 juillet 2014
18 nov. 2013 à 12:15
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 !
0