listbox avec choix multiple alimentation base de données

Le
Alex
Bonjour à tous,

Je rencontre un problème :

Dans un userform, j'ai une listbox affichant 9 colonnes de ma BDD
"GLC" .
La personne peut sélectionner plusieurs lignes dans le textbox, et à
l'aide d'un bouton Validation sur le même userform, je voudrais pour
les lignes sélectionnées dans le textbox, se mettent sur la colonne J
des mêmes lignes sélectionnés la valeur "OK" sur ma feuille "GLC",
mais je n'arrive pas à y parvenir. Quelqu'un aurait il la solution à
mon problème.
Merci par avance de votre aide.
Alex

Mes lignes de commandes de mon Userform sont :

Pour l'activation du UserformForm faisant apparaitre 9 colonnes de ma
feuille "GLC" :
'(ListeBoite = Listbox)


Private Sub UserForm_Activate()
With ListeBoite .ColumnCount = 9
.ColumnWidths = ("30;372;55;30;40;40;40;40;40")
.RowSource = Sheets("GLC").Range("B2:J" & _
Sheets("GLC").Range("B2").End(xlDown).Row).Address
End With
End Sub

Est ce que cela vous parait correcte ?

Pour mon bouton Validation :

Private Sub BtnValid_Click()
'Verification de selection Correcte ou pas ???
With ListeBoite
nbboite = .ListCount - 1
For i = 0 To nbboite
If .Selected(i) = True Then
nbboiteselect = nbboite + 1
End If
Next
End With
If nbboiteselect = 0 Then
MsgBox "Veuillez sélectionner au moins une boite, SVP", vbExclamation,
"Instruction"
Exit Sub
End If
'Si au moins une ligne selectionnée alors en J de la ligne
sélectionnée = OK
With ListeBoite
nbboite = .ListCount - 1
For i = 0 To nbboite
If .Selected(i) = True Then
Sheets("GLC").Select
Range("j" & i).Value = "OK"
'.Selected(i) = False
End If
Next
End With
End Sub

Cela coince sur Range("j" & i).Value = "OK"

Mais peut être qu'il n'est pas possible de faire cela !!!

Merci par avance de votre aide.
Cordialement
Alex
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alex
Le #22750001
il faut lire listbox et non textbox
Avec mes excuses
Cdt.
Alex
michdenis
Le #22750771
Bonjour,

Cela pourrait t'inspirer, un vieux classeur as titre d'exemple : http://cjoint.com/?0lcsYruCbKX


MichD
--------------------------------------------


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


il faut lire listbox et non textbox
Avec mes excuses
Cdt.
Alex
Alex
Le #22752601
Bonjour Michel,

Merci pour ta réponse, j'ai plusieurs questions, car je n'arrive pas à
tout comprendre avec toutes ces variables :

Tout d'abord, à quoi sert Option Explicit tout en haut des lignes de
macros ?

Dim Tblo () est une variable sans as, c'est la première fois que je
vois ce type de variable, si j'ai bien compris à la lecture complete
de la macro, il s'agit d'une mise en memoire des données ?

Dim A est le nombre de ligne(s) selectionnée(s) dans la listbox ?
Dim T est le compte de ligne A ?
Dim G est le nombre de colonne(s) ?
Dim B ? je comprends pas ce qu'il représente

Et enfin, la ligne de commande suivante :
Sheets("liste2").Range(Cells(5, 3), Cells(5 + UBound(Tblo, 1) - 1, 3 +
NbCol - 1)) = Tblo
remet les données selectionnées sur la feuille à partir de la cellul e
C5, or je voulais faire ajouté en colonne J de ma feuille et des
lignes équivalentes de ma sélection dans la listbox la valeur OK.
Avec ce que j'avais écrit selon ou était placé mon curseur le ok se
mettait un peu n'importe ou.

Merci par avance de ton aide.
Bien cordialement.
Alex
michdenis
Le #22753501
| à quoi sert Option Explicit

*** Cela force l'usager à déclarer toutes les variables utilisées dans
le module. Cela aide... si le programmeur fait une faute d'orthographe
en utilisant le nom d'une variable, il aura un rappel d'Excel !
*** Tu peux l'enlever si tu désires, ça n'empêche pas le déroulement
de la procédure.

| Dim Tblo () est une variable sans as,

*** C'est une variable un peu spéciale, puisque c'est une variable
contenant un tableau (array) . Dans Excel on utilise habituellement
des tableaux d’une ou 2 dimensions.
Si le type n'est pas déclaré (as ...) le tableau est de type Variant,
il peut contenir ce que tu désires... il n'est pas interdit de définir
le type Tblo() As String ou As Double Ou encore As Date
Si tu définis le type, tu dois t'assurer que toutes les données que tu
mettras dans le tableau correspondent au type que tu as définies
sinon tu auras une erreur 13 (Mismatch)

