XL 2010 Sélectionner une cellule d'une plage

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai une plage de cellules : [C25,I25,C30,I30]
Je voudrais sélectionner, par exemple, la 3ème cellule.
J'ai tenté ceci sans succès :
[C25,I25,C30,I30].Item(3).Select

Comment s'y prendre ?

Merci d'avance pour toute réponse.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir Magic_Doctor,

avec ceci ?: Range(Split([C25,I25,C30,I30].Address, ",")(2)).Select

Ne fonctionne qu'avec des cellules individuelles au sein de [,,,]. Si vous avez une ou des plages au sein de [,,,], la notion de Nième élément ne signifie plus rien ; une plage pouvant être parcourant de plusieurs manières (par lignes ou par colonnes).
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Mon excel 2010 semble parcourir les plages par ligne par ligne (mais je ne mettrai pas main au feu). Dans ce cas, et avec règle (non confirmée ?) , on pourrait utiliser la petite macro du fichier joint:
Code:
Sub test1()
Dim xcell As Range, n&, Nieme&

   Nieme = Int(Application.InputBox("Entrez un rang de cellule SVP", Type:=1))
   For Each xcell In [a1:d2,a7:b16,f4,e7,b4,d9].Cells
      n = n + 1
      If n = Nieme Then
         xcell.Select
         Exit Sub
      End If
   Next xcell
End Sub
 

Pièces jointes

  • Mgic_Doctor- Nème cellule- v1.xlsm
    15 KB · Affichages: 24

belkacem_64

XLDnaute Junior
voila une autre solution
Supposons que la table contient des cellules : C25:I30

Sub test2()

Dim Rng As Range
Set Rng = Range("C25:I30")
iRow = InputBox("Entrez le numéro de Row SVP", "rows")
iCol = InputBox("Entrez le numéro de Column SVP", "Column")
Range(Rng.Address).Cells(Val(iRow), Val(iCol)).Select


End Sub
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Ecrit comme cela, on obtient C27 comme 3ième cellule
VB:
Sub Macro1()
MsgBox [C25,I25,C30,I30].Address
'ligne pour test
MsgBox [C25,I25,C30,I30].Areas.Count
'3ième cellule= C27
'lignes pour tests
MsgBox [C25,I25,C30,I30].Areas(1).Item(3).Address
MsgBox [C25,I25,C30,I30].Areas(2).Item(3).Address
End Sub
 

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Merci belkacem_64 & Yurperqod pour vos réponses.
Jusqu'à présent, la solution qui satisfait le mieux à ce que je voulais est celle du post #2 de mapomme.

Je poursuis ce fil en posant la question suivante :
toujours avec la même plage de cellule, comment sélectionner toutes les cellules de la plage, sauf celle qui correspond au paramétrage.
Dans la solution de mapomme :
Range(Split([C25,I25,C30,I30].Address, ",")(2)).Select
c'est la 3ème cellule qui est sélectionnée.
Comment faire pour que ce soit maintenant l'inverse, autrement dit que les cellules "C25", "I25" & "I30" soient sélectionnées ?
 
Dernière édition:

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Avec ce que j'ai compris
VB:
Sub Macro2()
Dim P As Range
Set P = [C25,I25,C30,I30]
'test
MsgBox Union(P.Item(1, 1), P.Item(1, 7), P.Item(6, 7)).Address
Union(P.Item(1, 1), P.Item(1, 7), P.Item(6, 7)).Select
'test adresse des cellules de la selection
MsgBox Selection.Address
End Sub
 

job75

XLDnaute Barbatruc
Bonjour à tous,
Comment faire pour que ce soit maintenant l'inverse, autrement dit que les cellules "C25", "I25" & "I30" soient sélectionnées ?
Code:
Dim exclu&, a, i&, s As Range
exclu = 3 'modifiable
a = Split([C25,I25,C30,I30].Address, ",")
For i = 0 To UBound(a)
  If i <> exclu - 1 Then Set s = Union(IIf(s Is Nothing, Range(a(i)), s), Range(a(i)))
Next
s.Select
A+
 

job75

XLDnaute Barbatruc
Re,

Il faut savoir que quand on détermine une plage multiple par Range(texte) le nombre de caractères de texte est limité (à 255 ou 256) [Edit] 255 je viens de vérifier.

Si donc le nombre de caractères n'est pas trop élevé on peut utiliser :
Code:
Dim exclu&, a, i&, t$
exclu = 3 'modifiable
a = Split([C25,I25,C30,I30].Address, ",")
For i = 0 To UBound(a)
  If i <> exclu - 1 Then t = t & "," & a(i)
Next
Range(Mid(t, 2)).Select
A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 020
Messages
2 094 432
Membres
106 024
dernier inscrit
Imado