OVH Cloud OVH Cloud

range et sous-range

9 réponses
Avatar
Alain NEWS
(excel 2000)
J'ai une table déclarée par sous VBA excel par :
Set maTable= Range(Cells(4, 4), Cells(20, 4))

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))

Merci.
Cordialement.
--
Otez la cle pour me répondre.

9 réponses

Avatar
AV
Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))


Set maSousTable = Range(maTable(7).Address, maTable(12).Address)

??
AV

Avatar
Frédéric Sigonneau
Bonjour,

Autres approches possibles pour définir des plages de cellules :

Sub test()
Set maTable = Cells(4, 4).Resize(17)
maTable.Value = "maTable"
Set maSousTable = maTable.Cells(7, 1).Resize(6)
maSousTable.Value = "maSousTable"
'ou
Set maSousTable = maTable.Range("A7:A12")
maSousTable.Select
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


(excel 2000)
J'ai une table déclarée par sous VBA excel par :
Set maTable= Range(Cells(4, 4), Cells(20, 4))

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))

Merci.
Cordialement.
--
Otez la cle pour me répondre.


Avatar
Frédéric Sigonneau
Bonsoir,

A donner un résultat visuel du résultat des différentes syntaxes. Si tu exécutes
la procédure, la plage de départ (D4:D20) contient le mot "maTable". La première
syntaxe met en évidence la 'sous plage' en remplaçant "maTable" par
"maSousTable", la deuxième se contente de la sélectionner.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

Set maTable = Cells(4, 4).Resize(17)


A quoi sert d'ajouter la commande suivante?
maTable.Value = "maTable"


gb

"Frédéric Sigonneau" a écrit:
Bonjour,

Autres approches possibles pour définir des plages de cellules :

Sub test()
Set maTable = Cells(4, 4).Resize(17)
maTable.Value = "maTable"
Set maSousTable = maTable.Cells(7, 1).Resize(6)
maSousTable.Value = "maSousTable"
'ou
Set maSousTable = maTable.Range("A7:A12")
maSousTable.Select
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


(excel 2000)
J'ai une table déclarée par sous VBA excel par :
Set maTable= Range(Cells(4, 4), Cells(20, 4))

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))

Merci.
Cordialement.
--
Otez la cle pour me répondre.








Avatar
Alain NEWS
AV wrote:

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))



Set maSousTable = Range(maTable(7).Address, maTable(12).Address)

??
AV


Petite précision la doc est vraiment pas claire.


maTable ->Set maTable= Range(Cells(4, 4), Cells(20, 4))
Set maSousTable = Range(maTable(7).Address, maTable(12).Address)

Va me donner la sous-table équivalente à :
maTable ->Set maTable= Range(Cells(10, 4), Cells(31, 4))

Merci.

La solution donnée par FREDERIC change la taille de la table
(si j'en crois la doc je n'est pas pu tester).

--
Otez la cle pour me répondre.


Avatar
AV
Petite précision la doc est vraiment pas claire.
maTable ->Set maTable= Range(Cells(4, 4), Cells(20, 4))
Set maSousTable = Range(maTable(7).Address, maTable(12).Address)
Va me donner la sous-table équivalente à :
maTable ->Set maTable= Range(Cells(10, 4), Cells(31, 4))


Ce serait très étonnant. ;-)
Fait le test suivant :
Set maTable = Range(Cells(4, 4), Cells(20, 4))
Set maSousTable = Range(maTable(7).Address, maTable(12).Address)
MsgBox maTable.Address '---> $D$4:$D$20
MsgBox maSousTable.Address '---> $D$10:$D$15

alors que Set maTable= Range(Cells(10, 4), Cells(31, 4))
MsgBox maTable.Address '---> $D$10:$D$31

Dans la solution que je t'ai proposée, on utilise la méthode "Item"
maTable(7).Address est le raccourci de maTable.Item(7).Address
ce qui à l'avantage de garder la position relative de la sous-table dans la
table
A voir la solution qui t'intéresse

