Listbox alimenté avec critère

Votre fichier en retour en version 2
J'ai apporté les modifications suivantes :
- Ajout du code pour la combo765
- Ajout du code Command5 pour la validation du mouvement
- Dans Private sub userform_initialize, ajout de la mention "A DEFINIR" dans la textbox108 "Emplacement" pour qu'elle soit par défaut à l'ouverture de l'userform

Tous les codes sur lesquels je suis intervenu sont placés en bas de l'userform en dessous de la mention codes modifiés Dan

Hormis un test , à ce stade, je pense que vous devriez :
- Numéroter dans un ordre logique toutes les textbox et combo (c'est assez pénible d'analyser les codes actuellement)
- Définir le nombre de colonnes et ce que vous voulez voir dans la listbox3. Là il y en a 15 de définie mais seulement 11 d'utilisées.

11logistique-v2.xlsm (56.90 Ko)

Repartez de ce fichier afin de ne pas s'y perdre pour le futur

Ok merci Dan,

Je garde ce fichier, j'entreprends la numérotation ou nommage des combo et textbox.

Je test, et je vous renvoie le fichier propre.

Merci encore.

Je garde ce fichier, j'entreprends la numérotation ou nommage des combo et textbox.

Essayez d'avoir une progression logique. cela aide parfois à réduire les codes
Par exemple utiliser le premier chiffre pour la page de votre userform :
Multipage Mouvement = 3. Du coup prendre les combobox 31, 32, 33... textbox 31,32....
Multipage Magasin = 1 -> Combo 11, 12... texbox 11, 12,...

Oui pas bête.

le code de l'ajout de le listbox dans la feuille magasin ne fonctionne pas.

Je ne sais pas ce que vous avez fait dans le fichier que vous avez posté mais il y a des codes que vous avez placés et qui n'étaient dans les versions précédentes

exemple --> Private Sub TextBox241_Change()

Mais pourquoi vous faites cela ???? Cela met le souc dans tout le fonctionnement du fichier

je l'ai mis en brouillon à l'origine.

ce code ne fonctionne pas c'était en essaie

J'ai aussi ajouté le code pour laisser vide le combo 8 change (au profit de) , le fait de laisser vide le combo 762 (ACDE) à la condition que combo 765 (mouvement) soit égal à "attente de livraison" et appliquer à la combo 9 (code projet) change d'appliquer le code à la condition que combo 765 (mouvement) soit différente de "attente de livraison".

Mais le code du bouton valider le mouvement ne fonctionne pas.

With Sheets("MAGASIN")
derligne = .Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 1 To ListBox3.ListCount
.Range("A" & derligne) = ListBox3.List(i, 0) 'au profit de
.Range("B" & derligne) = ListBox3.List(i, 1) 'code projet
.Range("C" & derligne) = ListBox3.List(i, 2) 'pour le site
.Range("D" & derligne) = ListBox3.List(i, 3) 'famille article
.Range("E" & derligne) = ListBox3.List(i, 4) 'forunisseur
.Range("F" & derligne) = ListBox3.List(i, 5) 'reference
.Range("G" & derligne) = ListBox3.List(i, 6) 'num ACDE
.Range("I" & derligne) = ListBox3.List(i, 7) 'prix unitaire
.Range("I" & derligne).NumberFormat = "#,##0.00 €"
.Range("K" & derligne).NumberFormat = "#,##0.00 €"
.Range("L" & derligne) = TextBox108.Value 'emplacement
.Range("M" & derligne) = TextBox770.Value 'qte max
.Range("N" & derligne) = TextBox240.Value 'qte attente

derligne = derligne + 1
Next i
End With

Désactiver le code Private Sub TextBox241_Change()

puis remplacez

For i = 1 To ListBox3.ListCount

Par

For i = 0 To ListBox3.ListCount - 1

Il reste d'autre chose à corriger mais avant modifiez la numérotations des objets comme discuté précédemment ainsi que la référence dans les codes. Ce sera nettement plus facile de s'y retrouver

Magnifique,

ca fonctionne.

je suis au travail pour renomme les tex et combo.

dans l'idée

multipage magasin

exemple combomag1, mag2...

multipage mise à jour

combomis1, mis2...

Bonjour Dan,

Ca fonctionne parfaitement, j'ai simplement modifier les indice de colonne de la listbox puisque certainnes colonne sont masqués dans le columnwith.

Maintenant je me concentre sur la reprise des nommages.

Ensuite le mouvement entrée, puis retour, puis le bouton modifier.

le mouvement sortie une fois que j'aurais traiter la multipage chantier intégralement.

et pour finir le multipage magasin qui est simplement de la lecture.

Bref, loin d'avoir terminé...

Merci, je reviens vers vous en cas d'interrogation, mais je vais essayer de trouver le maximum moi même, rien de tel de mettre le nez dedans pour apprendre.

je vous conseille d'effectuer le renommage puis de faire des tests sur ce que je vous ai proposé

