Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

ho un problema a nascondi righe dinamiche in base al contenuto.

Ultimo Aggiornamento: 04/12/2019 20:10
Post: 1
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
01/12/2019 22:08

Salve sono nuovo del forum, avrei neccessita' di nascondere un intervallo di righe nel foglio attivo in base al contenuto "vero o Falso" .Ovvero dalla riga 1623 alla 1639, come dicevo ,avendo neccessita' di cancellare o inserire nuove righe queste cambiano la loro posizione di origine continuamente.
ho fatto svariate prove ma non sono molto esperto del vba.
se qualcuno puo' aiutarmi!!??
grazie

Post: 1
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
01/12/2019 22:17

precisazione
una precizazione lavorando in un foglio che in seguito dovro' copiare e rinominare dovrei lavorare sul foglio attivo.
Post: 3.565
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
02/12/2019 08:38

Buona giornata, Fabrizio;
sarebbe opportuno allegassi un File (senza Dati sensibili) con alcuni Record significativi già inseriti e chiarissi ciò che desideri ottenere.

Questo eviterebbe a chi desidera aiutarti dover ricostruire una probabile struttura con il rischio di non centrare l'obiettivo.



Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
02/12/2019 18:50

Inanzitutto GRAZIE.!!
Come richiesto ho allegato il file neccessario per capire la mia richiesta.
Nel file ho scoperto tutte le colonne , ma non tutte le righe.

Dalla riga 1625 alla 1641 appaiono delle categorie riassuntive.(...importi...incidenze..)
Quindi ho riservato in queste righe che di mano a mano
che inserisco delle categorie tra le varie voci queste si vanno a comporre.
Dalla cella "ab1625" alla "ab1641" ho inserito la formula Val.numero per identificare quali righe sono piene e quali vuote.
E come accennavo di man in mano che inserisco nuove righe nel foglio o le dovessi eliminare queste ovviamente cambiano la loro posizione.
Inoltre avrei l'esigenza di copiare il foglio ovviamente cambiandogli il nome Es 'Sal2', senza perdere la dinamicita' della formula.
In sostanza la mia richiesta sarebbe quella di nascondere in automatico quelle righe che risultano "FALSO" e quindi vuote.


GRAZIE...
Post: 3.568
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
02/12/2019 20:44

Buona sera, Fabrizio.

@fabrizio.ExcelForum, scrive:


... In sostanza la mia richiesta sarebbe quella di nascondere in automatico quelle righe che risultano "FALSO" e quindi vuote.



Non sono certo di aver interpretato correttamente la tua richiesta; azzarderei questo Codice VBA

Option Explicit
Option Compare Text

Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
    Dim NrR As Long, x As Long
        Range(Cells(1, 1), Cells(5000, 1)).EntireRow.Hidden = False
        NrR = Range("B" & Rows.Count).End(xlUp).Row
            Range(Cells(5, 1), Cells(1621, 1)).EntireRow.Hidden = True
            Range(Cells(1624, 1), Cells(NrR, 1)).EntireRow.Hidden = True
            For x = 1625 To NrR
                If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
            Next x
Application.ScreenUpdating = True
End Sub

Fai sapere se posso aiutarti più adeguatamente.


A disposizione.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
03/12/2019 18:48

Salve Giuseppe, grazie per l'aiuto!!
ho provato il codice e ho visto che sta funzionando, pero' nella mia esigenza il codice dovrebbe agire dalla riga 1625 alla 1641, lasciando invariate le righe dalla n1 alla 1624.
GRAZIEE
Post: 4.188
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/12/2019 19:00

a questo punto potresti provare a modificare tu il codice in base alle tue esigenze

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 4
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
03/12/2019 19:12

Be non sono molto esperto del vba e questo codice per me è come l'arabo...
Io sono ancora alle prime armi..
HELP!!!
Post: 3.571
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
03/12/2019 19:15

Buona sera, Fabrizio;
per seguire il consiglio di @patel45, che saluto e ringrazio per l'attenzione, potresti considerare che il comando:

 Range(Cells(5, 1), Cells(1621, 1)).EntireRow.Hidden = True 

nasconde le Righe dalla 5 alla 1621.

Analogamente per l'istruzione successiva.

Modifica i Riferimenti secondo le tue reali necessità.



A disposizione.

Buona serata.

Giuseppe
[Modificato da GiuseppeMN 03/12/2019 21:52]

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 5
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
03/12/2019 19:30

SALVE!
ho fatto questa modifica e il risultato mi soddisfa, unica cosa è che inserisco o elimino delle righe questi riferimenti vengono a cambiare.
Come dare i riferimenti che non abbiamo a cambiare ?
cioè per spiegare se elimino righe poi mi trovo invece della 1625 mi diventa la 1615??

