OVH Cloud OVH Cloud

Trouver les colonnes de gauche et droite d'une sélection

20 réponses
Avatar
AfterBoy
Bonjour,

J'ai une s=E9lection(range) et je veux savoir la colonne de gauche et
droite de la s=E9lection.
Ex : S=E9lection de B2:E2 donc gauche =3D 2 et droite =3D 5

merci

10 réponses

1 2
Avatar
DarthMac
ah... Steph,

elle me plait bien cette petite boucle là pourtant... mais bon je suppose
que ce qui te gêne c'est de balayer toutes les cellules dans le cas de
grosses sélections... me gouré-je ?

Mac



"lSteph" a écrit dans le message de news:
%
Bonsoir Isabelle,

Il me semble que si la première cellule troisiéme plage
est plus à gauche que celle de la première
et la dernière de la seconde plage plus à droite que la troisième ...

En revanche je suis certain que l'on doit pouvoir simplifier ma
proposition.
Je voulais éviter ces boucles, un with peut-être?...

@+
lSteph

Sub testr()
Dim prmc, drmc
prmc = 256
drmc = 1
For Each c In Selection.Cells
prmc = WorksheetFunction.Min(prmc, c.Column)
drmc = WorksheetFunction.Max(drmc, c.Column)
Next
MsgBox prmc & ":" & drmc
End Sub

"isabelle" a écrit dans le message de news:
%
bonjour Mac,

oui pourquoi pas, y a plusieurs possibilité,

une autre serait,

prmC = Selection.Item(1).Column

isabelle


Isabelle,

dans l'idée de ton derC, pourquoi pas :
premC = Selection.Areas(1).column

Mac

"isabelle" a écrit dans le message de news:
uG%

ou bien pour une sélection non contigue,

prmC = Selection.CurrentRegion.Item(1).Column
derC =
Selection.Areas(Selection.Areas.Count)(Selection.Areas(Selection.Areas.Count).Count).Column

isabelle



Bonjour,

J'ai une sélection(range) et je veux savoir la colonne de gauche et
droite de la sélection.
Ex : Sélection de B2:E2 donc gauche = 2 et droite = 5

merci














Avatar
lSteph
Bonjour Isa et DarthMac, i tutti,

Oui, on peut toujours désactiver la m.a.j. ecran , screenupdating:úlse,
ce qui me turlupine c'est qu'il y a probablement un moyen
plus direct de désigner ces extrémités et d'effectuer la comparaison
sans être obligé de boucler toutes les cellules.

@+

lSteph



"DarthMac" a écrit dans le message de news:
u4xm$
ah... Steph,

elle me plait bien cette petite boucle là pourtant... mais bon je suppose
que ce qui te gêne c'est de balayer toutes les cellules dans le cas de
grosses sélections... me gouré-je ?

Mac



"lSteph" a écrit dans le message de news:
%
Bonsoir Isabelle,

Il me semble que si la première cellule troisiéme plage
est plus à gauche que celle de la première
et la dernière de la seconde plage plus à droite que la troisième ...

En revanche je suis certain que l'on doit pouvoir simplifier ma
proposition.
Je voulais éviter ces boucles, un with peut-être?...

@+
lSteph

Sub testr()
Dim prmc, drmc
prmc = 256
drmc = 1
For Each c In Selection.Cells
prmc = WorksheetFunction.Min(prmc, c.Column)
drmc = WorksheetFunction.Max(drmc, c.Column)
Next
MsgBox prmc & ":" & drmc
End Sub

"isabelle" a écrit dans le message de news:
%
bonjour Mac,

oui pourquoi pas, y a plusieurs possibilité,

une autre serait,

prmC = Selection.Item(1).Column

isabelle


Isabelle,

dans l'idée de ton derC, pourquoi pas :
premC = Selection.Areas(1).column

Mac

"isabelle" a écrit dans le message de news:
uG%

ou bien pour une sélection non contigue,

prmC = Selection.CurrentRegion.Item(1).Column
derC =
Selection.Areas(Selection.Areas.Count)(Selection.Areas(Selection.Areas.Count).Count).Column

isabelle



Bonjour,

J'ai une sélection(range) et je veux savoir la colonne de gauche et
droite de la sélection.
Ex : Sélection de B2:E2 donc gauche = 2 et droite = 5

merci


















Avatar
DarthMac
llo guys

peut-être un moyen de ne boucler que la première ligne de chaque plage...
j'y réfléchirai ;-)

Mac



"lSteph" a écrit dans le message de news:

Bonjour Isa et DarthMac, i tutti,

Oui, on peut toujours désactiver la m.a.j. ecran , screenupdating:úlse,
ce qui me turlupine c'est qu'il y a probablement un moyen
plus direct de désigner ces extrémités et d'effectuer la comparaison
sans être obligé de boucler toutes les cellules.

@+

lSteph



"DarthMac" a écrit dans le message de news:
u4xm$
ah... Steph,

elle me plait bien cette petite boucle là pourtant... mais bon je suppose
que ce qui te gêne c'est de balayer toutes les cellules dans le cas de
grosses sélections... me gouré-je ?

Mac



"lSteph" a écrit dans le message de news:
%
Bonsoir Isabelle,

Il me semble que si la première cellule troisiéme plage
est plus à gauche que celle de la première
et la dernière de la seconde plage plus à droite que la troisième ...

En revanche je suis certain que l'on doit pouvoir simplifier ma
proposition.
Je voulais éviter ces boucles, un with peut-être?...

