Passage d'une listbox à une autre.
Résolu/Fermé
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
-
11 déc. 2013 à 15:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 12 déc. 2013 à 16:07
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 12 déc. 2013 à 16:07
A voir également:
- Passage d'une listbox à une autre.
- Passage qwerty azerty - Guide
- Passage windows 7 à 10 - Accueil - Mise à jour
- Couper un passage d une vidéo - Guide
- Passage à la ligne excel - Guide
- Passage windows 10 à 11 - Guide
8 réponses
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
Modifié par pijaku le 11/12/2013 à 16:19
Modifié par pijaku le 11/12/2013 à 16:19
Bonjour,
dans ton userform, il faut que tu ajoutes le code (je n'ai pas accès à ton code car tu y as mis un mot de passe, donc il faudra que tu lemodifies :
dans ton userform, il faut que tu ajoutes le code (je n'ai pas accès à ton code car tu y as mis un mot de passe, donc il faudra que tu lemodifies :
Sub plagemachine_change Plagepièce.clear if plagemachine = 1 then Plagepièce.Additem 12 Plagepièce.Additem 13 end if if plagemachine = 2 then Plagepièce.Additem 22 Plagepièce.Additem 23 end if end sub
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
11 déc. 2013 à 15:55
11 déc. 2013 à 15:55
Mince , pardon !
Le mot de passe est "unzo"
Le mot de passe est "unzo"
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
11 déc. 2013 à 16:18
11 déc. 2013 à 16:18
Bonjour,
regarde si ca te convient :
https://www.cjoint.com/c/CLlqrBJd3pL
Il faudrait juste être sûre que la codification des macines est bien sur 4 caractères sinon le code ajouté ne fonctionnera plus.
regarde si ca te convient :
https://www.cjoint.com/c/CLlqrBJd3pL
Il faudrait juste être sûre que la codification des macines est bien sur 4 caractères sinon le code ajouté ne fonctionnera plus.
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
11 déc. 2013 à 16:40
11 déc. 2013 à 16:40
Oui c'est parfait !!
Oui le code sera sur 4 caractères.
Je vais te demander quelques explications sur ce bout de code :
Car j'aurais besoin de ce type de code pour alimenter la dernière ListBox.
Si jamais, je reviendrais vers toi, car il va faloir diviser la listbox en 4 , et je ne l'ai jamais fait...
Merci beaucoup melanie1324.
DGVDR
Oui le code sera sur 4 caractères.
Je vais te demander quelques explications sur ce bout de code :
If Left(Sheets("Stock").Cells(i, 1), 4) = Right(Plagemachine.Value, 4) ThenPeux tu me l'expliquer sous formes de phrases ?
Plagepièces.AddItem Sheets("Stock").Cells(i, 1)
Car j'aurais besoin de ce type de code pour alimenter la dernière ListBox.
Si jamais, je reviendrais vers toi, car il va faloir diviser la listbox en 4 , et je ne l'ai jamais fait...
Merci beaucoup melanie1324.
DGVDR
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
11 déc. 2013 à 16:45
11 déc. 2013 à 16:45
Pardon,
If Left(Sheets("Stock").Cells(i, 1), 4) = Right(Plagemachine.Value, 4) Then
Plagepièces.AddItem Sheets("Stock").Cells(i, 1)
==> la fonction left récupère les caractères à gauche.
Left(Sheets("Stock").Cells(i, 1), 4) ==> récupères les 4 (par lechiffre 4) caractères situés à gauche de la cellule de la ligne i colonne 1 de la feuille Stock donc AMOS ou PALL
==> la fonction right récupère les caractères à droite.
Right(Plagemachine.Value, 4) ==> récupères les 4 caractères situés à droite de la valeur Plagemachine. Autrement dit, quand tu sélectionnes une valeur dans Plagemachine, tu récupères sa codification.
Autre ment dit si la codification de Plage mahcine = celle dans la cellule alors :
on ajoute la pièce correspondante à la listbox Plagepièce :
Plagepièces.AddItem Sheets("Stock").Cells(i, 1)
C'est plus clair?
If Left(Sheets("Stock").Cells(i, 1), 4) = Right(Plagemachine.Value, 4) Then
Plagepièces.AddItem Sheets("Stock").Cells(i, 1)
==> la fonction left récupère les caractères à gauche.
Left(Sheets("Stock").Cells(i, 1), 4) ==> récupères les 4 (par lechiffre 4) caractères situés à gauche de la cellule de la ligne i colonne 1 de la feuille Stock donc AMOS ou PALL
==> la fonction right récupère les caractères à droite.
Right(Plagemachine.Value, 4) ==> récupères les 4 caractères situés à droite de la valeur Plagemachine. Autrement dit, quand tu sélectionnes une valeur dans Plagemachine, tu récupères sa codification.
Autre ment dit si la codification de Plage mahcine = celle dans la cellule alors :
on ajoute la pièce correspondante à la listbox Plagepièce :
Plagepièces.AddItem Sheets("Stock").Cells(i, 1)
C'est plus clair?
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
11 déc. 2013 à 16:49
11 déc. 2013 à 16:49
Je ne comprends pas bien :
Cells(i, 1) -> ça définit quoi ?
Enfaite dans ma liste box , ce n'est pas la codification que je voudrais récupérer mais la pièce
, soit les informations de la colonne B.
La codification étant directement liée à la pièce...
Vois tu ?
Merci
Cells(i, 1) -> ça définit quoi ?
Enfaite dans ma liste box , ce n'est pas la codification que je voudrais récupérer mais la pièce
, soit les informations de la colonne B.
La codification étant directement liée à la pièce...
Vois tu ?
Merci
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
Modifié par pijaku le 12/12/2013 à 09:03
Modifié par pijaku le 12/12/2013 à 09:03
Je reprends tout le code ajouté (et j'avais fait une petite erreur, regarde ce fichier : http://cjoint.com/confirm.php?cjoint=CLlrbMgoasw)
Comprends-tu?
Private Sub Plagemachine_Click() 'macro qui se déclenche lorsque tu cliques sur la plage machine i = 2 'la variable i = 2 Plagepièces.Clear 'vidage de la listbox Plagepièces If Plagemachine.Value <> "" Then 'si un item estsélectionné dansla list boxmachine Do While Sheets("Stock").Cells(i, 1) <> "" 'boucle qui fonctionne tant que la cellule de la ligne i colonne 1 de la feuille stock est non vide 'là tu es d'accord, il faut comparer la codification de la cellule avec l'item Plage machines 'tes cellules sont "codification.incrémentation", pour récupérer la codification, tu prends les 4 caractères situés à gauche de la cellule (dans ton exemple PALL ou AMOS) '==> d'ou Left(Sheets("Stock").Cells(i, 1), 4) 'dans la plage machine, c'est Machine.codification. Pour récupérer la codification, tu prends les 4 'caractères situés à droite (dans ton exemple dans Presse Amos, il faut donc récupérer AMOS 'd'ou Right(Plagemachine.Value, 4) 'et le if compares lacodification de la plage machine avec la codification des cellules de la feuille stock If Left(Sheets("Stock").Cells(i, 1), 4) = Right(Plagemachine.Value, 4) Then 'si les codifications sont identiques, tu ajoutes la pièce à la listbox Pièce Plagepièces.AddItem Sheets("Stock").Cells(i, 2) End If i = i + 1 Loop 'on passe à la ligne suivante End If End Sub
Comprends-tu?
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
11 déc. 2013 à 17:28
11 déc. 2013 à 17:28
melanie,
Je crois comprendre mais je pense que ca ne va pas être viable.
Car pour ne pas surcharge je n'ai mit que deux exemples (PALL et AMOS)
Cependant je pense qu'un passage par les colonnes J et K de l'onglet "Stock" est inévitable.
Je t'expliques ma pensée :
Je cliques sur un item de pagemachine (la listbox de l'userform)
Je cherche ça codification dans la colonne J (en général les 4 premères lettres de la machine, mais pas forcément !)
Et je cherche ayant, la codification machine, les pièces appartenant à la machine, ces pièces étant nomenclaturée en fonction de la codification machine. Sachant que je veux afficher, comme tu l'as très bien fait, le nom de la pièce (machin/truc / bidule..)
Exemple :
Je clique sur Presse AMOS
- > Ma codification machine est AMOS
-> Mes pièces sont codifiées AMOS.XXX
-> Je veux afficher les noms de pièces correspondant à AMOS.001 / AMOS 002.
Sachant que par exemple j'ai un cas ou, ma machine est 'Echangeur extérieur' et que ça codification ECEX. C'est pour ca que je pense qu'un passage par les colonnes J et K est indispensable.
Redit moi si ça n'est pas clair.
Merci beaucoup de ton temps,
DGVDR
Je crois comprendre mais je pense que ca ne va pas être viable.
Car pour ne pas surcharge je n'ai mit que deux exemples (PALL et AMOS)
Cependant je pense qu'un passage par les colonnes J et K de l'onglet "Stock" est inévitable.
Je t'expliques ma pensée :
Je cliques sur un item de pagemachine (la listbox de l'userform)
Je cherche ça codification dans la colonne J (en général les 4 premères lettres de la machine, mais pas forcément !)
Et je cherche ayant, la codification machine, les pièces appartenant à la machine, ces pièces étant nomenclaturée en fonction de la codification machine. Sachant que je veux afficher, comme tu l'as très bien fait, le nom de la pièce (machin/truc / bidule..)
Exemple :
Je clique sur Presse AMOS
- > Ma codification machine est AMOS
-> Mes pièces sont codifiées AMOS.XXX
-> Je veux afficher les noms de pièces correspondant à AMOS.001 / AMOS 002.
Sachant que par exemple j'ai un cas ou, ma machine est 'Echangeur extérieur' et que ça codification ECEX. C'est pour ca que je pense qu'un passage par les colonnes J et K est indispensable.
Redit moi si ça n'est pas clair.
Merci beaucoup de ton temps,
DGVDR
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
Modifié par melanie1324 le 11/12/2013 à 17:47
Modifié par melanie1324 le 11/12/2013 à 17:47
Non, ce n'est absolument pas clair.
Mets ton exemple dans ton fichier ECEX pour que ce soit plus clair.
Moi, je suis partie du principe suivant :
dans la listbox Plagemachine : s'affiche tes machines comme suit : Machine (espace) Codification
donc Presse AMOS (ou alors explique moi comment je récupère la codification dans la listbox Plage machine??? )
==> je récupère donc la codification AMOS (par mon code en prenant les 4 derniers caractères)
dans la feuille stock, une fois récupérée la codification, je recherche toutes les pièces pour lesquelles la codification des pièces commence par la codification trouvée précédemment.
si tel est le cas, j'affiche dans la pplagepièces : les pièces correspondantes.
Les points les plus importants sont :
- ta codification est-elle toujours sur 4 caractère ?
- Dans la plagemachine, ta codification est-elle toujours sur les 4 derniers caractères ?
Si oui au 2, alors mon code ne fonctionne pas.
Sinon, comment je peux récupérer la codification dans la plageMachine???
regarde ce fichier :
http://cjoint.com/confirm.php?cjoint=CLlrVjliXKK
Mets ton exemple dans ton fichier ECEX pour que ce soit plus clair.
Moi, je suis partie du principe suivant :
dans la listbox Plagemachine : s'affiche tes machines comme suit : Machine (espace) Codification
donc Presse AMOS (ou alors explique moi comment je récupère la codification dans la listbox Plage machine??? )
==> je récupère donc la codification AMOS (par mon code en prenant les 4 derniers caractères)
dans la feuille stock, une fois récupérée la codification, je recherche toutes les pièces pour lesquelles la codification des pièces commence par la codification trouvée précédemment.
si tel est le cas, j'affiche dans la pplagepièces : les pièces correspondantes.
Les points les plus importants sont :
- ta codification est-elle toujours sur 4 caractère ?
- Dans la plagemachine, ta codification est-elle toujours sur les 4 derniers caractères ?
Si oui au 2, alors mon code ne fonctionne pas.
Sinon, comment je peux récupérer la codification dans la plageMachine???
regarde ce fichier :
http://cjoint.com/confirm.php?cjoint=CLlrVjliXKK
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
11 déc. 2013 à 17:22
11 déc. 2013 à 17:22
Et bien lis tout le post et tu auras la réponse.
:0)))
:0)))
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 12/12/2013 à 12:17
Modifié par pijaku le 12/12/2013 à 12:17
Salut vous 2,
Avec le classeur d'origine, sans colonne L, essayez, dans un premier temps ce code :
Pour continuer, il faudrait savoir combien de lignes seront saisies, à terme (1 an ou 2 d'exploitation du fichier), colonnes A:F de la feuille Stock.
Y a t'il des risques de doublons colonnes A et B feuille Stock?
Cordialement,
Franck
Avec le classeur d'origine, sans colonne L, essayez, dans un premier temps ce code :
Private Sub Plagemachine_Click() Dim Codification As String, i As Long If Plagemachine.ListIndex = -1 Then Exit Sub 'Si aucune valeur n'est sélectionnée i = 2 Plagepièces.Clear 'on vide la listbox Plagepièces Codification = Sheets("Stock").Columns(11).Cells.Find(Plagemachine.Value, LookAt:=xlWhole).Offset(0, -1).Value Do While Sheets("Stock").Cells(i, 1) <> "" 'tant que la cellule de la ligne i colonne 1 de la feuille If Left(Sheets("Stock").Cells(i, 1), 4) = Codification Then 'si les 4 premiers caractères du code pièce correspondent à la codification Plagepièces.AddItem Sheets("Stock").Cells(i, 2) 'on ajoute la pièce à la listbox End If i = i + 1 'on passe à la ligne suivante Loop End Sub Private Sub Userform_initialize() 'si la dernière ligne est supérieure à 256 déclarer i et x en Integer Dim i As Long, x As Long With Sheets("Stock") i = .Range("K65536").End(xlUp).Row For x = 2 To i Plagemachine.AddItem .Range("K" & x) Next x End With End Sub
Pour continuer, il faudrait savoir combien de lignes seront saisies, à terme (1 an ou 2 d'exploitation du fichier), colonnes A:F de la feuille Stock.
Y a t'il des risques de doublons colonnes A et B feuille Stock?
Cordialement,
Franck
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
12 déc. 2013 à 12:22
12 déc. 2013 à 12:22
Bonjour pijaku,
Pour continuer, il faudrait savoir combien de lignes seront saisies, à terme (1 an ou 2 d'exploitation du fichier), colonnes A:F de la feuille Stock.
-> Ca influerait sur la designation des Variables ? (As long , as ...?)
Y a t'il des risques de doublons colonnes A et B feuille Stock?
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
La codification dépendant de la machine associé à la pièce ou de son type d'usage.
Merci,
DGVDR
Pour continuer, il faudrait savoir combien de lignes seront saisies, à terme (1 an ou 2 d'exploitation du fichier), colonnes A:F de la feuille Stock.
-> Ca influerait sur la designation des Variables ? (As long , as ...?)
Y a t'il des risques de doublons colonnes A et B feuille Stock?
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
La codification dépendant de la machine associé à la pièce ou de son type d'usage.
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
12 déc. 2013 à 12:38
12 déc. 2013 à 12:38
-> Ca influerait sur la designation des Variables ? (As long , as ...?)
Pas que...
Si tu as 30 000 lignes, il vaut mieux ne pas travailler sur la feuille, et donc la boucle Do Loop devra être remplacée.
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
Pas de possibilité de double saisie????
Pas que...
Si tu as 30 000 lignes, il vaut mieux ne pas travailler sur la feuille, et donc la boucle Do Loop devra être remplacée.
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
Pas de possibilité de double saisie????
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
12 déc. 2013 à 14:04
12 déc. 2013 à 14:04
Pijaku,
Je n'aurais pas 30 000 lignes, mais peut être 150-200.
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
Pas de possibilité de double saisie????
=> Quel est le fond de ta pensée ?
Je n'aurais pas 30 000 lignes, mais peut être 150-200.
-> Non, le nom complet de la pièce sera toujours différent de sa codification.
Pas de possibilité de double saisie????
=> Quel est le fond de ta pensée ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
12 déc. 2013 à 14:08
12 déc. 2013 à 14:08
=> Quel est le fond de ta pensée ?
Aucune. Le sujet est donc résolu.
Aucune. Le sujet est donc résolu.
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 12/12/2013 à 14:30
Modifié par DGVDR le 12/12/2013 à 14:30
J'aimerai profiter de vos connaissances de nouveau.
Maintenant que vous connaissez mon userform.
J'aimerai maintenant que, quand je cliques sur un item de "Plagepièces", j'ai ses infos qui apparaissent dans la dernière listBox. Ca implique de diviser cette listbox en 4. Et de compléter la listbox par les infos de l'onglet "Stock"
Pouvez-vous m'aider ?
Merci,
DGVDR
Maintenant que vous connaissez mon userform.
J'aimerai maintenant que, quand je cliques sur un item de "Plagepièces", j'ai ses infos qui apparaissent dans la dernière listBox. Ca implique de diviser cette listbox en 4. Et de compléter la listbox par les infos de l'onglet "Stock"
Pouvez-vous m'aider ?
Merci,
DGVDR
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
12 déc. 2013 à 14:37
12 déc. 2013 à 14:37
Le seul intérêt, dans ce cas, d'avoir une ListBox, est d'y indiquer toutes les caractéristiques de toutes les pièces lors d'un clic dans la listbox PlageMachine...
Sinon, il eu mieux valu avoir 4 textbox tout simplement.
Tu dis
Sinon, il eu mieux valu avoir 4 textbox tout simplement.
Tu dis
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
12 déc. 2013 à 14:44
12 déc. 2013 à 14:44
Entendu, je vais voir pour faire ça.
Merci
Merci
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
12 déc. 2013 à 14:45
12 déc. 2013 à 14:45
Ceci dit je ne sais pas comment faire venir telles infos à tels endroit d'une listbox...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 12/12/2013 à 15:06
Modifié par pijaku le 12/12/2013 à 15:06
Juste pour le fun, en conservant une listbox nommée ListBox3 :
L'événement clic dans PlagePièces :
Code pour transformer la ListBox3 en multicolonnes :
A ajouter dans le Userform_initialize()
L'événement clic dans PlagePièces :
Private Sub Plagepièces_Click() Dim i As Integer, j As Byte, rngTrouve As Range If Plagepièces.ListIndex = -1 Then Exit Sub ListBox3.Clear With Sheets("Stock") For i = 0 To Plagepièces.ListCount - 1 If Plagepièces.Selected(i) = False Then ListBox3.AddItem "" For j = 1 To 4 ListBox3.List(ListBox3.ListCount - 1, j - 1) = "" Next j Else Set rngTrouve = .Columns(2).Cells.Find(Plagepièces.List(i), LookAt:=xlWhole).Offset(0, -1) ListBox3.AddItem rngTrouve.Offset(0, 1) For j = 1 To 3 ListBox3.List(ListBox3.ListCount - 1, j - 1) = rngTrouve.Offset(0, j) Next j ListBox3.List(ListBox3.ListCount - 1, 3) = CInt(ListBox3.List(ListBox3.ListCount - 1, 1)) - CInt(ListBox3.List(ListBox3.ListCount - 1, 2)) End If Next i End With End Sub
Code pour transformer la ListBox3 en multicolonnes :
A ajouter dans le Userform_initialize()
With ListBox3 .ColumnCount = 4 .ColumnWidths = "108;96;102;90" End With
DGVDR
Messages postés
158
Date d'inscription
vendredi 10 août 2012
Statut
Membre
Dernière intervention
20 juillet 2015
12 déc. 2013 à 15:16
12 déc. 2013 à 15:16
Pijaku,
Je suis désolé, mais une seule listbox semble,après réflexion, comme tu l'as proposé, plus judicieux...
As-tu une idée du code si on divise Plagepièces en 5 ?
(Pièce/codification/stock/stockcritique/état)
Sachant qu'il va faloir rajouter une colonne Etat à notre onglet "Stock".
L'état pouvant être soit "Ok" si Stock > Stock critique ou "A commander" Si l'inverse...
Merci ,
DGVDR
Je suis désolé, mais une seule listbox semble,après réflexion, comme tu l'as proposé, plus judicieux...
As-tu une idée du code si on divise Plagepièces en 5 ?
(Pièce/codification/stock/stockcritique/état)
Sachant qu'il va faloir rajouter une colonne Etat à notre onglet "Stock".
L'état pouvant être soit "Ok" si Stock > Stock critique ou "A commander" Si l'inverse...
Merci ,
DGVDR