Utiliser Range avec des Variables

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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+!
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour