Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Excel07] πίνακες με συγχρονισμένη αλλαγή μεγέθους

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 06-04-19, 19:15
Όνομα: Νικόλας
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-04-2019
Μηνύματα: 4
Red face πίνακες με συγχρονισμένη αλλαγή μεγέθους

Καλησπέρα..!!!!
Ίσως το πρόβλημα που έχω να είναι πολύ απλό,ίσως και πολύ σύνθετο ,απλά κόλλησα,,,!!!
Έχω δύο πίνακες ο ένας ενημερώνεται από τον χρήστη και ο δεύτερος λαμβάνει δεδομένα από τον πρώτο.
Έχω και στους δύο γραμμή συνόλου (αν αυτό παίζει κάποιο ρόλο).
Θα ήθελα εφόσον αλλάζω το μέγεθος γραμμών του πρώτου να αλλάξει ανάλογα και ο δεύτερος.
Ευχαριστώ εκ των προτέρων....!!!!
Απάντηση με παράθεση
  #2  
Παλιά 09-04-19, 08:44
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλημέρα
Νικόλα, καλώς όρισες στο ms-office.gr

Το πρόβλημά σου, κατ αρχάς λύνεται με κώδικα.
Είναι πολύ απλό ως προς την δημιουργία και εκτέλεση, αλλά μπορεί να γίνει
πολύ σύνθετο ανάλογα με κάποιες παραμέτρους που θα εμπλακούν.

Έστω πίνακας 1 αυτός του χρήστη και πίνακας 2 ο...αυτόματος.

Τι πίνακες είναι;
Που βρίσκονται;
Ο πίνακας 1, παίρνει δεδομένα και από κάπου αλλού ή μόνο ο χρήστης τον τροποποιεί;
Πως συνδέεται ο πίνακας 2 με τον πίνακα 1;
Έχει τύπους ο πίνακας 2;
Οι αλλαγές στον πίνακα 1 θα είναι και στα δεδομένα τα υπάρχοντα;
Μόνο θα προστίθενται γραμμές στον πίνακα 1, ή θα διαγράφονται και κάποιες;
Οι στήλες στον πίνακα 1 παραμένουν ίδιες, ή μπορεί να αυξηθούν;
Αν αυξηθούν θα πρέπει να αυξηθούν και στον πίνακα 2;

Ένα σωρό ερωτήματα...

Ανέβασε λοιπόν ένα παραδειγματικό αρχείο,
πες μας με κάθε λεπτομέρεια τι θα κάνεις και αν είναι όπως το φαντάζομαι
βλέπουμε τη λύση...
Απάντηση με παράθεση
  #3  
Παλιά 09-04-19, 18:00
Όνομα: Νικόλας
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-04-2019
Μηνύματα: 4
Προεπιλογή

αποθηκη τεστ 10.xlsx
Σίγουρα έγραψα βεβιασμένα..!!
Ανέβασα το αρχείο που δουλεύω και λίγα λόγια γι αυτό.
Πίνακας 1 : αγορές
Πίνακας 2 : πωλήσεις
Πίνακας 3 : αποθήκη
Ενημερώνω τις αγορές με έναν μοναδικό κωδικό και τις πωλήσεις βάση του ίδιου κωδικού. Με δύο συναρτήσεις στην αποθήκη και βάση του μοναδικού κωδικού έχω ενημέρωση της αποθήκης.
Όμως θα πρέπει να ελέγχω το μέγεθος του πίνακα της αποθήκης κάθε φορά που αλλάζει ο πίνακας αγορών.
Αν υπάρχει κάποια λύση ευπρόσδεκτη.
Ευχαριστώ...!!!!!
Απάντηση με παράθεση
  #4  
Παλιά 09-04-19, 19:01
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Λοιπόν Νικόλα, πάμε μεθοδικά να το κάνουμε σωστά.

Κατ' αρχάς θα πρέπει να κάνεις το βιβλίο .xlsm, για να δέχεται κώδικα.

Ο Πίνακας στο αγορα, έχει όνομα Πίνακας4, αλλά αυτό μπορεί να μην είναι το πραγματικό όνομα στο καλό βιβλίο σου.
Ο Πίνακας στο αποθήκη, έχει όνομα Πίνακας3, αλλά ούτε αυτό μπορεί να μην είναι το πραγματικό όνομα στο καλό βιβλίο σου.
Προς το παρών θα τους λέμε με αυτά τα ονόματα...

Πάμε στο αγορά και στον Πίνακα4, και ονομάζουμε την στήλη Κ (τεμάχια) = ColTarget

