Problème insertion variable dans un range VBA

Bonjour à tous

J'ai un soucis sur ce programme (source :https://www.excel-pratique.com/fr/vba/variables.php) :

Sub variables()

With Range("A1:C10,E5:F5")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
End With

Range("A1") = "nom"
Range("B1") = "prenom"
Range("C1") = "age"

num_choix = Range("F5").Value

nom = Sheets(3).Cells(num_choix, 1)
prenom = Sheets(3).Cells(num_choix, 2)
age = Sheets(3).Cells(num_choix, 3)

' la ligne ci dessous est mon problème
Rows(num_choix).Select

MsgBox nom & " " & prenom & ", " & age & "ans"

End Sub

Je désire, en fonction de la valeur inscrite dans ma case F5 ( donc j'ai déclaré la variable "num_choix" ayant pour valeur le contenu de F5), sélectionner la ligne correspondante mais pas toute la ligne, juste les trois 1ères colonnes de la ligne en question.

Je voulais faire : range("A & num_choix : C & num_choix") qui correspondrai avec F5= 3 à : range("A3:C3") .

Avez vous une solution s'il vous plais? Merci d'avance les amis

nb : voici une capture du "problème" :

test selection

Insère ces 2 lignes après avoir déclaré num_choix

Range("A" & num_choix).Select
Range(ActiveCell, ActiveCell.Offset(, 2)).Select

Ouaou merci beaucoup Game Over, ça marche parfaitement !!!!!

Il est donc impossible de tout faire dans un seul range... dommage.

Merci encore pour ton aide précieuse

ced_le_dingue a écrit :

Il est donc impossible de tout faire dans un seul range... dommage.

si, comme ça :

Range(("A" & num_choix), Range("A" & num_choix).Offset(, 2)).Select

mais, à mon avis, c'est moins lisible.

lol ok, tu as raison, c'est moins clair sur une seule ligne.

Merci à toi

Bonjour,

Une autre astuce qui peut s'avérer intéressante

Range("A" & num_choix).resize(,3).Select

A+

frangy a écrit :

Bonjour,

Une autre astuce qui peut s'avérer intéressante

Range("A" & num_choix).resize(,3).Select

A+

Merci pour tes tuyaux, frangy, je ne connaissais pas cette astuce, pas plus que celle-ci qui permet de délimiter immédiatement une zone plutôt que de passer par une boucle comme je faisais.

        DerLig = .Cells(LigneDeb, ColDeb).SpecialCells(xlCellTypeLastCell).Row
        DerCol = .Cells(LigneDeb, ColDeb).SpecialCells(xlCellTypeLastCell).Column

ohhh super cool frangy , c'est génial aussi!! je connaissais pas resize. merci merci merci

oua...ça a l'air complexe...je crois que j'arriverai jamais à retenir toutes les possibilités que l'on a en vba

Rechercher des sujets similaires à "probleme insertion variable range vba"