2016-12-23 3 views
1

Ich versuche, eine Anwendung zu erstellen, mit der Sie Verkaufsbedingungsdetails mit zwei Comboboxen aktualisieren können.VBA Excel 2 Comboboxes Ausgabe

Sehen Sie diese Screenshots für eine Demo:

1) Datasheet

2) diese Userform betrifft die Schaffung eines neuen Verkaufsbedingung

3) eine zweite Userform erforderlich ist, um die Daten zu ändern und Aktualisieren Sie es im gewünschten Blatt

In Bezug auf meinen Quellcode zum Erstellen einer neuen Verkaufsbedingung, können Sie es hier finden:

Private Sub bAnnuler_Click() 

    Unload Me 

End Sub 

Private Sub bEnregistrer_Click() 

    Sheets("ConditionsVente").Activate 
    Range("A1").Select 
    Selection.End(xlDown).Select 'On se positionne sur la derniere ligne non vide 
    Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas 
    'ActiveCell = txtNom.Value 
    ActiveCell.Offset(0, 3).Value = txtPrix 
    ActiveCell.Offset(0, 4).Value = txtDélai 

End Sub 

Private Sub bReinitialiser_Click() 
    txtPrix = "" 
    txtDélai = "" 
End Sub 


Private Sub cboFournisseur_Change() 

End Sub 

Private Sub UserForm_Initialize() 
    'initialiser combobox fournisseur 
    Dim Fournisseurs As Range 
    Dim Matieres As Range 

    Set Fournisseurs = Worksheets("Fournisseurs").Range("A2:A" & Worksheets("Fournisseurs").Range("A2").End(xlDown).Row) 

    Me.cboFournisseur.MaxLength = Fournisseurs.Count 
    Me.cboFournisseur.List = Fournisseurs.Value 
    'initialiser combobox matiere 
    Set Matieres = Worksheets("Matieres").Range("A2:A" &  Worksheets("Matieres").Range("A2").End(xlDown).Row) 

    Me.cboMatiere.MaxLength = Matieres.Count 
    Me.cboMatiere.List = Matieres.Value 

End Sub 

Ich habe zwei Fragen: 1), wenn ich diesen Code ausführen, ich eine neue Verkaufsbedingung schaffen, sondern was in dem Blatt ist nur der Preis (Prix auf Französisch) und die Verzögerung (délai auf Französisch) gespeichert und in den Spalten der Lieferanten (Fournisseurs in Französisch) und der Rohstoffe (Matiere in Französisch) sind noch leer.

2) der zweite Punkt, um ein Benutzerformular, die mich die Verkaufsbedingungen in der gewünschten Tabelle ändern lassen, was ist der einfachste Weg, um es zu realisieren?

+0

Siehe unten - im Allgemeinen sollten Sie vermeiden, mit 'Activate' und' Select' in Ihrem Code. Es ist nicht wirklich notwendig. –

Antwort

1

Für Teil 1 Sie müssen dies:

Private Sub bEnregistrer_Click() 
    Dim nextRow as Integer 

    With Worksheets("ConditionsVente") 

     nextRow = .Range("A1").end(xlDown).Row + 1 

     .Range("A" & nextRow) = txtNom.Value 
     .Range("B" & nextRow) = txtMatiere.Value 
     .Range("C" & nextRow) = txtPrix 
     .Range("D" & nextRow) = txtDélai 
    End With 
End Sub 

für 2 Teil dieses versuchen:

Private Sub btnSave_Click() 
    Dim Fournisseurs As Range, Fournisseur as range 

    Set Fournisseurs = Worksheets("Fournisseurs").Range("A2:A" & Worksheets("Fournisseurs").Range("A2").End(xlDown).Row) 

    For each Fournisseur in Fournisseurs 
     If Fournisseur = txtNom.Value And Fournisseur.offset(0, 1) = txtMatiere.Value Then 
      Fournisseur.offset(0, 3) = txtPrix 
      Fournisseur.offset(0, 3) = txtDélai 
     End if 
    Next Fournisseur  
End Sub 
+0

es funktioniert Vielen Dank Alex P – zakaria

+0

für den zweiten Teil, um eine Verkaufsbedingung zu ändern, sollten wir eine Bedingung hinzufügen, die erklärt, dass die beiden Daten von Comboboxen zuerst existieren müssen? hast du irgendeine Idee? – zakaria

+0

Erstellen Sie eine Schleife über vier Knoten und überprüfen Sie die Übereinstimmung. Beispiel: Wenn Bereich ("a" & Zeile) = "Hermes" UND Bereich ("a" & Zeile) .offset (0,1) = "matiere2" dann ... –