Πάμε στον κώδικα (Alt + F11) και στο φύλλο, αγορά αντιγράφουμε αυτό:
Κώδικας:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub

    Dim rng         As Range
    Set rng = Me.Range("ColTarget")

    If Intersect(Target, rng) Is Nothing Then Exit Sub

    ResizeTbl
End Sub
Βάζουμε μια module, και σε αυτήν αντιγράφουμε αυτό:
Κώδικας:
Sub ResizeTbl()
    Dim tbl1        As ListObject
    Dim tbl2        As ListObject
    'Όνομα πρώτου πίνακα στο αγορα
    Set tbl1 = Sheet1.ListObjects("Πίνακας4")
    'Όνομα δεύτερου πίνακα στο αποθηκη
    Set tbl2 = Sheet3.ListObjects("Πίνακας3")

    Dim strCol      As String
    Dim endCol      As String
    Dim c           As Long
    strCol = Split(tbl2.ListColumns(1).Range.Address, "$")(1)
    c = tbl2.DataBodyRange.Columns.Count
    endCol = Split(tbl2.ListColumns(c).Range.Address, "$")(1)

    Dim lRows       As Long
    lRows = tbl1.DataBodyRange.Rows.Count

    Dim HeadRow     As Long
    HeadRow = tbl2.HeaderRowRange.Row

    Dim tRow        As Byte
    Dim rRows       As Long
    On Error Resume Next
    tRow = tbl2.TotalsRowRange.Rows.Count
    On Error GoTo 0

    rRows = lRows + HeadRow + tRow

    tbl2.Resize Range(strCol & HeadRow & ":" & endCol & rRows)
End Sub
Τώρα
Στις θέσεις των ονομάτων πινάκων (κόκκινα)
βάζουμε τα πραγματικά ονόματα του «καλού» βιβλίου.
Στις θέσεις των ονομάτων φύλλων (μπλε)
βάζουμε τα πραγματικά κωδικά ονόματα των φύλλων του «καλού» βιβλίου.

Εκτέλεση
Βάζουμε στον Πίνακα 4, μια νέα γραμμή στο τέλος.
Πληκτρολογούμε ό,τι θέλουμε και
όταν πληκτρολογήσουμε στην στήλη Κ (ονομασμένη) , κάποια τεμάχια, τότε ο Πίνακας 3,
θα πάρει αυτόματα μια νέα γραμμή στο τέλος του.

Σημειώσεις
Προσθήκη νέας γραμμής στον 4, πάντα στο τέλος, πριν τα σύνολα
Προσθήκη αυτόματης γραμμής στον 3,
με την ολοκλήρωση πληκτρολόγησης στην στήλη Κ = ColTarget (Enter)
Το πόσες στήλες έχουν οι πίνακες, αδιάφορο (το χειρίζεται ο κώδικας)
Το αν έχουν γραμμή συνόλων, αδιάφορο (το χειρίζεται ο κώδικας)
Το αν υπάρχουν κι άλλοι πίνακες στα ίδια φύλλα, αδιάφορο

Στην εικόνα, βλέπεις που θα βρεις τα κωδικά ονόματα φύλλων.
Είναι αυτά που είναι έξω από την παρένθεση

Δοκίμασε και τα λέμε...
Συνημμένα Thumbnails
πίνακες με συγχρονισμένη αλλαγή μεγέθους-screenshot_1.jpg  
Απάντηση με παράθεση
  #5  
Παλιά 09-04-19, 19:38
Όνομα: Νικόλας
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-04-2019
Μηνύματα: 4
Προεπιλογή

Ευχαριστώ για την βοήθεια, θα κάνω την εφαρμογή και θα ενημερώσω για το αποτέλεσμα.
Απάντηση με παράθεση
  #6  
Παλιά 09-04-19, 21:57
Όνομα: Νικόλας
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-04-2019
Μηνύματα: 4
Wink

Παράθεση:
Αρχική Δημοσίευση από Spirosgr Εμφάνιση μηνυμάτων
Λοιπόν Νικόλα, πάμε μεθοδικά να το κάνουμε σωστά.

Κατ' αρχάς θα πρέπει να κάνεις το βιβλίο .xlsm, για να δέχεται κώδικα.

Ο Πίνακας στο αγορα, έχει όνομα Πίνακας4, αλλά αυτό μπορεί να μην είναι το πραγματικό όνομα στο καλό βιβλίο σου.
Ο Πίνακας στο αποθήκη, έχει όνομα Πίνακας3, αλλά ούτε αυτό μπορεί να μην είναι το πραγματικό όνομα στο καλό βιβλίο σου.
Προς το παρών θα τους λέμε με αυτά τα ονόματα...