@+
lSteph

Sub testr()
Dim prmc, drmc
prmc = 256
drmc = 1
For Each c In Selection.Cells
prmc = WorksheetFunction.Min(prmc, c.Column)
drmc = WorksheetFunction.Max(drmc, c.Column)
Next
MsgBox prmc & ":" & drmc
End Sub

"isabelle" a écrit dans le message de news:
%
bonjour Mac,

oui pourquoi pas, y a plusieurs possibilité,

une autre serait,

prmC = Selection.Item(1).Column

isabelle


Isabelle,

dans l'idée de ton derC, pourquoi pas :
premC = Selection.Areas(1).column

Mac

"isabelle" a écrit dans le message de news:
uG%

ou bien pour une sélection non contigue,

prmC = Selection.CurrentRegion.Item(1).Column
derC =
Selection.Areas(Selection.Areas.Count)(Selection.Areas(Selection.Areas.Count).Count).Column

isabelle



Bonjour,

J'ai une sélection(range) et je veux savoir la colonne de gauche et
droite de la sélection.
Ex : Sélection de B2:E2 donc gauche = 2 et droite = 5

merci






















Avatar
isabelle
bonjour lSteph et Mac,

je crois bien que celle ci est correct :

Cx = Selection.Find("*", , xlValues, , xlByColumns, xlPrevious).Column

isabelle

Bonjour Isa et DarthMac, i tutti,

Oui, on peut toujours désactiver la m.a.j. ecran , screenupdating:úlse,
ce qui me turlupine c'est qu'il y a probablement un moyen
plus direct de désigner ces extrémités et d'effectuer la comparaison
sans être obligé de boucler toutes les cellules.

@+

lSteph


Avatar
isabelle
oublier ça, ça ne marche pas :-(
isabelle


bonjour lSteph et Mac,

je crois bien que celle ci est correct :

Cx = Selection.Find("*", , xlValues, , xlByColumns, xlPrevious).Column

isabelle



Avatar
MichDenis
| je crois bien que celle ci est correct :

| Cx = Selection.Find("*", , xlValues, , xlByColumns, xlPrevious).Column

| isabelle

Puis-je me permettre Isabelle,
Selon le contenu de la plage des cellules, tu risques d'avoir des surprises avec le
paramètre XlValues

Imagine que la dernière colonne de l'application contient des formules renvoyant ""
comme dans =si(a1=5;"","ça marche") et bien ta ligne de code ne trouvera pas
la dernière colonne du tableau mais bien la dernière colonne affichant des "Valeurs"
Ce paramètre simple en apparence fout le bordel si on n'y pas gare... et comme
l'explication est insuffisante dans l'aide d'excel, J'ai commis un excellent article
sur le sujet (c'est le seul que je connaisse ;-)) ) disponible là :
http://xlwiki.free.fr/wiki/wakka.php?wiki=RechercheDate
Avatar
MichDenis
Tu peux m'expliquer ce que vous cherchez....
je n'ai pas vraiment saisi ..
est-ce tout siimplement la premère et la dernière colonne d'une plage ?




"isabelle" a écrit dans le message de news: %
oublier ça, ça ne marche pas :-(
isabelle


bonjour lSteph et Mac,

je crois bien que celle ci est correct :

Cx = Selection.Find("*", , xlValues, , xlByColumns, xlPrevious).Column

isabelle



Avatar
isabelle
Salut,


Tu peux m'expliquer ce que vous cherchez....
je n'ai pas vraiment saisi ..
est-ce tout siimplement la premère et la dernière colonne d'une plage ?


oui, la premère colonne d'une plage non adjacente,
qui fonctionnera peu importe l'ordre de sélection
par exemple les colonnes
EDF
EFD
et le tout sans boucle

merci pour ton aide,
isabelle

Avatar
lSteph
Bonjour les amis,

Oui! on cherche!.. par plage dans la selection
ceci devrait boucler bien moins de cellules :

Sub tttt()
Dim a As Range, prmc As Byte, drmc As Byte
Application.ScreenUpdating = False
prmc = 255
drmc = 1
For Each a In Selection.Areas
prmc = WorksheetFunction.Min(prmc, a.Cells(1).Column)
drmc = WorksheetFunction.Max(drmc, a.Cells(a.Cells.Count).Column)
Next
MsgBox prmc & ":" & drmc
End Sub

@+

lSteph

"isabelle" a écrit dans le message de news:
ez$
bonjour lSteph et Mac,

je crois bien que celle ci est correct :

Cx = Selection.Find("*", , xlValues, , xlByColumns, xlPrevious).Column

isabelle

Bonjour Isa et DarthMac, i tutti,

Oui, on peut toujours désactiver la m.a.j. ecran , screenupdating:úlse,
ce qui me turlupine c'est qu'il y a probablement un moyen
plus direct de désigner ces extrémités et d'effectuer la comparaison
sans être obligé de boucler toutes les cellules.

@+

lSteph




Avatar
isabelle
correction,
par exemple les colonnes
EGB
EBG

isabelle


Salut,


Tu peux m'expliquer ce que vous cherchez....
je n'ai pas vraiment saisi ..
est-ce tout siimplement la premère et la dernière colonne d'une plage ?



oui, la premère colonne d'une plage non adjacente,
qui fonctionnera peu importe l'ordre de sélection
par exemple les colonnes
EDF
EFD
et le tout sans boucle

merci pour ton aide,
isabelle



1 2