Risolto coprire le righe in base a un valore che inserisco in una cella

Roberto667

Nuovo utente
Original poster
22 Aprile 2025
11
0
1
Saronno
2024
Buongiorno ho un file di controllo che in base al numero di pezzi che devo controllare alcune righe si devono nascondere, esempio se digito 5 mi deve lasciare visibile solo 5 righe da un determinato intervallo, ho aperto questa discussione nella sezione formule e funzioni ma perchè non so se basta una formattazione o serve macro, dato che non mi è semplice spiegare preferisco allegare il file, ho un altro dubbio perchè il file risulta con macro ma non la vedo
 

Allegati

  • esempio.xlsm
    66,9 KB · Visite: 7

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
75.563
7.990
2.445
71
Napoli
Office 365
Nascondere/scoprire righe non lo fai con le formule occorre il VBA.

Sposto la discussione.

Il file è un .xlsm perchè c'è questa macro

Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngV As Range, rngC As Range
 
    If Not Intersect(Target, Range("I7, I26, I45")) Is Nothing Then
        Set rngV = Range("O" & Target.Row + 3 & ":O" & Target.Row + 17)
        For Each rngC In rngV
            rngC.EntireRow.Hidden = (rngC.Value > Target.Cells(1, 1).Value)
        Next rngC
    End If
 
End Sub

In I162 c'è una formula (=I8) quindi non ci puoi inserire nulla senza cancellare la formula.

Vuoi spiegare meglio?

In quale cella si deve inserire il numero delle righe che devono restare visibili?

In ogni caso ci sono le celle unite in colonne A/B quindi come fai a nascondere le righe nelle colonne K:T?

Prova tu a farlo manualmente e vedi se riesci ad ottenere il risultato che ti prefiggi.

Dovresti riprogettare il foglio eliminando tutte le celle unite.

A molti sfugge la differenza (fondamentale) che c'è tra i dati (database di input) e la reportistica (output da stampare).

Il database deve essere formato da campi (colonne) e record (righe) senza spazi/celle vuote nè celle unite.

La reportistica (che prende i dati dal database) può essere organizzata tenendo conto delle motivazioni "estetiche" e quindi le celle unite sono possibili.

In definitiva se vuoi mantenere le celle unite secondo me devi rinunciare a nascondere le righe.

Ma poi per quel motivo vuoi nasconderle?
 
Ultima modifica:

Roberto667

Nuovo utente
Original poster
22 Aprile 2025
11
0
1
Saronno
2024
la necessità di nascondere le righe è per evitare di dover scorrere righe inutili, in base alla quantità in arrivo i pezzi da controllare possono essere da 2 a 125(ogni pz da controllare è una riga), allego file esempio 2, dovrebbe avere la stessa macro che hai trovato ma che io non riesco a visualizzare ( mi può indicare come hai fatto, ho provato in tutti i modi anche con ricerche su web ma non la vedo) questo file funziona come volevo io ma ha solo al max 15 righe, se inserisci un valore da 1 a 15 nelle celle I7, I26, I45 e le righe si adeguano, se riesco a vedere la macro magari con un pò di pazienza ci arrivo da solo
 

Allegati

  • esempio 2.xlsm
    69,7 KB · Visite: 4

Roberto667

Nuovo utente
Original poster
22 Aprile 2025
11
0
1
Saronno
2024
dopo 3 ore sono riuscito a capire che basta inserire il comando visual basic sulla barra di accesso rapido, adesso seguirò i tuoi consigli per correggere il file
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
75.563
7.990
2.445
71
Napoli
Office 365
Devi mostrare nel concreto come hai risolto pubblicando la soluzione ed assegnando la coppa al post
 

Roberto667

Nuovo utente
Original poster
22 Aprile 2025
11
0
1
Saronno
2024
Ecco il file funzionante, grazie ancora per il consiglio e mi scuso per non aver gestito al meglio la discussione, sono ancora un novello.
Non capisco perché non c'è l'allegato ho riprovato ma mi dice che è troppo grosso.

[eliminato il file]​
 
Ultima modifica di un moderatore:

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
75.563
7.990
2.445
71
Napoli
Office 365
La soluzione la devi scrivere nel post non solo n l’allegato.

Il forum è consultabile anche da mobile e da cell non si ha accesso all’editor VBA per vedere codice nè si vedono eventuali formule inserite.
 

Roberto667

Nuovo utente
Original poster
22 Aprile 2025
11
0
1
Saronno
2024
per coprire un determinato numero di righe in base a un numero indicato in una determinata cella occorre una VBA, nel file allegato il range di righe è da 1 a 125, nello specifico se si inserisce, nelle celle I7, I136, I265, dei valori la VBA provvederà a lasciare scoperte solo il numero righe (esempio: digitando 10 nella cella I7 resteranno scoperte 10 righe), il comando Set rngV = Range("O" & Target.Row + 3 & ":O" & Target.Row + 127) serve a definire da quale riga iniziare a applicare la regola, il +3 in questo caso fa in modo che le prime tre righe non vengano conteggiate dal valore iniziale (esempio: digitando 10 nella cella I7 resteranno scoperte 10 righe+3 righe)


la VBA completa è la seguente,
Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngV As Range, rngC As Range
   
    If Not Intersect(Target, Range("I7, I136, I265")) Is Nothing Then
        Set rngV = Range("O" & Target.Row + 3 & ":O" & Target.Row + 127)
        For Each rngC In rngV
            rngC.EntireRow.Hidden = (rngC.Value > Target.Cells(1, 1).Value)
        Next rngC
    End If
       
End Sub

allego file zippato con tutte le indicazioni
 

Allegati

  • esempio3.zip
    86,4 KB · Visite: 7
Ultima modifica di un moderatore:

Terio

Excel/vba Expert
Supermoderatore
6 Gennaio 2021
25.832
5.548
2.345
54
Arce
2016, 2019, 365
R @Roberto667 il codice va messo nei tag, come ti ho mostrato.
Dimmi se i file ai post #7 e 9 sono uguali, perché uno dei due va tolto,
grazie.