Πάμε στο αγορά και στον Πίνακα4, και ονομάζουμε την στήλη Κ (τεμάχια) = ColTarget

Πάμε στον κώδικα (Alt + F11) και στο φύλλο, αγορά αντιγράφουμε αυτό:
Κώδικας:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub

    Dim rng         As Range
    Set rng = Me.Range("ColTarget")

    If Intersect(Target, rng) Is Nothing Then Exit Sub

    ResizeTbl
End Sub
Βάζουμε μια module, και σε αυτήν αντιγράφουμε αυτό:
Κώδικας:
Sub ResizeTbl()
    Dim tbl1        As ListObject
    Dim tbl2        As ListObject
    'Όνομα πρώτου πίνακα στο αγορα
    Set tbl1 = Sheet1.ListObjects("Πίνακας4")
    'Όνομα δεύτερου πίνακα στο αποθηκη
    Set tbl2 = Sheet3.ListObjects("Πίνακας3")

    Dim strCol      As String
    Dim endCol      As String
    Dim c           As Long
    strCol = Split(tbl2.ListColumns(1).Range.Address, "$")(1)
    c = tbl2.DataBodyRange.Columns.Count
    endCol = Split(tbl2.ListColumns(c).Range.Address, "$")(1)

    Dim lRows       As Long
    lRows = tbl1.DataBodyRange.Rows.Count

    Dim HeadRow     As Long
    HeadRow = tbl2.HeaderRowRange.Row

    Dim tRow        As Byte
    Dim rRows       As Long
    On Error Resume Next
    tRow = tbl2.TotalsRowRange.Rows.Count
    On Error GoTo 0

    rRows = lRows + HeadRow + tRow

    tbl2.Resize Range(strCol & HeadRow & ":" & endCol & rRows)
End Sub
Τώρα
Στις θέσεις των ονομάτων πινάκων (κόκκινα)
βάζουμε τα πραγματικά ονόματα του «καλού» βιβλίου.
Στις θέσεις των ονομάτων φύλλων (μπλε)
βάζουμε τα πραγματικά κωδικά ονόματα των φύλλων του «καλού» βιβλίου.

Εκτέλεση
Βάζουμε στον Πίνακα 4, μια νέα γραμμή στο τέλος.
Πληκτρολογούμε ό,τι θέλουμε και
όταν πληκτρολογήσουμε στην στήλη Κ (ονομασμένη) , κάποια τεμάχια, τότε ο Πίνακας 3,
θα πάρει αυτόματα μια νέα γραμμή στο τέλος του.

Σημειώσεις
Προσθήκη νέας γραμμής στον 4, πάντα στο τέλος, πριν τα σύνολα
Προσθήκη αυτόματης γραμμής στον 3,
με την ολοκλήρωση πληκτρολόγησης στην στήλη Κ = ColTarget (Enter)
Το πόσες στήλες έχουν οι πίνακες, αδιάφορο (το χειρίζεται ο κώδικας)
Το αν έχουν γραμμή συνόλων, αδιάφορο (το χειρίζεται ο κώδικας)
Το αν υπάρχουν κι άλλοι πίνακες στα ίδια φύλλα, αδιάφορο

Στην εικόνα, βλέπεις που θα βρεις τα κωδικά ονόματα φύλλων.
Είναι αυτά που είναι έξω από την παρένθεση

Δοκίμασε και τα λέμε...
Δουλεύει άψογα..!!
Έχω την εντύπωση πως με κώδικα πολλαπλασιάζονται οι δυνατότητες στο excel.
Ευχαριστώ γισ την βοήθεια....!!!!!!
Απάντηση με παράθεση
  #7  
Παλιά 10-04-19, 07:30
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλή συνέχεια, Νικόλα.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Μορφοποίηση] Αλλαγή Γραμματοσειράς & Μεγέθους xristos Excel - Ερωτήσεις / Απαντήσεις 5 23-08-18 20:12
[Excel07] Μείωση μεγέθους βιβλίου excel Γιώργος Κ. Excel - Ερωτήσεις / Απαντήσεις 9 17-01-14 23:32
[Excel07] Αυτόματη αναπροσαρμογή μεγέθους κελιού στο Excel George R Excel - Ερωτήσεις / Απαντήσεις 3 02-08-13 12:52
[VBA] Msgbox αλλαγή μεγέθους γραμματοσειράς και χρώματος anestaki Excel - Ερωτήσεις / Απαντήσεις 1 25-10-12 16:40


Η ώρα είναι 02:09.