AV

Avatar
Alain NEWS
AV wrote:
Petite précision la doc est vraiment pas claire.
maTable ->Set maTable= Range(Cells(4, 4), Cells(20, 4))
Set maSousTable = Range(maTable(7).Address, maTable(12).Address)
Va me donner la sous-table équivalente à :
maTable ->Set maTable= Range(Cells(10, 4), Cells(31, 4))



Ce serait très étonnant. ;-)


tu as raison je me suis gouré je voulais dire
maSousTable ->Set maSousTable= Range(Cells(10, 4), Cells(15, 4))

désolé.
Fait le test suivant :
Set maTable = Range(Cells(4, 4), Cells(20, 4))
Set maSousTable = Range(maTable(7).Address, maTable(12).Address)
MsgBox maTable.Address '---> $D$4:$D$20
MsgBox maSousTable.Address '---> $D$10:$D$15


tout à fait.
Je connaissais pas cette instruction. Trés interessante :-)


alors que Set maTable= Range(Cells(10, 4), Cells(31, 4))
MsgBox maTable.Address '---> $D$10:$D$31

Dans la solution que je t'ai proposée, on utilise la méthode "Item"
maTable(7).Address est le raccourci de maTable.Item(7).Address
ce qui à l'avantage de garder la position relative de la sous-table dans la
table
Ah, c'est clair.


A voir la solution qui t'intéresse
Les deux, je vais faire des tests et voir la doc.


Merci AV.


--
Otez la cle pour me répondre.


Avatar
gb
"AV" a écrit
Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))


Set maSousTable = Range(maTable(7).Address, maTable(12).Address)


Tu peux aussi adopter cette syntaxe:
Set maSousTable = Range(matable(7, 1).Address, matable(12, 1).Address)

GB


Avatar
gb
Bonjour.

Set maTable = Cells(4, 4).Resize(17)


A quoi sert d'ajouter la commande suivante?
maTable.Value = "maTable"


gb

"Frédéric Sigonneau" a écrit:
Bonjour,

Autres approches possibles pour définir des plages de cellules :

Sub test()
Set maTable = Cells(4, 4).Resize(17)
maTable.Value = "maTable"
Set maSousTable = maTable.Cells(7, 1).Resize(6)
maSousTable.Value = "maSousTable"
'ou
Set maSousTable = maTable.Range("A7:A12")
maSousTable.Select
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


(excel 2000)
J'ai une table déclarée par sous VBA excel par :
Set maTable= Range(Cells(4, 4), Cells(20, 4))

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))

Merci.
Cordialement.
--
Otez la cle pour me répondre.






Avatar
gb
OK. Merci.
gb

"Frédéric Sigonneau" wrote in message
news:
Bonsoir,

A donner un résultat visuel du résultat des différentes syntaxes. Si tu
exécutes

la procédure, la plage de départ (D4:D20) contient le mot "maTable". La
première

syntaxe met en évidence la 'sous plage' en remplaçant "maTable" par
"maSousTable", la deuxième se contente de la sélectionner.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

Set maTable = Cells(4, 4).Resize(17)


A quoi sert d'ajouter la commande suivante?
maTable.Value = "maTable"


gb

"Frédéric Sigonneau" a écrit:
Bonjour,

Autres approches possibles pour définir des plages de cellules :

Sub test()
Set maTable = Cells(4, 4).Resize(17)
maTable.Value = "maTable"
Set maSousTable = maTable.Cells(7, 1).Resize(6)
maSousTable.Value = "maSousTable"
'ou
Set maSousTable = maTable.Range("A7:A12")
maSousTable.Select
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


(excel 2000)
J'ai une table déclarée par sous VBA excel par :
Set maTable= Range(Cells(4, 4), Cells(20, 4))

Comment définir sur cette table une nouvelle de type :
Set maSousTable= maTable.Range(Cells(10, 4),
maTable.Cells(15, 4))

Merci.
Cordialement.
--
Otez la cle pour me répondre.