XL 2010 Besoin d'aide application Excel

Heddy13011

XLDnaute Nouveau
Bonjour a tous,

C'est la première fois que je publie sur un forum d'habitude je lis plutot les posts mais actuellement je ne trouve pas grand chose qui pourrait m'aider, je me présente je m'apelle Heddy je suis en MASTER 1 GESTION DES OPERATIONS LOGISTIQUES.

Nous devons faire un projet EXCEL en binômes, une applications en vba notamment, j'ai jamais touché au vba donc je suis vraiment débutant.
Notre application est une application de gestion des ventes, des stocks, des ressources humaines, etc .. d'une entreprise de pneu (une sorte d'ERP), j'ai commencer a faire le formulaire de recherche de pneu dans la base de données mais plusieurs problèmes se pose actuellement, dans mon formulaire toutes les donnes de la colonne sont présentes ( pour les dimensions des pneu par exemple la largeur il y a 155,155,155,165,165,165) j'aimerais que les nombre ne se répète pas mais je n'y arrive pas, j'ai pensé a réecrire ma base de donnés avec seulement ces données la écrites en une seule fois, mais je pense que cela ne m'aidera pas pour la suite, en effet il faut que quand le commercial clique sur "Rechercher" les pneus contenu dans la base de données avec les mêmes données que celle entrées dans le formulaire s'affiche avec le prix de vente.

Désolé pour l'explication un peu compliqué mais j'essaye de faire de mon mieux , je vous joint mon fichier afin que vous puissiez regardez pour mieux comprendre.

MERCI BEAUCOUP.
 

Pièces jointes

  • Projet PNEUPASCHER.xlsm
    109.8 KB · Affichages: 7
  • Présentation.docx
    13.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Heddy,
Un essai en PJ,
L'init des 7 ComboBox se font avant de lancer le Userform avec toujours la même structure :
VB:
    ' Liste Largeur pneu sans doublons
    UserForm1.ComboBox1.RowSource = ""
    For i = 2 To DL
        If Application.CountIf(.Range("C1:C" & i), .Cells(i, "C")) = 1 Then
            UserForm1.ComboBox1.AddItem .Cells(i, "C")
        End If
    Next i
 

Pièces jointes

  • Projet PNEUPASCHER.xlsm
    117.6 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Just for the fun....
Vous aurez remarqué que les hauteurs dans la combobox ne sont pas par ordre croissant mais par ordre d'apparition. Guère convivial. En PJ c'est rectifié avec :
VB:
    UserForm1.ComboBox2.RowSource = ""
    N = 0
    'On remplit le tableau des hauteurs
    For i = 2 To DL
        If Application.CountIf(.Range("D1:D" & i), .Cells(i, "D")) = 1 Then
            ReDim Preserve tablo(N)
            tablo(N) = Val(.Cells(i, "D"))
            N = N + 1
        End If
    Next i
    'On tri ce tableau par ordre croissant
    For i = 0 To UBound(tablo)
        For j = 0 To UBound(tablo)
            If tablo(i) < tablo(j) Then
                buffer = tablo(i)
                tablo(i) = tablo(j)
                tablo(j) = buffer
            End If
        Next j
    Next i
    'On alimente la Combobox
    For i = 0 To UBound(tablo)
        UserForm1.ComboBox2.AddItem tablo(i)
    Next i
 

Pièces jointes

  • Projet PNEUPASCHER 2.xlsm
    120.5 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Heddy,
Là on tombe dans le cœur du projet. Ce ne sera que du superficiel.
Donc uniquement un exemple de ce qu'on peut faire, mais ça dépend de la présentation que vous voulez obtenir.
Dans cet exemple on filtre la page pneus et on montre à l'utilisateur le résultat filtré. C'est simple, avec :
VB:
Private Sub CommandButton1_Click()
' Active feuille pneus
Sheets("pneus").Select
' Calcul taille tableau
DL = Range("A65500").End(xlUp).Row
' Filtre sur largeur si différent de vide
If ComboBox1 <> "" Then
    ' Mise en place du filtre
    ActiveSheet.Range("$A$1:$I$" & DL).AutoFilter Field:=3, Criteria1:=ComboBox1  'Field:=3 car Largeur est en 3eme colonne
End If
'  à continuer avec les autres paramètres
End Sub
Je n'ai fait l'exemple que sur la largeur : On choisit une largeur et on clic sur Rechercher.
 

Pièces jointes

  • Projet PNEUPASCHER 3.xlsm
    124 KB · Affichages: 4
Haut Bas