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

Come impostare un controllo combinato

Ultimo Aggiornamento: 28/05/2022 22:57
Post: 1
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
22/05/2022 22:06

Salve, premetto che sono provetto e per nulla pratico ma imparo alla svelta...
vorrei sottoporvi due necessità su cui non riesco a trovare la giusta soluzione

1) gestisco su foglio excel dei corsi di informatica in una scuola. Si tratta di una banale matrice le cui varie colonne che contengono alcune stringhe ed alcune delle date. Dovendo assegnare a ciascun insegnate non più di due classi al giorno per la sua lezione e dovendo assegnare i corsi a turnazione, cioè non necessariamente nello stesso momento...
c'è una funzione vba oppure una formattazione condizionale oppure una funzione di convalida dati che mi avvisi o mi impedisca di attrbuire un numero maggiore di corsi allo stesso insegnante nella medesima data rispetto a quello da me stabilito?

2) il secondo foglio excel conseguente al primo di cui sopra riepiloga giornalmente le classi che occupano l'aula. Premesso che ho creato una piccola macro che mi duplica, sposta in coda e rinomina tanti fogli quante sono le classi gestite è possibile creare un comando che mi sostituisca la formula di formattazione condizionale [ =VAL.NUMERO(RICERCA("1^ - A";A4)) ] colorando poi lo sfondo o il carattere di modo che si veda subito quante volte al mese occupa l'aula?

Grazie 😉





Post: 6.808
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
23/05/2022 07:40

Ciao Inserisci un esempio togliendo dati sensibili, almeno si ha una base su cui lavorare.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
24/05/2022 11:45

ecco il file di esempio del problema al punto uno.

Grazie
Post: 122
Registrato il: 27/12/2016
Città: SIENA
Età: 50
Utente Junior
Office 2019/Office 365
OFFLINE
24/05/2022 14:55

Ciao,
per quanto riguarda la formattazione condizionale che controlla il nome e la data di lezione potrebbe andare bene la soluzione allegata?

La convalida dati mi risulta più difficile perché è possibile bypassare il controllo con copia incolla ecc, comunque ti allego quesllo che avevo pensato.

Per il secondo foglio servirebbe vedere come è impostato e se la macro incolla solo i valori o costituisce anche i formati delle celle. se lo alleghi penso che si possa tirare fuori qualcosa



---
pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
Post: 2
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
24/05/2022 21:08

duccio.73, 24/05/2022 14:55:

Ciao,
per quanto riguarda la formattazione condizionale che controlla il nome e la data di lezione potrebbe andare bene la soluzione allegata?

La convalida dati mi risulta più difficile perché è possibile bypassare il controllo con copia incolla ecc, comunque ti allego quesllo che avevo pensato.

Per il secondo foglio servirebbe vedere come è impostato e se la macro incolla solo i valori o costituisce anche i formati delle celle. se lo alleghi penso che si possa tirare fuori qualcosa




Grazie, l'ho testata sul file di prova che ho messo e direi che va alla grande. E' una formula fuori dalla mia portata cercherò di capire com'è strutturata per imparare a costruirne di simili.

Ho trovato anche una seconda regola di formattazione condizionale che coinvolge le colonne i e j ma non ho capito se è fatta per test o meno.

Per il secondo foglio mi sto attrezzando, a breve lo caricherò. 👍
Post: 123
Registrato il: 27/12/2016
Città: SIENA
Età: 50
Utente Junior
Office 2019/Office 365
OFFLINE
25/05/2022 08:48

ciao,
si' la formattazione condizionale nella colonna I era solo una prova.
Per quanto riguarda la formula è conta.più.se in pratica unisce diversi conta.se

la sintassi è CONTA.PIÙ.SE(intervallo_criteri1; criteri1; [intervallo_criteri2; criteri2]…)

https://support.microsoft.com/it-it/office/funzione-conta-pi%C3%B9-se-dda3dc6e-f74e-4aee-88bc-aa8c2a866842

e dà come risultato il numero di volte che sono soddisfatti entrambi i requisiti (i range da controllare devono essere di uguale dimensione)

Nella formattazione condizionale ho controllato se il valore è maggiore 2
Nella convalida dati invece ho messo che può essere inserito la cella solo se il valore del conta.più.se è minore di 2 (la formattazione condizionale è applicata sia sulla data che sul nome).
Purtroppo con un banale copia incolla si bypassa la convalida dati

spero di esserti stato utile
---
pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
Post: 3
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
25/05/2022 09:19

Ciao, applicandola al mio file originale comincio a capire come funziona. Una cosa non mi è chiara ma ne posso fare a meno anche se lo trovo molto utile. nel tuo file quando faccio la prova compare questo pop up

nel mio no.

per quanto riguarda il secondo esempio ho allegato il file e specifico che la mia necessità (che ammetto essere ambiziosa) sarebbe che la macro lanciata oltre a duplicare i fogli mi adegui la formattazione condizionale sugli stessi in modo che su ogni foglio io riesca a vedere evidenziati i turni di quella scuola.

PS: il file non era nelle tipologie supportate di default speriamo che si legga



Post: 125
Registrato il: 27/12/2016
Città: SIENA
Età: 50
Utente Junior
Office 2019/Office 365
OFFLINE
25/05/2022 16:31

Ciao,
è la convalida dati delle celle, come ho detto è un aiuto per l'inserimento ma non evita errori

