Excel - Définir_une_plage_dynamiquement

Asked By Apitos on 11-Apr-12 04:28 PM
Bonsoir =E0 tous,

J'ai un probl=E8me pour d=E9finir une plage dynamiquement en allant de haut=
en bas.

Le souci c'est qu'il y a une seule ligne [I2]:

Range("I2:I" & [I2].End(xlDown).Row).Name =3D "reD=E9bit"

Je sais le faire de bas en haut (End(xlUp)) mais je le fais ainsi parce que=
j'ai un autre tableau qui m'enp=EAche d'utiliser la deuxi=E8me fa=E7on.

Une solution ?

Merci d'avance.


isabelle replied to Apitos on 11-Apr-12 05:51 PM
bonjour Apitos,

tu peut utiliser End(xlUp) ? partir de la ligne au dessus du 2?me tableau

--
isabelle



Le 2012-04-11 16:28, Apitos a ?crit :
LSteph replied to Apitos on 12-Apr-12 03:04 AM
Bonjour,

Pas s?r de bien voir la situation mais un truc du genre:

With [i2]
If len(.offset(1,0))>0 then
Range("I2:I" & .End(xlDown).Row).Name = "reD?bit"
else
.Name = "reD?bit"
end if
end with

--
LSteph



Bonsoir ? tous,

J'ai un probl?me pour d?finir une plage dynamiquement en allant de haut en
bas.

Le souci c'est qu'il y a une seule ligne [I2]:

Range("I2:I" & [I2].End(xlDown).Row).Name = "reD?bit"

Je sais le faire de bas en haut (End(xlUp)) mais je le fais ainsi parce que
j'ai un autre tableau qui m'enp?che d'utiliser la deuxi?me fa?on.

Une solution ?

Merci d'avance.
Apitos replied to LSteph on 12-Apr-12 08:39 AM
Bonjour LSteph,

Ca marche.

Et voila le code que j'utilise :

'-- D=E9finition des plages 'reD=E9bit', 'reD=E9bit_Date' et 'reD=E9bit_Nom=
s' dans le tableau re-D=E9bit
With [I2]
If Len(.Offset(1, 0)) > 0 Then
Range("I2:I" & .End(xlDown).Row).Name =3D "reD=E9bit"
Range("K2:K" & [K2].End(xlDown).Row).Name =3D "reD=E9bit_Date"
Range("J2:J" & [J2].End(xlDown).Row).Name =3D "reD=E9bit_Noms"
Else
.Name =3D "reD=E9bit"
[K2].Name =3D "reD=E9bit_Date"
[J2].Name =3D "reD=E9bit_Noms"
End If
End With

Merci.
LSteph replied to Apitos on 13-Apr-12 02:39 AM
Dim mTab(), x As Long
mTab = Array("reD?bit", "reD?bit_Date", "reD?bit_Noms")

For x = 1 To [I2:k2].Cells.Count

With [I2:k2].Cells(x)
If Len(.Offset(1, 0)) > 0 Then
Range(.Address, .End(xlDown).Address).Name = mTab(x - 1)
Else
.Name = mTab(x - 1)
End If
End With
Next


'LSteph ;-)
Apitos replied to LSteph on 13-Apr-12 08:07 AM
Bonjour LSteph,

Et pour ce code, peut-on le reduire ?

'-- D=E9finition des plages 'D=E9bit' et 'D=E9bit_Date' dans le tableau D=
=E9bit
Dim dbTab(), x As Long
dbTab =3D Array("D=E9bit", "D=E9bit_Date", "D=E9bit_Noms")
For x =3D 1 To [A2:C2].Cells.Count
With [A2:C2].Cells(x)
If Len(.Offset(1, 0)) > 0 Then
Range(.Address, .End(xlDown).Address).Name =3D dbTab(x - 1)
Else
.Name =3D dbTab(x - 1)
End If
End With
Next

'-- D=E9finition des plages 'reD=E9bit', 'reD=E9bit_Date' et 'reD=E9bit_Nom=
s' dans le tableau re-D=E9bit
Dim re_dbTab()
re_dbTab =3D Array("reD=E9bit", "reD=E9bit_Date", "reD=E9bit_Noms")

For x =3D 1 To [I2:k2].Cells.Count
With [I2:k2].Cells(x)
If Len(.Offset(1, 0)) > 0 Then
Range(.Address, .End(xlDown).Address).Name =3D re_dbTab(x - 1)
Else
.Name =3D re_dbTab(x - 1)
End If
End With
Next

Merci
gmlstep replied to Apitos on 13-Apr-12 10:33 AM
Bonjour,

Dim dbTab(), c As Range, myPlg As Range, x As Long
dbTab =3D Array("D=E9bit", "D=E9bit_Date", "D=E9bit_Noms", "reD=E9bit", "re=
D=E9bit_Date", "reD=E9bit_Noms")
Set myPlg =3D Union([A2:C2], [I2:k2])
x =3D 0
For Each c In myPlg.Cells
If Len(c.Offset(1, 0)) > 0 Then
Range(c.Address, c.End(xlDown).Address).Name =3D dbTab(x)
Else
c.Name =3D dbTab(x)
End If
=20
x =3D x + 1
Next
Set myPlg =3D Nothing

'LSteph





Le vendredi 13 avril 2012 14:07:33 UTC+2, Apitos a =E9crit=A0:
=E9bit
oms' dans le tableau re-D=E9bit
)
Apitos replied to gmlstep on 13-Apr-12 02:11 PM
Merci LSteph,

Ca marche tr=E9s bien.

Au plaisir de te rencontrer.

Cordialement

Apitos.