Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listebox choix par double clic d'une ligne et selection de la ligne choisit sur la feuille

6 réponses
Avatar
Alex
Bonjour =E0 tous,

J'ai un Userform ou l'on peut selectionner une ligne. Par double clic
sur la ligne choisit, je d=E9sirerai positionner ma cellule active sur
la colonne A de la ligne s=E9lectionn=E9e sur ma feuille, et j'ai =E9crit
ceci :

With Me.Selection
'Pour boucler sur chaque ligne s=E9lectionn=E9e du listbox
For A =3D 0 To .ListCount - 1
'Si la ligne selectionn=E9 dans la listbox correspond =E0 la ligne
teste alors positionne le curseur en colonne 1 de la ligne
s=E9lectionn=E9e
If .Selected(A) =3D True Then
Sheets("VC-VT").Range("A" & (A)).Select

'enlever la s=E9lection de cette ligne du listbox
.Selected(A) =3D False
End If
Next
End With

Malheureusement, sur ma feuille, il ne me selectionne pas la ligne qui
a =E9t=E9 selectionn=E9e via la listbox du userform.
Quelqu'un aurait il la solution =E0 mon probl=E8me ?
Merci par avance de votre aide.
Bien cordialement.
Alex

6 réponses

Avatar
DanielCo
Bonjour,
Peut-être :

Sheets("VC-VT").Select
Sheets("VC-VT").Range("A" & (A)).Select

au lieu de :

Sheets("VC-VT").Range("A" & (A)).Select

Daniel

Bonjour à tous,

J'ai un Userform ou l'on peut selectionner une ligne. Par double clic
sur la ligne choisit, je désirerai positionner ma cellule active sur
la colonne A de la ligne sélectionnée sur ma feuille, et j'ai écrit
ceci :

With Me.Selection
'Pour boucler sur chaque ligne sélectionnée du listbox
For A = 0 To .ListCount - 1
'Si la ligne selectionné dans la listbox correspond à la ligne
teste alors positionne le curseur en colonne 1 de la ligne
sélectionnée
If .Selected(A) = True Then
Sheets("VC-VT").Range("A" & (A)).Select

'enlever la sélection de cette ligne du listbox
.Selected(A) = False
End If
Next
End With

Malheureusement, sur ma feuille, il ne me selectionne pas la ligne qui
a été selectionnée via la listbox du userform.
Quelqu'un aurait il la solution à mon problème ?
Merci par avance de votre aide.
Bien cordialement.
Alex
Avatar
Alex
Super merci
Je venais justement de trouver la solution et j'ai ecrit ceci :
Sheets("VC-VT").Cells(A + 1, 1).Select

Je viens de m'appercevoir d'un autre problème, mais cette fois ci avec
l'activation de ma listebox dans mon userform, il ne me prend pas
toutes les lignes de ma base de données. Et je ne vois pas à quoi cela
est du, Est ce à un parametre de la propriété de ma listebox ou est c e
lié à ce que j'ai écrit :
rivate Sub UserForm_Activate()

Dim DerLig As Long
'Feuil1 n'est pas le nom de l'onglet mais de la propriété NAME
'de la feuille visible seulement dans la fenêtre de l'éditeur de code.
With Feuil14
'si aucune donnée dans la feuille, sortie de la procédure.
If IsEmpty(.UsedRange) Then Exit Sub
'Trouver la dernière ligne où il y a des données
'dans les colonnes A:BB
DerLig = .Range("A:BB").Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
'Comme les données débutent en ligne 2, derlig ne peut pas être plus
petit que 2
If DerLig < 2 Then DerLig = 2
'Affectation de la plage de cellules à une variable objet Range
Set Rg = .Range("A2:BB" & DerLig)
End With
With Me.Selectionvente
' Nombre des colonnes du tableau ou plage de données
.ColumnCount = Rg.Columns.Count
'largeur des colonnes dans le listbox
.ColumnWidths = "40;0;0;0;0;250;60;15;15;15;15;15;15;15;15;170;170"
'Remplir le listbox avec les données du tableau
.List = Rg.Value
'S'assure qu'aucune ligne de listbox n'est sélectionnée.
.ListIndex = -1
End With
End Sub

Merci par avance de votre aide.
Alex
Avatar
Alex
Merci de ne pas tenir compte du message ci-dessus. En fait j'avait
juste fait une erreur sur le N°de la feuille dans mon With Feuil14.
Avec mes excuses
Néanmoins, j'ai une autre question, pour revenir à ma question
initiale à savoir ma selection avec la ligne suivante :
Sheets("VC-VT").Cells(A + 1, 1).Select
j'ai du la corriger comme cela :
Sheets("VC-VT").Cells(A + 2, 1).Select

J'ai du mettre un 2 pour le A+1 sinon il sélectionnait la ligne au
dessus. Pourquoi 2 et non pas 1, Est ce à cause derlig < 2 dans mon
userform activate ?

Merci par avance de votre réponse.

Cordialement.
Avatar
michdenis
Bonjour,

| Sheets("VC-VT").Range("A" & (A)).Select

Ta boucle débute par A = 0
For A = 0 To .ListCount - 1

il n'y a aucune Feuille dans Excel où la première ligne
est 0, le décompte débute par 1. Encore faut-il que ce
soit la bonne feuille qui soit active sans quoi, il est
impossible de faire un "Select" sur une cellule si cette
feuille n'est pas la la feuille active (select).


MichD
--------------------------------------------
Avatar
Alex
Bonjour Michel,

Merci pour ta réponse.
Je comprends bien celle-ci, mais peut m'expliquer malgré tout pourquoi
je dois mettre +1 si je corrige le 0 en 1. Pourquoi le +1 Serait ce à
cause de la ligne de titre ?
Merci encore.
Cordialement
Avatar
michdenis
L'index du premier item dans un combobox ou un listbox est 0 (zéro)
la première ligne d'une feuille de calcul est 1
si on veut transférer à l'aide d'une même variable dans d'une routine
un élément d'un listbox vers une cellule, on doit tenir compte de ce
décalage de 1.

MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonjour Michel,

Merci pour ta réponse.
Je comprends bien celle-ci, mais peut m'expliquer malgré tout pourquoi
je dois mettre +1 si je corrige le 0 en 1. Pourquoi le +1 Serait ce à
cause de la ligne de titre ?
Merci encore.
Cordialement