Sélectionner une plage variable sous condition en VBA

BChaly

XLDnaute Occasionnel
Bonjour à tous,

Je souhaite sélectionner une plage qui aura un nombre de lignes variables à condition qu'une valeur "X" se trouve dans la colonne "B" (en dehors la plage à sélectionner).

La valeur "X" (dans la Colonne B) ne sera pas pas toujours sur la même ligne.

La plage à sélectionner aura un nombre de lignes variables.

Par contre le nombre de lignes entre la valeur "X" et la plage à selectionner sera toujours identique.

La cellule active de la plage sélectionnée, doit se trouver sur la première ligne de la sélection dans la deuxième colonne. (en "E5" dans mon exemple).

Y-a-t-il une possibilité d'améliorer la macro que j'ai réalisée?

Cordialement,

BChaly
 

Pièces jointes

  • TestSelection.xls
    24.5 KB · Affichages: 147

Papou-net

XLDnaute Barbatruc
Re : Sélectionner une plage variable sous condition en VBA

Bonjour BChaly,

Modifie ton code comme suit :

Code:
Sub SelectCell()
Dim cell As Range

For Each cell In Range("B1:B" & Range("B65536").End(xlUp).Row)
  If cell.Value = "X" Then cell.Offset(3, 2).CurrentRegion.Select
  Selection.Range("B1").Activate
Next
End Sub


Cordialement.
 

Gorfael

XLDnaute Barbatruc
Re : Sélectionner une plage variable sous condition en VBA

Salut BChaly, Papou-net et le forum
Code:
Sub SelectCell()
Dim cell As Range

For Each cell In Range("B1:B" & Range("B65536").End(xlUp).Row)
  If cell.Value = "X" Then cell.Offset(3, 2).CurrentRegion.Select
  Selection.Range("B1").Activate
Next
End Sub
Comme j'aime bien critiquer :p
Range("B65536").End(xlUp).Row => Ça suppose une macro qui ne sera jamais utilisable sur des version supérieures à 2003, limitée à65536 lignes

For Each cell => 2 remarques :
1 - il n'y a pas plus d'un x en B, sinon seul le dernier est concerné.
2 - si on a la réponse ne ligne 2, pourquoi ne pas finir la boucle dès qu'on a trouvé la solution ?

CurrentRegion => si le tableau commence à X-500 et finit à X+500, ton résultat ne sera pas forcément celui escompté...

On utilise Select et Activate => Personnellement, je trouve ça peu fiable en VBA (et long). Mais comme il n'y a d'autre but que la sélection, je ne peux rien proposer de concret.
Y-a-t-il une possibilité d'améliorer la macro que j'ai réalisée?
On a un extrait de quelque chose dont on ne sait rien à améliorer... Je trouve que c'est un exercice extrêmement difficile. Ça me fait penser à : Quelle différence y a-t-il entre un canard ?
A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87