*** pour ce qui est de la suite, comme le code dans l'exemple est déjà
noté à chaque ligne, ta difficulté provient essentiellement de la notion
de Tableau (array). Je ne peux pas faire ici, le résumé d'un chapitre
complet d'un volume.


MichD
--------------------------------------------


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


Bonjour Michel,

Merci pour ta réponse, j'ai plusieurs questions, car je n'arrive pas à
tout comprendre avec toutes ces variables :

Tout d'abord, à quoi sert Option Explicit tout en haut des lignes de
macros ?

Dim Tblo () est une variable sans as, c'est la première fois que je
vois ce type de variable, si j'ai bien compris à la lecture complete
de la macro, il s'agit d'une mise en memoire des données ?

Dim A est le nombre de ligne(s) selectionnée(s) dans la listbox ?
Dim T est le compte de ligne A ?
Dim G est le nombre de colonne(s) ?
Dim B ? je comprends pas ce qu'il représente

Et enfin, la ligne de commande suivante :
Sheets("liste2").Range(Cells(5, 3), Cells(5 + UBound(Tblo, 1) - 1, 3 +
NbCol - 1)) = Tblo
remet les données selectionnées sur la feuille à partir de la cellule
C5, or je voulais faire ajouté en colonne J de ma feuille et des
lignes équivalentes de ma sélection dans la listbox la valeur OK.
Avec ce que j'avais écrit selon ou était placé mon curseur le ok se
mettait un peu n'importe ou.

Merci par avance de ton aide.
Bien cordialement.
Alex
Alex
Le #22753581
Merci pour ces précisions.

L'exemple donné semble en faite retenir les données des chaques
"Cellule" des selections dans la listbox.

Je pense que pour ce que je veux faire, il faut que cela retienne
juste les numéros de lignes correspondant à la sélection afin que je
puisse mettre la valeur ok en colonne J de la feuille qui sert aussi à
l'alimentatin de la listbox.

En fait je voulais que les personnes selectionnent via une listbox les
lignes qui les interessent et avoir la valeur OK en colonne J sur le
slignes selectionnées dans la listbox.

Exemple :

Selection de la ligne 1 dans la listbox alors se met en ligne 1 de la
base la valeur OK en J

Merci par avance de votre aide si cela est réalisable
Cordialement
Alex
michdenis
Le #22754021
Fichier Exemple : http://cjoint.com/?0ldol6NfN7c
(sans la notion de tableau)


MichD
--------------------------------------------


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


Merci pour ces précisions.

L'exemple donné semble en faite retenir les données des chaques
"Cellule" des selections dans la listbox.

Je pense que pour ce que je veux faire, il faut que cela retienne
juste les numéros de lignes correspondant à la sélection afin que je
puisse mettre la valeur ok en colonne J de la feuille qui sert aussi à
l'alimentatin de la listbox.

En fait je voulais que les personnes selectionnent via une listbox les
lignes qui les interessent et avoir la valeur OK en colonne J sur le
slignes selectionnées dans la listbox.

Exemple :

Selection de la ligne 1 dans la listbox alors se met en ligne 1 de la
base la valeur OK en J

Merci par avance de votre aide si cela est réalisable
Cordialement
Alex
michdenis
Le #22754011
J'ai omis le "+1" dans la ligne de code suivante de la procédure

'le 10 représente 10 colonnes à droite de la colonne A
Rg.Item(A + 1, 1).Offset(, 10) = "Ok" <<<=====
Alex
Le #22754601
Merci beaucoup Michel
Je suis en train d'adapter par rapport à mon fichier, mais cette fois
ci cela me parait tres bien
Alex
Mgr T. Plubanni
Le #22756211
heu...et peut-être aussi dans celle-ci de ligne :

With Feuil1
'copie de la ligne du listbox sélectionnée en colonne G
Rg(A + 1, 1).Resize(, Rg.Columns.Count).Copy .Range("G" &
.Range("G65536").End(xlUp).Row + 1)
End With

pardonnez-moi, mon cher michel, de ne pas avoir accepté de voir mes prénom
et nom mêlés à une proc qui fleure bon l'amateurisme.....

Mgr T. P.

"michdenis" iarnhv$tjs$
J'ai omis le "+1" dans la ligne de code suivante de la procédure

'le 10 représente 10 colonnes à droite de la colonne A
Rg.Item(A + 1, 1).Offset(, 10) = "Ok" <<<==== >




Mgr T. Plubanni
Le #22756201
ah bon....

T. P.

"Alex"
Merci beaucoup Michel
Je suis en train d'adapter par rapport à mon fichier, mais cette fois
ci cela me parait tres bien
Alex
Publicité
Poster une réponse
Anonyme