Microsoft 365 2ème Combox n'affiche que les IMEI disponible

Piment

XLDnaute Occasionnel
Bonjour à tous
Je reviens une fois de plus vers vous afin de m'aider à résoudre une difficulté.
J'ai un tableau qui est constitué de deux zones: 1 zone Entrée stock et une zone sortie stock.
J'ai 2 comboBox en cascades.
Après un choix dans la 1ère comboBox, je voudrais que la 2ème combobox n'affiche que les IMEI qui ne sont pas sortis, qui sont donc disponibles.
Je joins un fichier minimaliste (compliqué pour anonymiser le fichier de base).
Avec Tous mes remerciements.
 

Piment

XLDnaute Occasionnel
Je pense avoir trouver la solution.
Je joint le fichier.
Si quelqu'un pouvait me confirmer la justesse de ma modification.
J'ai rajouté une ligne de code:
VB:
If Wst.Cells(i, 11) = CbxIMEI.Value Then] dans le Private Sub CbxDesignation_Change.
Merci à ceux qui voudront bien contrôler et me faire un retour.
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
si le But c'est de récupérer l'IMEI en Fonction de la Colonne 3 et de la Colonne 8 qui doit être vide
je récupére l'IMEI en Colonne 4
j'ai mis ceux-ci
VB:
  If Wst.Cells(i, 3) = CbxDesignation.Value And Wst.Cells(i, 8) = Empty Then
     'On ajoute les IMEI
                CbxIMEI.AddItem "" & Wst.Cells(i, 4)
  End If
Jean marie
 

Piment

XLDnaute Occasionnel
Bonjour le Fil
si le But c'est de récupérer l'IMEI en Fonction de la Colonne 3 et de la Colonne 8 qui doit être vide
je récupére l'IMEI en Colonne 4
j'ai mis ceux-ci
VB:
  If Wst.Cells(i, 3) = CbxDesignation.Value And Wst.Cells(i, 8) = Empty Then
     'On ajoute les IMEI
                CbxIMEI.AddItem "" & Wst.Cells(i, 4)
  End If
Jean marie
Salut Jean-Marie,
Heureux de te lire de nouveau.
Alors, je t'explique ce que je recherchais à faire:
Je voulais récupérer les N° IMEI qui était encore en stock à partir de la donnée de la 1ère Combobox, dans la deuxième ComboBox lié. Pour cela il regarde dans la colonne sortie "IMEI2" (colonne 11) tous les IMEI sortie de la marque choisie dans la comboBox 1. Il enlève tous ce qu'il a trouvé de la liste issue de la colonne 3, et n'affiche donc que les IMEI disponible.
A priori c'est ce que tu propose, sauf que je partais moi sur la colonne 11 et pas 8.
Je te joins le fichier, regarde ce que j'ai fait et dis-moi si c'est fiable.
je regarde ta proposition de plus près.
Merci à toi
 

Pièces jointes

  • Classeur1.xlsm
    34.5 KB · Affichages: 6

ChTi160

XLDnaute Barbatruc
Bonjour le Fil ,

explications :
VB:
If Wst.Cells(i, 3) = CbxDesignation.Value And Wst.Cells(i, 8) = Empty Then
     'On ajoute les IMEI
                CbxIMEI.AddItem "" & Wst.Cells(i, 4)
  End If
Code:
If Wst.Cells(i, 3) = CbxDesignation.Value And Wst.Cells(i, 8) = Empty
Si La colonne 3 contient L'IMEI sélectionné et Que la Colonne 8 est Vide (donc IMEI non Sorti)
Code:
CbxIMEI.AddItem "" & Wst.Cells(i, 4)
On Récupère l'IMEI de la Colonne 4 pour l'ajouter au le Combobx "CbxIMEI"

peut-être n'ai-je pas compris Lol
Bonne Journée
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Quand tu mets une date en Colonne 11 c'est que le matériel est sorti ?
donc si tu mets :
VB:
                If Wst.Cells(i, 11) = CbxIMEI.Value Then
            'On ajoute les IMEI
                CbxIMEI.AddItem "" & Wst.Cells(i, 4)
                End If
tu dis :
Si en Colonne 11 il y a un IMEI qui correspond au Combobox "CbxIMEI" (sortie "IMEI2")
Tu récupères l'IMEI de la Colonne 4 de cette Ligne , donc du Matériel Sorti car Colonne 8 n'est pas Vide !
Jean marie
 

Piment

