aggiunta righe



  • aggiunta righe
    di mariosilla (utente non iscritto) data: 22/03/2013 16:31:54

    Buongiorno. Ho questo quesito da porre:

    ho un foglio excel con queste colonne:
    codice - descirzione - seriale - quantita

    Per necessita avrei bisogno che ove la colonna quantita contenga un valore diverso da 1 e superiore a 0
    i relativi codice descrizione seriale e quantita vengano splittati su tante righe quanto è il valore contenuto nella colonna quantita.

    Esempio:

    Codice descrizione seriale quantita
    102255 Rosa Rossa AB5554TV 2

    diventi:

    Codice descrizione seriale quantita
    102255 Rosa Rossa AB5554TV 1
    102255 Rosa Rossa AB5554TV 1


    E' possibile ?

    Grazie

    MarioSilla




  • di Vecchio Frac data: 22/03/2013 16:48:02

    Incolla il codice che segue nel foglio dove risiede la tabella (foglio1?)
    Questo codice:
    - intercetta il cambiamento del numero che indica la quantità (colonna D)
    - se questo numero è > 1 allora
    ---- inserisce una riga vuota subito sotto
    ---- ci copia il contenuto della riga sopra (quella di cui abbiamo cambiato la quantità)

    Questo avviene dinamicamente, cioè al variare del valore di quantità in colonna D.
    Ma ti sarà facile trasformare queste righe in una sub statica da lanciare autonomamente se per caso avessi l'elenco già fatto e volessi soltanto duplicare le righe dove quantità > 1.
     
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
        If Target.Column = 4 And Target.Row > 1 Then
            
            If Target > 1 Then
                
                Application.EnableEvents = False
                    
                    For i = 1 To Target - 1
                        Target.Offset(1).EntireRow.Insert shift:=xlShiftDown
                        Target.EntireRow.Copy Target.Offset(1).EntireRow
                    Next
            
                Application.EnableEvents = True
            
            End If
        
        End If
    End Sub






  • di mariosilla (utente non iscritto) data: 25/03/2013 11:04:16

    Ciao. Prima di tutto ringrazio per la risposta.
    Tieni conto che sono completamente a digiuno per quanto riguarda Visual Basic.
    Ho provato ad incollare in una macro quanto mi hai indicato. Mandandola in esecuzione mi da questo errore:
    option explicit non valido all'interno di una routine.

    Evidentemente ho sbagliato in qualche cosa.

    Roberto
     
    Sub splitta()
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
        If Target.Column = 4 And Target.Row > 1 Then
            
            If Target > 1 Then
                
                Application.EnableEvents = False
                    
                    For i = 1 To Target - 1
                        Target.Offset(1).EntireRow.Insert shift:=xlShiftDown
                        Target.EntireRow.Copy Target.Offset(1).EntireRow
                    Next
            
                Application.EnableEvents = True
            
            End If
        
        End If
    
    End Sub
    



  • di totygno71 data: 25/03/2013 11:18:01

    Togli la prima riga

    Sub splitta() PER CAPIRCI...



  • di totygno71 data: 25/03/2013 11:44:04

    Se vuoi lanciarla da una macro invece
     
    Option Explicit
    Sub splitta()
    Dim i As Integer
    
        If Target.Column = 4 And Target.Row > 1 Then
            
            If Target > 1 Then
                
                Application.EnableEvents = False
                    
                    For i = 1 To Target - 1
                        Target.Offset(1).EntireRow.Insert shift:=xlShiftDown
                        Target.EntireRow.Copy Target.Offset(1).EntireRow
                    Next
            
                Application.EnableEvents = True
            
            End If
        
        End If
    
    End Sub