Sostituzione valori celle



  • Sostituzione valori celle
    di Mauro 61 (utente non iscritto) data: 05/01/2017 12:25:57

    Buongiorno, ho un problema con il file allegato, vorrei che al momento della Stampa Impianto nella riga 10 al posto del valori "C", "Mal", "VS" e "RF25" venisse scritto il valore "As" senza però modificare il file.
    Grazie per la collaborazione.



  • di Luca73 data: 05/01/2017 13:32:27

    Ciao
    io semplicemente aggiungerei una riga tra la 10 e la 11 (equivalente in forrma e dimensione alla 10) con una formula tipo (da inserire in A11)
    =Se(A10="";"";"Ass") ovvero che viene compilato con Ass solo se la relativa cella sopra è non vuota.
    Questa riga sarà solitamente nascosta.
    Poi nella macro (vedi sotto) di stampa nascondi lla riga 10, scopri la riga 11, stampi e poi viceversa scopri la 10 e nascondi di nuovo la 11.

    Ciao
    Luca
     
    Private Sub CommandButton1_Click()
    
    Worksheets("GEN. 2017").Select
    With Worksheets("GEN. 2017")
        .Rows("11:11").EntireRow.Hidden = False
        .Rows("10:10").EntireRow.Hidden = True
    End With
    Application.ScreenUpdating = False
    
    ActiveWindow.SelectedSheets.PrintOut copies:=1
    Application.ScreenUpdating = True
    
    With Worksheets("GEN. 2017")
        .Rows("11:11").EntireRow.Hidden = True
        .Rows("10:10").EntireRow.Hidden = False
    End With
    
    
    End Sub






  • di alfrimpa data: 05/01/2017 13:34:50

    Ciao Mauro

    Puoi provare con la macro che vedi sotto da inserire in ThisWorkbook (Questa_cartella_di_lavoro).

    Questa esamina tutte le celle della zona A10:AE10 e dove trova un contenuto lo cambia in "As"; non so se era questo quello che volevi.

    Quanto a non modificare il file basta chiuderlo senza salvarlo.

    Alfredo
     
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim rng As Range
    Dim cel As Range
    Set rng = Worksheets("GEN. 2017").Range("A10:AE10")
    For Each cel In rng
        If cel.Value <> "" Then
            cel.Value = "As"
        End If
    Next cel
    End Sub






  • di Mauro 61 (utente non iscritto) data: 05/01/2017 13:54:42

    Grazie innanzitutto però in realtà quello che vedete è un turno di lavoro, i valori che devono essere sostituiti con "As" sono solo quelli che ho indicato e no se la cella e piena o vuota perché se c'è una variazione di turno scrivo nella riga il nuovo turno è quello non va cambiato.
    grazie



  • di Luca73 data: 05/01/2017 14:30:01

    Allora Forse un qualcosa del genere potrebbe funzionare

    Così rimetti tutti i valori a posto anche.
     
    Private Sub CommandButton1_Click()
    
    Worksheets("GEN. 2017").Select
    Dim Rng As Range
    Dim Cel As Range
    Dim Vettore()
    Set Rng = Worksheets("GEN. 2017").Range("A10:AE10")
    ReDim Vettore(1 To Rng.Cells.Count)
    For Each Cel In Rng
        Vettore(Cel.Column) = Cel.Value
        If ((Cel.Value = "C") Or (Cel.Value = "Mal") Or (Cel.Value = "VS") Or (Cel.Value = "RF25")) Then
            Cel.Value = "As"
        End If
    Next Cel
    Application.ScreenUpdating = False
    ActiveWindow.SelectedSheets.PrintOut copies:=1
    Application.ScreenUpdating = True
    For Each Cel In Rng
        Cel.Value = Vettore(Cel.Column)
    Next Cel
    End Sub






  • di Mauro 61 (utente non iscritto) data: 05/01/2017 14:40:12

    Grazie funziona benissimo.



  • di Mauro 61 (utente non iscritto) data: 05/01/2017 15:11:20

    Scusate forse ho cantato vittoria troppo presto vorrei che la stessa cosa la facesse nelle righe 13, 16, 19 e 22 ho provato con il Range ma non mi funziona, poi un'ultima cosa nel valore "RF 25" il numero rappresenta una data perciò variabile esiste un codice che sostituisce il numero (es. "RF x")
    Grazie



  • di Luca73 data: 05/01/2017 15:28:33

    Ciao
    La prossima volta metti insieme tutte le domande subito per favore.
    Così uno si organizza il lavoro senza dover ripartire da capo.

    Prova la soluzione sotto riportata

    Ciao
    Luca
     
    Private Sub CommandButton1_Click()
    
    
    Worksheets("GEN. 2017").Select
    Dim Rng As Range
    Dim Cel As Range
    Dim Vettore()
    Dim Giorni
    Dim Index
    Giorni = 31
    
    ReDim Vettore(1 To 5, 0 To Giorni)
    Vettore(1, 0) = 10
    Vettore(2, 0) = 13
    Vettore(3, 0) = 16
    Vettore(4, 0) = 19
    Vettore(5, 0) = 22
    For Index = 1 To 5
        Set Rng = Worksheets("GEN. 2017").Range(Cells(Vettore(Index, 0), 1), Cells(Vettore(Index, 0), Giorni))
        For Each Cel In Rng
        Cel.Select
            Vettore(Index, Cel.Column) = Cel.Value
            If ((Cel.Value = "C") Or (Cel.Value = "Mal") Or (Cel.Value = "VS") Or (Left(Cel.Value, 2) = "RF")) Then
                Cel.Value = "As"
            End If
        Next Cel
    Next
    Application.ScreenUpdating = False
    ActiveWindow.SelectedSheets.PrintOut copies:=1
    Application.ScreenUpdating = True
    For Index = 1 To 5
        Set Rng = Worksheets("GEN. 2017").Range(Cells(Vettore(Index, 0), 1), Cells(Vettore(Index, 0), Giorni))
        For Each Cel In Rng
            Cel.Value = Vettore(Index, Cel.Column)
        Next Cel
    Next
    
    
    
    End Sub
    






  • di Mauro 61 (utente non iscritto) data: 05/01/2017 15:38:58

    Va bene grazie e scusami.