Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA: sélectionner plage selon colonne

Viro_Major

XLDnaute Nouveau
Re,

je sais produire certaines choses mais parfois il me manque les variantes de syntaxe

Mon objectif

Sur changement de valeur au sein d’une plage C3:Z20, admettons que je sois placée en F7, je souhaite que ça sélectionne F3:F20, et ainsi de suite, si je change de valeur en P13, je veux P340 sélectionner

Je vous remercie d’avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Viro_Major, bonjour le forum,

Essaie cette événementielle Change à placer dans l'onglet concerné :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim COL As Byte 'déclare la variable COL (COLonne)

If Application.Intersect(Target, Range("C3:Z20")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage C3:Z20, sort de la procédure
COL = Target.Column 'définit la colonne COL
Range(Cells(3, COL), Cells(20, COL)).Select 'sélectionne la plage
End Sub
 

Viro_Major

XLDnaute Nouveau
Bonjour et merci Robert ! Je m’empresse de tester celà

et sinon, autre requêre similaire, je cherche à me caler sur cellule Z de la prochaine ligne
cette écriture est elle juste ?

If .Cells(25, .Offset(1, 0)) = "" Then [Z5].Select
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Heu... Pourquoi un If ?
Tu veux faire ça quand ?... Si tu le fais au changement, rajoute au code précédent :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim COL As Byte 'déclare la variable COL (COLonne)

If Application.Intersect(Target, Range("C3:Z20")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage C3:Z20, sort de la procédure
COL = Target.Column 'définit la colonne COL
Range(Cells(3, COL), Cells(20, COL)).Select 'sélectionne la plage
Cells(20,COL).Activate '<== ici
End Sub
 

Viro_Major

XLDnaute Nouveau
Re,

Sinon, mais je suis pas sûr d'avoir bien compris :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Cells(ActiveCell.Row, "Z").Select
End Sub

Ok merci, donc je transpose ta proposition pour satisfaire mon besoin

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(ActiveCell.Row + 1, "Z").Value = “” Then [Z5].Select
End Sub

Y’a bon banania ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Alors :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
if Cells(ActiveCell.Row, "Z").value <> "" then Cells(ActiveCell.Row, "Z").Select
End Sub

[Edition]
Nos post se sont croisés et j'ai mis <> au lieu de = mais c'est bien ça...
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…