Clever-Excel-Forum

Normale Version: Verschieben der ganzen Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

Ich arbeite mit einer Auftragsliste, daran würde ich gerne eine Verbesserung machen, ich weiss aber nicht wie das geht und ob es überhaupt geht.
In der Liste geht es um Aufträge die man bearbeiten muss, diese sind mit allerlei Möglichkeiten versehen was momentan für mich wichtig wäre: wenn ein Auftrag erledigt ist aber auf dem Auftrag noch eine offene Bestellung vorliegt,…
Das wäre für mich die bessere Lösung:
  • dass diese Aufträge unterhalb der aktuellen Aufträge verschoben werden und diese auch unterhalb bleiben (auch wenn ich eine Sortierung nach der Nummer mache), bis die Bestellung abgeschlossen ist.
Das wäre die alternative Lösung:
  • dass diese Aufträge in die zweite Tabelle „Bestellung“ verschoben werden und dort bleiben bis die Bestellung abgeschlossen ist und der Auftrag wieder in die erste Tabelle zurück verschoben wird.
 
Die Begriffe (Status: „erledigt“ und Bestellung:  „JA“) sind aus einer Dropdownliste auszuwählen und könne immer geändert werden.
Kann mir hier jemand einen Tipp geben, ob und wie ich dies am besten realisiere?
 
Danke im Voraus,

Gruss
Weidplas123
Hallo

weil keiner den Thread bearbeitet hat habe ich mich der Sache mal angenommen.  s. Beispieldatei.
Ich weiss aber nicht ob mir eine Optimal Lösung gelungen ist???  Konnte es nicht in der Praxis testen.

Als Beispiel sind beide Datei Formate angehangen, aus Schutz vor Lucky für Kollegen als xlsx mit Makros im Tabellenblatt als Text. 

Ich habe zwei verschieden Varianten ausprobiert:
Modul1:  kopiert die Bestellungen "JA" in die "Bestellung" Tabelle und nach erledigt Status (muss gesetzt sein) wieder zurück in die Werkzeugliste.
Bei mir poppt dabei aber ein Dialogfeld auf weil mir die verknüpften Dateien fehlen!! 

Modul2:   setzt vor die Nummer den Wert "999_" und sortiert die Werkzeugliste. Dadurch rutschen die Bestellungen  nach unten.  Bei Status erledigt wird die alte Nummer generiert.  Welche von den beiden Methoden die bessere ist wird die Praxis zeigen.  

Zur Datensicherheit bitte den 1. Test nicht in der Originaldatei durchführen, sondern in der Beispieldatei.  Bei einem neuen Makro weiss man nie ob nicht doch noch versehentlich ein böser Fehler drin ist.  Im Beispiel zerstören wir keine Originaldaten.

Würde mi,ch freuen wenn die Lösung gefaellt udn Praxisgerecht ist.  Das ist sicher ein Industrieeinsatz.

mfg Gast 123
Vielen Dank Gast 123

Auf die Lösung wäre ich nie gekommen.

Das Modul2 ist die perfekte Lösung für mein Problem. Ich hätte da noch eine Frage dazu, kann ich die Prioritäten ändern?

Also wenn der Auftrag "erledigt" ist und die Bestellung "JA" ist, dass die Nummer "999_" vorgesetzt wird und wenn ich das "JA" entferne, dass der Auftrag dann wieder in die Liste integriert wird.

Vielen Dank

Gruss Weidplas123
Hallo

sicher können wir das Makro noch individuell zuschneiden, ich muss jetzt nur aufpassen das ich die Aufgabe richtig verstehe.  Modul2 war das Modul zum kopieren in die Tabelle Bestellung, und von dort wieder in die Werkzeugliste zurückkopieren. Ist das korrekt??

Da kann ich auch nach dem Koieren die "999_" davorsetzen und wieder löschen!  Sehe ich das richtig, wenn "JA" entfernt wird soll die Nummer zurückgesetzt werden??  Und was ist wenn "JA" bestehen bleibt??  Dann nicht zurücksetzen, aber wieder in die Werkzeugliste zurückkopieren??  
Ich habe morgen noch eine Knobelaufgabe, kann etwas dauern bis ich fertig bin.

mfg  Gast 123
Also Modul2 ist für mich nur die Nummer "999_" davorsetzen.

In dem jetzigen Makro ist es wenn "JA" und wenn nicht "erledigt" das die Nummer vorgesetzt wird und wenn ich "erledigt" setzte dann wird die Nummer wieder Original.

Ich würde gerne wenn "erledigt" und wenn "JA" das die Nummer "999_" vorgesetzt wird und wenn ich das "JA" entferne das dann die Nummer wieder Original ist.

Würde das gehen und wenn ja kann man das auch so Programmieren, dass wenn die Nummer "999_" vorgesetzt wird das dann nicht noch eine Nummer "999_" vorgesetzt wird bei mehrfachem drücken?

Besten Dank für deine Bemühungen

Gruss
Weidplas123
Durch das verändern der Parameter habe ich das Ergebnis das ich erreichen wollte.

Das habe ich verändert:
Bestellungen_nachunten_verschieben
If .Cells(j, "I") <> "erledigt" Then

Bestellungen_wieder_einsortieren
If .Cells(j, "P") <> "JA" Then


Jetzt fehlt nur noch, dass die Nummer "999_" nicht jedes mal neu geschrieben wird wen man die Funktion aufrufen wird?
Also wenn die Nummer "999_" schon vorgesetzt ist, dass sie nicht nochmals vorgesetzt wird. (Wenn das geht)

Sub Bestellungen_nachunten_verschieben()
On Error GoTo Fehler
Application.ScreenUpdating = False
With Worksheets("Werkzeugliste")
     'LastZell in Bestellung + Werkzeugliþste finden
     lz = .Cells(Rows.Count, 2).End(xlUp).Row
     'Rückwaerts Schleife zum Daten kopieren + löschen
     For j = 2 To lz
        If .Cells(j, "I") <> "erledigt" Then
        ElseIf .Cells(j, "P") = "JA" Then
           'Zeile von A-Z kopieren in Bestellung kopieren
           .Cells(j, 2) = "999_" & Cells(j, 2)
        End If
     Next j
    
     'Liste nach Nummer sortieren
     Call Werkzeugliste_sortieren
End With
Exit Sub
Fehler:  MsgBox "unerwarteter Fehler:  " & Error()
End Sub


Besten Dank für deine Bemühungen

Gruss
Weidplas123
Hallo

ich freue mich sehr das du den Code selbstaendig erweitert hast, hast mir Arbeit abgenommen, Danke!!

Was mich vor allem freut ist, wenn man meinen Code versteht, und ihn dann selbst anpassen kann.  So lernt man VBA.
Zur letzen Frage hast du mir selbst die Lösug auf dem Silbertablett angeboten, ich sah deine Lösung direkt. Schau mal hier:   (Vba ist sooo einfach!!)

        If .Cells(j, "I") <> "erledigt" Then
        ElseIf .Cells(j, "P") = "JA" And Left(.Cells(j, 2), 3) <> "999" Then

mfg Gast 123
Herzlichen Dank das du dir die Zeit genommen hast und mir geholfen hast das hat super geklappt.

Gruss Weidplas123