Recherche dans une listbox avec colonnes
Résolu/Fermé
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
-
Modifié par DGVDR le 19/12/2013 à 11:26
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 27 déc. 2013 à 10:53
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 27 déc. 2013 à 10:53
A voir également:
- Recherche dans une listbox avec colonnes
- Recherche musique - Guide
- Déplacer une colonne excel - Guide
- Google recherche par image - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Word colonnes indépendantes - Guide
8 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
19 déc. 2013 à 11:41
19 déc. 2013 à 11:41
Bonjour,
Pour extraire la valeur contenue dans la première colonne d'une listbox multi de la ligne sélectionnée :
Pour extraire la valeur contenue dans la première colonne d'une listbox multi de la ligne sélectionnée :
If ListBox1.ListIndex = -1 Then Exit Sub MsgBox ListBox1.List(ListBox1.ListIndex)
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
19 déc. 2013 à 16:20
19 déc. 2013 à 16:20
Merci pijaku,
Je regarde ça des que possible !
DGVDR
Je regarde ça des que possible !
DGVDR
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
20 déc. 2013 à 11:31
20 déc. 2013 à 11:31
Bonjour,
Peux tu m'expliquer ton code ?
Le "1" tout à la fin est une erreur ?
Avec ce code, en fonction de ma selection dans la listbox,je ne vois pas comment extraire dans ma donnée codification la valeur de la première colonne. Peux tu m'expliquer ?
Merci,
DGVDR
Peux tu m'expliquer ton code ?
If ListBox1.ListIndex = -1 Then Exit Sub
MsgBox ListBox1.List(ListBox1.ListIndex)1
Le "1" tout à la fin est une erreur ?
Avec ce code, en fonction de ma selection dans la listbox,je ne vois pas comment extraire dans ma donnée codification la valeur de la première colonne. Peux tu m'expliquer ?
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
20 déc. 2013 à 11:49
20 déc. 2013 à 11:49
Salut,
Le 1 est une erreur, d'ailleurs il ne figure pas dans le code que je t'ai donné plus haut...
Listbox1.ListIndex représente l'index de la ligne de la listbox1 qui est sélectionné.
Lorsque rien n'est sélectionné, Listbox1.ListIndex vaut - 1.
Si tu sélectionne la 1ère ligne Listbox1.ListIndex vaut 0
etc etc...
Listbox1.List(Listbox1.ListIndex) renvoie la valeur correspondante à Listbox1.ListIndex, donc à la valeur sélectionnée dans la listbox.
Cependant, ListBox1.List(ListBox1.ListIndex) renvoie une erreur si rien n'est sélectionné... D'où le :
If ListBox1.ListIndex = -1 Then Exit Sub
Je ne vois pas comment extraire dans ma donnée codification la valeur de la première colonne
Qu'entends tu par 1ère colonne???
1ère colonne de ta Listbox?
1ère colonne de ta feuille "Feuil3"?
Autre 1ère colonne?
Le 1 est une erreur, d'ailleurs il ne figure pas dans le code que je t'ai donné plus haut...
Listbox1.ListIndex représente l'index de la ligne de la listbox1 qui est sélectionné.
Lorsque rien n'est sélectionné, Listbox1.ListIndex vaut - 1.
Si tu sélectionne la 1ère ligne Listbox1.ListIndex vaut 0
etc etc...
Listbox1.List(Listbox1.ListIndex) renvoie la valeur correspondante à Listbox1.ListIndex, donc à la valeur sélectionnée dans la listbox.
Cependant, ListBox1.List(ListBox1.ListIndex) renvoie une erreur si rien n'est sélectionné... D'où le :
If ListBox1.ListIndex = -1 Then Exit Sub
Je ne vois pas comment extraire dans ma donnée codification la valeur de la première colonne
Qu'entends tu par 1ère colonne???
1ère colonne de ta Listbox?
1ère colonne de ta feuille "Feuil3"?
Autre 1ère colonne?
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
20 déc. 2013 à 15:38
20 déc. 2013 à 15:38
La 1ère colonne de ma Listbox !
Merci,
DGVDR
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 20/12/2013 à 16:19
Modifié par pijaku le 20/12/2013 à 16:19
Le code pour retourner la valeur contenue dans la ligne sélectionnée de :
La 1ère colonne de la ListBox1 :
La deuxième colonne de la ListBox1 :
La troisième colonne de la ListBox1 :
Etc...
La 1ère colonne de la ListBox1 :
If listBox1.listIndex = -1 Then Exit Sub MsgBox ListBox1.List(ListBox1.ListIndex)
La deuxième colonne de la ListBox1 :
ListBox1.List(ListBox1.ListIndex, 1)
La troisième colonne de la ListBox1 :
ListBox1.List(ListBox1.ListIndex, 2)
Etc...
Bonjour,
Ca ne semble pas correct.
Des idées de correction ?
Merci,
DGVDR
Codification = Sheets("Stock").Columns(1).Cells.Find(ListBox1.List(ListBox1.ListIndex).Value, LookAt:=xlWhole).Offset(0, -1).Value
Ca ne semble pas correct.
Des idées de correction ?
Merci,
DGVDR
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 26/12/2013 à 09:04
Modifié par pijaku le 26/12/2013 à 09:04
Bonjour,
Essaie ceci :
<italique>Cordialement,
Franck
Essaie ceci :
Codification = Sheets("Stock").Columns(1).Cells.Find(ListBox1.List(ListBox1.ListIndex), LookAt:=xlWhole).Offset(0, 1).Value
<italique>Cordialement,
Franck
'Pensez aux balises de code : bouton <>, 'Précisez le langage dans la liste déroulante. Ex : code java
Bonjour,
J'espère que vous avez passé de bonnes fêtes,
La ligne de code ne convient pas :
"Erreur d'execution "424" Objet requis"
Merci,
DGVDR
J'espère que vous avez passé de bonnes fêtes,
La ligne de code ne convient pas :
"Erreur d'execution "424" Objet requis"
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
26 déc. 2013 à 11:46
26 déc. 2013 à 11:46
Sans le fichier, ni boule de cristal, ça va devenir hard de t'aider...
Bonjour,
Cjoin marche de nouveau :
http://cjoint.com/?3LBiU5vtkqQ
Le code pour accéder au VBA est "unzo"
Le code mentionné ci-dessus ce trouve dans l'Userform "gestionstock"
Merci,
DGVDR
Cjoin marche de nouveau :
http://cjoint.com/?3LBiU5vtkqQ
Le code pour accéder au VBA est "unzo"
Le code mentionné ci-dessus ce trouve dans l'Userform "gestionstock"
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 27/12/2013 à 09:44
Modifié par pijaku le 27/12/2013 à 09:44
Bonjour,
J'ai regardé le fichier proposé. Le code est bon. Il s'agit maintenant de savoir l'adapter...
1ère Erreur
Je vais t'expliquer la méthode find utilisée ici, tu va l'adapter à ton cas. En cas de difficulté, je suis dispo...
Méthode Find = Je cherche
Quoi?
Ou?
Qu'elle valeur renvoyer?
2ème Erreur
Qu'est ce que Codification?
une variable.
Que va t-elle être amenée à stocker?
Une chaîne de caractère? Un nombre? Un Objet?
Dans ton cas, une chaine de caractères. Donc ...
déclare la As String, pas As Integer...
J'ai regardé le fichier proposé. Le code est bon. Il s'agit maintenant de savoir l'adapter...
1ère Erreur
Je vais t'expliquer la méthode find utilisée ici, tu va l'adapter à ton cas. En cas de difficulté, je suis dispo...
Codification = Sheets("Stock").Columns(1).Cells.Find(PlagePièces.List(PlagePièces.ListIndex), LookAt:=xlWhole).Offset(0, 1).Value
Méthode Find = Je cherche
Quoi?
PlagePièces.List(PlagePièces.ListIndex)= Le contenu de la 1ère colonne de la ligne sélectionnée dans la listbox appelée PlagePièces.
Ou?
Sheets("Stock").Columns(1).Cells= Dans les cellules de la colonne 1 de la feuille Stock.
Est ce vraiment là que se trouvent tes pièces?perso, je les vois plus en colonne 2...
Qu'elle valeur renvoyer?
.Offset(0, 1).ValueLe contenu de la cellule à DROITE de la cellule trouvée. (Idem, ce n'est pas ce que tu veux).
LookAt:=xlWholeEst un paramètre facultatif. Il indique que tu cherches la valeur exacte. Dans ton cas, il n'est pas primordial.
2ème Erreur
Qu'est ce que Codification?
une variable.
Que va t-elle être amenée à stocker?
Une chaîne de caractère? Un nombre? Un Objet?
Dans ton cas, une chaine de caractères. Donc ...
déclare la As String, pas As Integer...
Dim Codification As String
Bonjour Pijaku,
J'apprécis énormément la pédagogie que tu apportes, merci beaucoup.
J'ai donc travailler dessus et ça donne :
Cependant je ne retrouve pas mes infos dans la feuille "Commandes"
Peux-tu m'éclairer de nouveau ?
J'apprécis énormément la pédagogie que tu apportes, merci beaucoup.
J'ai donc travailler dessus et ça donne :
Private Sub Commander_Click()
Dim i As Integer, j As Byte, rngTrouve As Range
Dim Codification As String
If PlagePièces.ListIndex = -1 Then Exit Sub
i = 2
Codification = Sheets("Stock").Columns(2).Cells.Find(PlagePièces.List(PlagePièces.ListIndex)).Value
Do While Sheets("Stock").Cells(i, 2) <> ""
If Left(Sheets("Stock").Cells(i, 2), 8) = Codification Then 'si les 8 premiers caractères du code pièce correspondent à la codification
Pièce = Sheets("Stock").Cells(i, 2)
Fourn = Sheets("Stock").Cells(i, 5)
With Sheets("Commandes")
j = .Range("A65536").End(xlUp).Row
.Range("A" & j) = Pièce
.Range("D" & j) = Fourn
End With
End If
i = i + 1 'on passe à la ligne suivante
Loop
End Sub
Cependant je ne retrouve pas mes infos dans la feuille "Commandes"
Peux-tu m'éclairer de nouveau ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 27/12/2013 à 10:35
Modifié par pijaku le 27/12/2013 à 10:35
Et pourtant elles y sont...
Regarde ta 1ère ligne (ligne d'entête)...
En fait,
Ensuite, je ne comprends pas bien tout le reste de ta macro... La boucle est inutile...
En gros, tu cherches, dans ta feuille Stock, la pièce sélectionnée dans la listbox. Une fois trouvée cette pièce, tu cherches le fournisseur.
Ce code devrait suffire :
A moins que je n'ai pas tout compris...
Regarde ta 1ère ligne (ligne d'entête)...
En fait,
j = .Range("A65536").End(xlUp).Rowte donne le numéro de la dernière ligne non vide. Pour la 1ère ligne vide, ajoute 1 :
j = .Range("A65536").End(xlUp).Row + 1
Ensuite, je ne comprends pas bien tout le reste de ta macro... La boucle est inutile...
En gros, tu cherches, dans ta feuille Stock, la pièce sélectionnée dans la listbox. Une fois trouvée cette pièce, tu cherches le fournisseur.
Ce code devrait suffire :
Private Sub Commander_Click()Ou encore :
Dim i As Integer, j As Integer, Piece As String, Fourn As String
If PlagePièces.ListIndex = -1 Then Exit Sub
i = Sheets("Stock").Columns(2).Cells.Find(PlagePièces.List(PlagePièces.ListIndex)).Row
Piece = Sheets("Stock").Cells(i, 2)
Fourn = Sheets("Stock").Cells(i, 5)
With Sheets("Commandes")
j = .Range("A65536").End(xlUp).Row
.Range("A" & j) = Pièce
.Range("D" & j) = Fourn
End With
End Sub
Private Sub Commander_Click()
Dim i As Integer, j As Integer
If PlagePièces.ListIndex = -1 Then Exit Sub
i = Sheets("Stock").Columns(2).Cells.Find(PlagePièces.List(PlagePièces.ListIndex)).Row
With Sheets("Commandes")
j = .Range("A65536").End(xlUp).Row
.Range("A" & j) = Sheets("Stock").Cells(i, 2)
.Range("D" & j) = Sheets("Stock").Cells(i, 5)
End With
End Sub
A moins que je n'ai pas tout compris...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
27 déc. 2013 à 10:35
27 déc. 2013 à 10:35
Retente maintenant...
Merci beaucoup,
ça marche c'est parfait.
Peux-tu quand même m'indiquer comment extraire le code de ce genre de "boite"
Egalement, peux tu m'expliquer le Offset(0, 1).
-> Ca prend selectionne la case à droite de ce que je cherchais.
Je peux voir à selectionné à gauche ? deux cases à droite ...?
Encore merci Pijaku
ça marche c'est parfait.
Peux-tu quand même m'indiquer comment extraire le code de ce genre de "boite"
Egalement, peux tu m'expliquer le Offset(0, 1).
-> Ca prend selectionne la case à droite de ce que je cherchais.
Je peux voir à selectionné à gauche ? deux cases à droite ...?
Encore merci Pijaku
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
27 déc. 2013 à 10:45
27 déc. 2013 à 10:45
Peux-tu quand même m'indiquer comment extraire le code de ce genre de "boite"
Il s'agit d'un bug (temporaire?) du site. Normalement un copié collé suffit... Ca va s'arranger...
OffSet = décalage.
(0, 1) = 0 ligne, 1 colonne à droite
(-1, 2) = 1 ligne au dessus, 2 colonnes à droite
(12, -15) = 12 lignes au dessous et 15 colonnes à gauche.
Attention dans ces manipulations à vérifier systématiquement l'existence de la cellule.
Les colonnes commencent à 1 (colonne A), les lignes également...
Par exemple :
Range("F5").Offset(0, -6) va renvoyer une erreur.
Il s'agit d'un bug (temporaire?) du site. Normalement un copié collé suffit... Ca va s'arranger...
OffSet = décalage.
(0, 1) = 0 ligne, 1 colonne à droite
(-1, 2) = 1 ligne au dessus, 2 colonnes à droite
(12, -15) = 12 lignes au dessous et 15 colonnes à gauche.
Attention dans ces manipulations à vérifier systématiquement l'existence de la cellule.
Les colonnes commencent à 1 (colonne A), les lignes également...
Par exemple :
Range("F5").Offset(0, -6) va renvoyer une erreur.