Trouver par vous même oui... , mais allez y pas à pas car vu ce que vous me disiez précédemment (https://forum.excel-pratique.com/s/goto/1020354) , votre appli est assez complexe pour démarrer un apprentissage.
N'allez pas trop loin sans poser de question. Moins vous avez de codes plus ce sera facile d'intervenir et surtout de ne pas devoir tout refaire.

Excel devient vite une "usine à gaz" avec VBA. Vaut mieux faire des choses simples quand on fait appelle à la programmation.

Oui msieur !

Merci.

Bonjour,

Je ne parviens pas à mes fins pourtant le code me semble correct.

Private Sub validation_Click()

If Combomouv1 = "Entrée" Then
Dim ii As Integer
ii = 1
With Sheets("MAGASIN")

Do While .Cells(7, ii).Value <> ""
If .Cells(7, ii).Value = Combomouv4.Value Then 'ACDE
Sheets("MAGASIN").Select

Cells(10, ii).Value = Cells(14, ii).Value
Cells(14, ii).Clear
End If
ii = ii + 1
Loop
End With
End If

8logistique-v2.xlsm (73.34 Ko)

Bonjour,

Vous compliquez pas mal le fichier..mé bon

Lorsque vous choisissez ENTREE, si je choisis un ACDE = ACDE54263 pour Rodriguez. La listbox renvoie plein de valeur.
Est-ce que vous complétez les combo Famille Fournisseurs reference qté ...
le click sur Valider doit faire quoi ?

Bonjour Dan,

J'avais un end if mal placé.

Cela fonctionne maintenant.

Merci

x = 1
With Sheets("MAGASIN")
Do While .Cells(x, 7).Value <> ""
If .Cells(x, 7).Value = Combomouv4.Value Then

Cells(x, 10).Value = Cells(x, 14).Value
Cells(x, 14).Clear
Listmouv.Clear
End If
x = x + 1
Loop

Oui et non parce que je viens de voir qu'il y a aussi que vous inversez colonne et ligne dans l'instruction CELL
Votre code corrigé :

Private Sub validation_Click() 'Validation mouvement 'Dan
Dim derligne As Long
Dim i As Integer

If Listmouv.ListCount = 0 Then
    MsgBox "Ajoutez à la liste"
    Exit Sub
End If

Select Case Combomouv1
    Case Is = "Attente de livraison"

        With Sheets("MAGASIN")
            derligne = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            For i = 0 To Listmouv.ListCount - 1
                .Range("A" & derligne) = Listmouv.List(i, 0) 'au profit de
                .Range("B" & derligne) = Listmouv.List(i, 1) 'code projet
                .Range("C" & derligne) = Listmouv.List(i, 2) 'pour le site
                .Range("D" & derligne) = Listmouv.List(i, 3) 'famille article
                .Range("E" & derligne) = Listmouv.List(i, 4) 'forunisseur
                .Range("F" & derligne) = Listmouv.List(i, 5) 'reference
                .Range("G" & derligne) = Listmouv.List(i, 6) 'num ACDE
                .Range("I" & derligne) = Listmouv.List(i, 8) 'prix unitaire
                .Range("I" & derligne).NumberFormat = "#,##0.00 €"
                .Range("K" & derligne).NumberFormat = "#,##0.00 €"
                .Range("L" & derligne) = Listmouv.List(i, 11) 'emplacement
                .Range("M" & derligne) = Listmouv.List(i, 13) 'qte max
                .Range("N" & derligne) = Listmouv.List(i, 13) 'qte attente

                derligne = derligne + 1
            Next i
            MsgBox "L'attente de livraison est enregistré dans le magasin"
        End With

    Case Is = "Entrée"
        i = 2
        With Sheets("MAGASIN")
            Do While .Cells(i, 7).Value <> ""
                If .Cells(i, 7).Value = Combomouv4.Value Then
                    .Cells(i, 10).Value = .Cells(i, 14).Value
                    .Cells(i, 14).Clear
                End If
                i = i + 1
            Loop
        End With
        MsgBox "Entrée validé"
End Select

Unload LOGISTIQUE
LOGISTIQUE.Show
End Sub

edit : Dans la première partie du code vous avez deux fois

Listmouv.List(i, 13)

Normal ?

Oui j'ai corrigé dans le code que je viens de vous envoyer.

Oui normal le doublon, car la valeur à ce moment là est copié en "n" et "m".

J'ai un code erreur avec ce code:

uf initialize

'With Sheets("MAGASIN")
'Do While .Cells(x, 10).Value <> ""
'Cells(x, 11).Value = Cells(x, 9).Value * Cells(x, 10).Value
'x = x + 1
'Loop
'End With

erreur 13

incompatibilité de type

Pourquoi ?

uf initialize ???? Pourquoi ?
Il n'y a pas cela dans votre fichier posté
ou alors dans une autre code ?

Rechercher des sujets similaires à "listbox alimente critere"