Utiliser Range avec des Variables

  • Initiateur de la discussion antoine
  • Date de début
A

antoine

Guest
Bonjour et bon lundi ...



J'aimerais pouvoir utiliser Range() avec des cellules et des plages variables, et non plus avec des chiffres et des lettres.
Avant de poser cette question j'ai recherché un peu et je sui stombé sur cette syntaxe, qu'exel me refuse systématiquement
Range(cells(1,1),cells(5,1)), ce qui serait egale a Range("a1","a5") ou a
A = 1, b =5
Range(cells(a,a),cells(b,a)) <--- voila le genre de chose dont j'aurais besoin en fait .... je sais que c possible c'est obliger. mais je trouve pas !

merci
 
S

sousou

Guest
Voici un exemple d'utilisation qui devrait te permettre de mieux comprendre l'utilisation de cette syntaxe.

Sub test()
Set données = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(3, 2))
For Each i In données
MsgBox i
Next
End Sub
 
A

antoine

Guest
sousou, je ne comprend pas trop ton exemple : le activesheet n'est pas obligatoire n'est-ce pas ? ( non ? )
et surtout : "for each i in donnée" ... c'est quoi le i ?
désolé si c évident, mais g du mal avec les for each ... next
 
S

sousou

Guest
Rebonjour Antoine
Non activesheet n'est pas obligatoire, mais l'objet parent est recommandé pour une meilleure lecture de tes macros.
Il n'y a jamais de soucis quant tout est simple, mais!

J'ai inscrit une boucle each in, pour que tu puisses voir le résultat de la définition de la plage données. Mais ce n'est sans doûte pas utile à ton appli

Cette boucle dit :
pour(for) chaque(each) objet (i ou autre chose c'est ici une variable) dans(in) maplage de données (donnée définit au dessus)

affiche i

next

Plus d'infos? a+!
 
K

kINGRON

Guest
Dans mon code suivant j aimerais mettre la fonction range pour les cellules de 2 a i mais je ne sais le faire peut on m aider?


Sub Launch_Order_Dialog()
Dim XPos As Variant
Dim YPos As Variant
Dim result As Variant
Dim dOrder As Object
Set dOrder = CreateObject("REDI.ORDER")

XPos = 10
YPos = 10

dOrder.Symbol = UCase(Worksheets("OrdDlg").Cells(2, 1).Value)
dOrder.Quantity = Worksheets("OrdDlg").Cells(2, 2).Value
dOrder.Side = Worksheets("OrdDlg").Cells(2, 3).Value
dOrder.Price = Worksheets("OrdDlg").Cells(2, 4).Value
dOrder.Exchange = Worksheets("OrdDlg").Cells(2, 5).Value
dOrder.Account = Worksheets("OrdDlg").Cells(2, 6).Value
dOrder.UserID = Worksheets("OrdDlg").Cells(2, 7).Value
dOrder.PriceType = "LMT"
dOrder.TIF = "Day"
dOrder.StopPrice = 0
dOrder.Memo = "none"
dOrder.Password = Worksheets("OrdDlg").Cells(2, 8).Value
dOrder.DisplayQuantity = Worksheets("OrdDlg").Cells(2, 9).Value

result = dOrder.DisplayOrderDlg(XPos, YPos)


End Sub
 
N

nico

Guest
Bonjour,

Mon probleme: copier un plage de cellule d'un fichier dans un autre plage de cellule dans un autre fichier

fichier source: sFileName
feuille source: sSheetToCopy
Plage a copier:
cellule 1 (R,C) (iRowStart, iwtColumn)
cellule 2 (R,C) (iRowEnd,iwtColumn)

fichier destination: sThisFile
feuille destination: sSheetToPaste
Cellule receptrice: (iRowToPaste,2)

voila ma syntaxe (attention c'est long)
Workbooks(sFileName).Sheets(sSheetToCopy).Range(Cells(iRowStart, iwtColumn), Cells(iRowEnd, iwtColumn)).Copy Destination:=Workbooks(sThisFile).Sheets(sSheetToPaste).Range(Cells(iRowToPaste, 2))

Ca me parait correct mais ca vaut pas marcher. Quelqu'un y voit une solution?

Merci Nico
 

Discussions similaires

Réponses
7
Affichages
410

Statistiques des forums

Discussions
312 502
Messages
2 089 047
Membres
104 011
dernier inscrit
dfr