Option Explicit
Option Compare Text

Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long
NrR = Range("B" & Rows.Count).End(xlUp).Row
Range(Cells(1625, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = 1625 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub

grazie ancora!!!
Post: 3.572
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
03/12/2019 21:52

Buona sera, Fabrizio.

Credo si debba trovare la Riga dalla quale partire; potresti provare con un Codice VBA di questo tipo:

Option Explicit
Option Compare Text

Sub Trova_prima_Riga()
Application.ScreenUpdating = False
    Dim NrR As Long, x As Long
    
        NrR = Range("C" & Rows.Count).End(xlUp).Row
            For x = 1 To NrR
                If Cells(x, 5).Value = "Importi" Then Exit For
            Next x
                MsgBox x + 1
End Sub

Il valore indicato in MsgBox sarà la riga dalla quale partire; nel tuo esempio originale sarà 1625.

Ora prova ad aggiungere/eliminare un certo numeri di Righe, attiva nuovamente il Codice VBA sopra indicata e vedi cosa succede.



Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 6
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
03/12/2019 22:16

Salve Giuseppe, ho inserito e provato il codice e mi restituisce il messaggio, con la pozizione corretta della riga da cui partire...
Ho provato a cancellare e inserire righe e mi restituisce il messaggio con la posizione esatta.

Post: 7
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
03/12/2019 22:43

Salve Giuseppe ,Ho provato a concludere il codice ma senza risultato...,
è oltre la mia esperienza ..
Post: 3.574
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
03/12/2019 23:40

Buona sera, Fabrizio.

@fabrizio.ExcelForum, scrive:



(in Risposta #12)
Salve Giuseppe, ho inserito e provato il codice e mi restituisce il messaggio, con la pozizione corretta della riga da cui partire...
Ho provato a cancellare e inserire righe e mi restituisce il messaggio con la posizione esatta.

(in Risposta #13)
Salve Giuseppe ,Ho provato a concludere il codice ma senza risultato...,


ok, vista la tua buona volontà, vediamo di fare un passo avanti assieme: prova a considerare di anteporre al Codice VBA che "nasconde le Righe proposto in Risposta #5" il Codice VBA proposto in Risposta #11 avendo l'avvertenza di sostituire la Variabile "x" con altra Variabile, supponiamo "y".

A questo punto y+1 identificherà la Riga dalla quale partire; se sostituisci il Ciclo:

 For x = 1625 To NrR 

con il Ciclo:

 For x = y+1 To NrR 

Sinceramente non ho condotto dei Test appropriati ma dovrebbe funzionare correttamente.



Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 8
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
04/12/2019 14:05

Salve Giuseppe ho provato , ma purtroppo non capisco come antepore il codice; copio un codice e poi l'altro con le modifiche di cui parlavi,ma non mi funziona, basta una virgola di troppo e non funziona.
Mi potresti scrivere il codice corretto??
grazie
Post: 3.575
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
04/12/2019 16:46

Buona sera, Fabrizio;
pensavo ad un Codice VBA di questo tipo:

Option Explicit
Option Compare Text

Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
    Dim NrR As Long, x As Long, y As Long
        Range(Cells(1, 1), Cells(5000, 1)).EntireRow.Hidden = False
        NrR = Range("B" & Rows.Count).End(xlUp).Row
            For y = 1 To NrR
                If Cells(y, 5).Value = "Importi" Then Exit For
            Next y
				Range(Cells(y + 1, 1), Cells(NrR, 1)).EntireRow.Hidden = True
            For x = y + 1 To NrR
                If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
            Next x
Application.ScreenUpdating = True
End Sub

Da testare sul tuo File reale.


Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 9
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
04/12/2019 20:07

Grazie Giuseppe!!
Option Explicit
Option Compare Text

Sub Analizza_Falso_Vero()
Application.ScreenUpdating = False
Dim NrR As Long, x As Long, y As Long

NrR = Range("B" & Rows.Count).End(xlUp).Row
For y = 1 To NrR
If Cells(y, 5).Value = "Importi" Then Exit For
Next y
Range(Cells(y + 1, 1), Cells(NrR, 1)).EntireRow.Hidden = True
For x = y + 1 To NrR
If Cells(x, 28).Value = "VERO" Or Cells(x, 28).Value = "" Then Cells(x, 28).EntireRow.Hidden = False
Next x
Application.ScreenUpdating = True
End Sub

Ho fatto una piccola modfica al codice e adesso funziona tutto!
Post: 10
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
04/12/2019 20:10

GRAZIE TANTE GIUSEPPE da solo non sarei riuscito!!
Vota: 15MediaObject5,00118 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 03:16. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com