XLDnaute Occasionnel
Re:
ton raisonnement est bon, tu travailles à partir des cellules vides de la zone sortie. Le résultat est correct. Au départ c'était aussi mon raisonnement, mais comme je n'avais pas réussi à générer le code, j'ai cherché, cherché, et j'ai réussi générer ce code que j'ai mis dans le fichier.
Je suis donc parti autrement: regarde les IMEI1 de la colonne 4 de la marque choisie, puis va à la colonne 11 (IMEI2) et tu retire de la liste tous les EMI que tu trouve (donc sorti).
Si tu ouvres le fichier, et tu choisis ComboBox1 la marque: XIAOMI, tu actives la ComboBox2, dans la liste apparaîtra 2 IMEI. Vérifie dans le tableau et tu verras que ces 2 IMEI ne sont pas sortis. Il a retiré de la liste 2 IMEI qui sont sortis
Ton code fonctionne, et je vais le garder, c'est plus sûr.
Je voulais savoir si le mien était vraiment opérationnel, sans surprise à terme.
Fais moi un retour s'il te plaît.
Une fois de plus grand Merci à toi.
 

ChTi160

XLDnaute Barbatruc
Re
je viens de comprendre ta démarche !
Tu Compares la Cellule Cells(i, 4) à la valeur de Ton Combobox " CbxIMEI"
Pas très Logique (c'est la Colonne IMEI2 qui doit être vide) mais Bon ça fonctionne !
Question :
Pourquoi mets-tu un espace devant la valeur de la cellule "Wst.Cells(i, 4) " soit : "" & Wst.Cells(i, 4)
Pourquoi pas simplement

VB:
CbxIMEI.AddItem Wst.Cells(i, 4)
Jean marie
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
C'est presque ça. en réalité je compare la cellule (i,4) à la cellule(i,11): cette cellule reçoit le N° IMEI de l'appareil qui sort.
La cellule(i,4) reçoit elle le N°IMEI de l'appareil qui entre en stock.
Je compare donc l'IMEI en stock (i,4) à l'IMEI qui sort (i,11). S'il le trouve en (i,11), il le déduit de la liste qui s'affiche dans la comboBox2.
Mais même si ce que j'ai fait fonctionne, je garde ton code. Il est plus fiable à mon sens puisque tu joues sur la cellule date si elle est vide ou pas.
Pour ta question sur l'espace devant la valeur de la cellule "Wst.Cells(i,4) je ne suis pas au bureau aujourd'hui. Je te fais un retour demain.
Je te souhaite une bonne journée.
Et merci encore.
 

ChTi160

XLDnaute Barbatruc
Bonjour Piment
On ne comprend pas la même chose Lol
Moi , j'analyse ce que tu dis !
La cellule(i,4) reçoit elle le N°IMEI de l'appareil qui entre en stock.
Ça c'est Ok !
Je compare donc l'IMEI en stock (i,4) à l'IMEI qui sort (i,11). S'il le trouve en (i,11), il le déduit de la liste qui s'affiche dans la comboBox2.
Donc dois avoir le Combobox2 qui contient l'ensemble des IMEI au départ
il le déduit de la liste qui s'affiche dans la comboBox2.
On devrait pour supprimer un élément d'un Combobox avoir une procédure "Remove" quelque part , Non !
ce que ne fait pas un Additem (il ajoute a la Liste)
Bonne Journée
Jean marie
 

Piment

XLDnaute Occasionnel
Bonjour Jean-Marie,
Pour répondre à ta question: pourquoi "" avant & Wst.Cells(i, 4)?
Réponse: si je ne les mets pas, la ComboBox2 est vide.
Maintenant, tu as effectivement bien saisie ma démarche.
La ComboBox2, au départ, reçoit la liste de tous les IMEI de l'appareil sélectionné, et déduit de la liste les IMEI qui sont sortis (IMEI2 après avoir recherché dans la colonne(i,11) les IMEI sortis.
Ton interrogation sur la procédure "Remove", montre bien que je ne fait pas les choses comme il faut. D'où ma question de te demander de valider ce que j'ai fait, pour m'assurer qu'à terme il n'y aura pas de beug!
Aussi, si tu voulais bien te pencher sur la question et me proposer un code fiable, je suis preneur.
En résumé, après sélection d'un appareil (ComboBox1), la Combobox 2 affiche tous les IMEI des appareils appareils disponibles. Pour cela: recherche dans cells(i,11) les IMEI commun au 2 colonne (IMEI1 colonne 4 et IMEI2 colonne 11) et supprimer de la liste affichée dans la Combox2 tous les IMEI sortis.
Une fois de plus je te remercie de ton aide.
Bonne journée à toi.
Claude.
 

Statistiques des forums

Discussions
311 711
Messages
2 081 786
Membres
101 817
dernier inscrit
carvajal