Selezionare la cella o le celle per cui si vuole creare una regola.
Selezionare Dati > Convalida dati.
Nella scheda Impostazioni selezionare un'opzione in Consenti: ...
In Dati selezionare una condizione.
Impostare gli altri valori necessari in base all'opzione scelta in Consenti e in Dati.

Puoi anche cambiare quella impostata

Se ricordo bene se copi la cella da un foglio all'altro dovrebbe copiare anche la convalida dati ma non ci giurerei

Per il secondo foglio non ho capito bene, c'e' il calendario e un nome, come metti insieme le aule e chi le occupa? Come vorresti colorarle?
---
pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
Post: 4
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
27/05/2022 12:32

Ciao ora ho capito. Però no, copiando la formula della formattazione non copia anche la convalida dati.

Per il secondo figlio “tabellone” vi è una regola per cui vengono evidenziati tutti i corsi della scuola alfa (es. alfa 1 in rosso e alfa 2 in verde)

Nel foglio vi è anche impostata una macro che duplica “n” volte il foglio tabellone e a ciascun nuovo foglio gli attribuisce il nome di una scuola in modo da avere i figli in questo modo: “tabellone”; “Alfa”; “beta”; “gamma”.

Io vorrei trovare il sistema (anche con vba) affinché anche sui nuovi fogli venga applicata la colorazione come per il foglio “tabellone” così da avere sul foglio alfa la colorazione di tutti gli alfa, sul foglio beta la colorazione di beta e così via.

Magari non è nemmeno possibile farlo però chiedo 🙈
[Modificato da Provetto_FG 27/05/2022 12:33]
Post: 127
Registrato il: 27/12/2016
Città: SIENA
Età: 50
Utente Junior
Office 2019/Office 365
OFFLINE
27/05/2022 17:15

Ciao,
per quanto riguarda il copia incolla con la convalida dati a me funziona, non è che le copi in colonne differenti e perde i riferimenti?

per il secondo foglio ci sono varie possibilità:

1) imposti la formattazione condizionale all'inizio e invece di impostare la macro per il copia-incolla fai incollare solo i valori (attenzione funziona solo senza celle unite)

incolla valori
Sub Macro3()
    Sheets("tabellone").Select
    Range("A3:AV33").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("ITC ALFA").Select
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("ITC BETA").Select
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("ITIC GAMMA").Select
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub


2) modifichi la tua macro facendo cancellare la vecchia formattazione condizionale e mettendone una nuova

formatta
Sub Duplica2()
    
Dim myrange As Range
    
    Sheets("tabellone").Select
    Sheets("tabellone").Copy After:=Sheets(1)
    Sheets(2).Name = "ITC ALFA"
    
    Sheets("ITC ALFA").Activate
    Set myrange = ActiveSheet.Range("A1:BB33")
    
    myrange.FormatConditions.Delete
    
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="ALFA 1")
        .Interior.Color = RGB(255, 0, 0)
    End With
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="ALFA 2")
        .Interior.Color = RGB(0, 255, 0)
    End With
    Sheets("tabellone").Select
    Sheets("tabellone").Copy After:=Sheets(2)
    Sheets(3).Name = "ITIC BETA"
    Sheets("ITIC BETA").Activate
    Set myrange = ActiveSheet.Range("A1:BB33")
    
    myrange.FormatConditions.Delete
    
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="BETA 1")
        .Interior.Color = RGB(255, 0, 0)
    End With
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="BETA 2")
        .Interior.Color = RGB(0, 255, 0)
    End With
    Sheets("tabellone").Select
    Sheets("tabellone").Copy After:=Sheets(3)
    Sheets(4).Name = "ITIC GAMMA"
    Sheets("ITIC GAMMA").Activate
    Set myrange = ActiveSheet.Range("A1:BB33")
    myrange.FormatConditions.Delete
    
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="GAMMA 1")
        .Interior.Color = RGB(255, 0, 0)
    End With
    With myrange.FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="GAMMA 2")
        .Interior.Color = RGB(0, 255, 0)
    End With
    
End Sub


3) utilizzando dei cicli for-next fai controllare i valori e cambi lo sfondo ma qui servirebbe sapere il numero di classi, come vengono divise ecc (a meno di non mettere tutto in un foglio e colorare le classi in modo diverso e non era la tua richiesta)
---
pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
Post: 5
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
28/05/2022 14:19

Ok, ora mi ci metto con calma e faccio le prove di tutto.

Per il secondo foglio avrei al massimo 10 scuole (alfa, beta, gamma ecc) e per ogni scuola non più di 5 corsi quindi alfa 1, alfa 2, alfa e ecc ecc.

faccio sapere come va.
Grazie
Post: 6
Registrato il: 22/05/2022
Età: 52
Utente Junior
2010
OFFLINE
28/05/2022 22:57

Ciao Duccio, ho optato per la soluzione nr. 2 dato che avevo già impostato da solo la macro e ci sono alcune celle unite.
Funziona tutto alla grandissima e non solo, ho anche apportato una modifica e aggiunto il comando per cambiare il colore del testo delle celle che vado a modificare per ciascun foglio.

Come ti dicevo mi serviva gestire in totale 10 scuole con un numero di classi variabili, la macro è molto lenta ma suppongo dipenda dalla miriade di comandi che deve eseguire.
Va bene così, grazie dell'aiuto😉
Vota:
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 12:28. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com