Excel Forum Per condividere esperienze su Microsoft Excel

Aiuto formula e macro

  • Messaggi
  • OFFLINE
    Mirko Dinelli
    Post: 88
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 18/10/2021 22:15
    Salve a tutti spero di potermi spiegare al meglio....

    In programma lavanderia ho la macro eliminare che praticamente mi elimina in programma lavanderia e sia in tabla de datos la riga corrispondente però in tabla de datos nella colonna A1 ho la formula....che vorrei non fosse cancellata quando gli do cancella...perché se no le formule sottostanti alla formula non mi funzionano più....e possibile cambiare la macro in maniera che cancelli la riga ma no la formula?
    Se no in alternativa è possibile spostare la formula che è in tabla de datos A1 in un altro foglio in maniera che quando gli do cancella mi elimina solo la riga in tabla de datos?
    Ho allegato il file
    [Modificato da Mirko Dinelli 18/10/2021 22:16]
  • OFFLINE
    rollis13
    Post: 1.154
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 19/10/2021 09:06
    Cambia questa parte della macro e vedi se ho capito bene la tua richiesta, così:
    '...
    With MiDato
        'ActiveCell.EntireRow.Delete 'elimina riga intera
        Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, "K")).ClearContents 'elimina parziale
    End With
    '...

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 88
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 13:08
    rollis13, 19/10/2021 09:06:

    Cambia questa parte della macro e vedi se ho capito bene la tua richiesta, così:
    '...
    With MiDato
        'ActiveCell.EntireRow.Delete 'elimina riga intera
        Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, "K")).ClearContents 'elimina parziale
    End With
    '...

    Questa è la parte finale della macro vero? Se non mi sbaglio da ignorante in materia gli hai detto di cancellare solo le celle aperte.....e penso che funzioni...stasera la provo e ti dico...ora ti volevo fare un altra domanda è possibile che quando premo la macro cancella mi cancelli tutti i piumoni con lo stesso numero?
    Se ha visto il file che ho messo quando io cerco il numero del piumone mi dice che c'è ne uno nella fila 1 uno nella fila 10 uno nella fila 12 ecc... perché ora quando gli do cancella se c'è ne sono più di un piumone lui me ne cancella solo uno quindi se c'è ne sono 10 di piumoni gli altri nove mi rimangono in giacenza in tabla de datos...
    Spero tu mi abbia capito e grazie mille per aiutarmi
  • OFFLINE
    Mirko Dinelli
    Post: 89
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 20:12
    rollis13, 19/10/2021 09:06:

    Cambia questa parte della macro e vedi se ho capito bene la tua richiesta, così:
    '...
    With MiDato
        'ActiveCell.EntireRow.Delete 'elimina riga intera
        Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, "K")).ClearContents 'elimina parziale
    End With
    '...

    Ho la metto nel posto sbagliato o non funziona....se vuoi la puoi provare nel file che ho messo poi lo rimetti se funziona così lo scarico
    [Modificato da Mirko Dinelli 19/10/2021 20:14]
  • OFFLINE
    Mirko Dinelli
    Post: 90
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 20:56
    Lho riprovata però così mi cancella tutto in tabla de datos....se vuoi provala sul mio file...
  • OFFLINE
    Mirko Dinelli
    Post: 91
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 21:22
    =SUM(AND('Programa Lavanderia'!$B$9='Tabla de Datos'!B4,'Programa Lavanderia'!$C$9='Tabla de Datos'!C4),A3)

    E possibile mettere questa formula che è in tabla de datos nelle celle da A4 a A2700 in un altro foglio di lavoro così quando clikko su cancella mi cancella normalmente però non mi cancella più la formula?
  • OFFLINE
    rollis13
    Post: 1.155
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 19/10/2021 22:44
    Vedi che prima di dare suggerimenti ne verifico sempre la funzionalità. Nel file che hai allegato non trovo traccia di quanto ti ho suggerito pertanto non sono in grado di dirti dove sbagli.
    In ogni caso, considerato che hai anche chiesto di eliminare tutte le ricorrenze del codice ricercato sostituisci l'intera macro con questa mia versione:
    Option Explicit
    Sub cancellare()
        '
        'FGS-COMPUTACION
        '
        Dim MiDato As Range
        Dim ur     As Long
        Dim cella  As Range
        Application.ScreenUpdating = False
        Set MiDato = Range("B9")
        With Sheets("Tabla de Datos")
            ur = .Range("B" & .Rows.Count).End(xlUp).Row
            Do
                Set cella = .Range("B4:B" & ur).Find(What:=MiDato, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                If Not cella Is Nothing Then
                    .Range("B" & cella.Row & ":K" & cella.Row).ClearContents
                End If
            Loop Until cella Is Nothing
        End With
        Range("B9").Select
        Application.ScreenUpdating = True
      End Sub

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 92
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 22:55
    rollis13, 19/10/2021 22:44:

    Vedi che prima di dare suggerimenti ne verifico sempre la funzionalità. Nel file che hai allegato non trovo traccia di quanto ti ho suggerito pertanto non sono in grado di dirti dove sbagli.
    In ogni caso, considerato che hai anche chiesto di eliminare tutte le ricorrenze del codice ricercato sostituisci l'intera macro con questa mia versione:
    Option Explicit
    Sub cancellare()
        '
        'FGS-COMPUTACION
        '
        Dim MiDato As Range
        Dim ur     As Long
        Dim cella  As Range
        Application.ScreenUpdating = False
        Set MiDato = Range("B9")
        With Sheets("Tabla de Datos")
            ur = .Range("B" & .Rows.Count).End(xlUp).Row
            Do
                Set cella = .Range("B4:B" & ur).Find(What:=MiDato, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                If Not cella Is Nothing Then
                    .Range("B" & cella.Row & ":K" & cella.Row).ClearContents
                End If
            Loop Until cella Is Nothing
        End With
        Range("B9").Select
        Application.ScreenUpdating = True
      End Sub



    Mi da quel messaggio li errore di sintassi poi mi evidenzia quella riga li
  • OFFLINE
    Mirko Dinelli
    Post: 93
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 22:58
    Mirko Dinelli (g_112844723855731154506), 19/10/2021 22:55:



    Mi da quel messaggio li errore di sintassi poi mi evidenzia quella riga li

  • OFFLINE
    Mirko Dinelli
    Post: 94
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 19/10/2021 23:01
    Potresti allegarmi il file magari nel copia incolla mi sbaglia qualcosa bho...non so che dirti....scusa per prima ma non volevo darti alternative ne consigli anche perché ci capisco ben poco....però mi affascina excel
  • OFFLINE
    rollis13
    Post: 1.156
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 19/10/2021 23:35
    L'errore è generato dal copia/incolla dal Forum. Ti basta eliminare tutti i caratteri (invisibili) aggiunti; solitamente li trovi all'inizio della seconda riga, quella segnalata in rosso. Cancella tutto il vuoto davanti alle due righe per andare (quasi) sul sicuro.
    [Modificato da rollis13 19/10/2021 23:36]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 95
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 20/10/2021 00:15
    rollis13, 19/10/2021 23:35:

    L'errore è generato dal copia/incolla dal Forum. Ti basta eliminare tutti i caratteri (invisibili) aggiunti; solitamente li trovi all'inizio della seconda riga, quella segnalata in rosso. Cancella tutto il vuoto davanti alle due righe per andare (quasi) sul sicuro.

    Ci provo però in alternativa c'è la faresti a mettermi il file qui così lo scarico
  • OFFLINE
    rollis13
    Post: 1.157
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 20/10/2021 08:14
    No, mi dispiace, ma ho una vecchia linea internet a consumo e caricare file mi costa una 'botta'.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 96
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 21/10/2021 17:37
    rollis13, 20/10/2021 08:14:

    No, mi dispiace, ma ho una vecchia linea internet a consumo e caricare file mi costa una 'botta'.

    Lho ripulita e ora funziona grazie mille
    Ora volevo chiederti un altra cosa....
    Quando gli do cancella....in tabla de datos le celle sono vuote dove c'era il numero del piumone e il numero della fila....ed era quello che ti ho chiesto...
    Ora E possibile che quelle celle si eliminano invece che rimanere vuote?
    [Modificato da Mirko Dinelli 21/10/2021 18:33]
  • OFFLINE
    rollis13
    Post: 1.158
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 21/10/2021 19:28
    Vediamo se con queste modifiche alle macro si ottiene il risultato che hai chiesto:
    Option Explicit
    Sub cancellare()
        '
        'FGS-COMPUTACION
        '
        Dim MiDato As Range
        Dim ur     As Long
        Dim riga   As Long
        Dim cella  As Range
        Application.ScreenUpdating = False
        Set MiDato = Range("B9")
        If MiDato = "" Then
            MsgBox "Devi indicare un PIUMONE Nº"
            Exit Sub
        End If
        With Sheets("Tabla de Datos")
            ur = .Range("B" & .Rows.Count).End(xlUp).Row
            riga = 4
            Do
                Set cella = .Range("B4:B" & ur).Find(What:=MiDato, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                If Not cella Is Nothing Then
                    .Range("B" & cella.Row & ":K" & cella.Row).ClearContents
                End If
                riga = riga + 1
            Loop Until (cella Is Nothing And riga > ur)
            ur = .Range("A" & .Rows.Count).End(xlUp).Row
            .Sort.SortFields.Clear
            .Sort.SortFields.Add2 Key:=.Range("B4:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending
            .Sort.SortFields.Add2 Key:=.Range("C4:C" & ur), SortOn:=xlSortOnValues, Order:=xlDescending
            With .Sort
                .SetRange Range("B4:K" & ur)
                .Header = xlGuess
                .Apply
            End With
        End With
        Range("B9").Select
        Application.ScreenUpdating = True
        MsgBox "Fatto, cancellato PIUMONE Nº " & MiDato
    End Sub
    [Modificato da rollis13 21/10/2021 19:41]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 97
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 21/10/2021 20:12
    rollis13, 21/10/2021 19:28:

    Vediamo se con queste modifiche alle macro si ottiene il risultato che hai chiesto:
    Option Explicit
    Sub cancellare()
        '
        'FGS-COMPUTACION
        '
        Dim MiDato As Range
        Dim ur     As Long
        Dim riga   As Long
        Dim cella  As Range
        Application.ScreenUpdating = False
        Set MiDato = Range("B9")
        If MiDato = "" Then
            MsgBox "Devi indicare un PIUMONE Nº"
            Exit Sub
        End If
        With Sheets("Tabla de Datos")
            ur = .Range("B" & .Rows.Count).End(xlUp).Row
            riga = 4
            Do
                Set cella = .Range("B4:B" & ur).Find(What:=MiDato, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                If Not cella Is Nothing Then
                    .Range("B" & cella.Row & ":K" & cella.Row).ClearContents
                End If
                riga = riga + 1
            Loop Until (cella Is Nothing And riga > ur)
            ur = .Range("A" & .Rows.Count).End(xlUp).Row
            .Sort.SortFields.Clear
            .Sort.SortFields.Add2 Key:=.Range("B4:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending
            .Sort.SortFields.Add2 Key:=.Range("C4:C" & ur), SortOn:=xlSortOnValues, Order:=xlDescending
            With .Sort
                .SetRange Range("B4:K" & ur)
                .Header = xlGuess
                .Apply
            End With
        End With
        Range("B9").Select
        Application.ScreenUpdating = True
        MsgBox "Fatto, cancellato PIUMONE Nº " & MiDato
    End Sub

    Dove hai scritto questo (Devi indicare un PIUMONE Nº) ci devo mettere io un piumone a caso?
    Anche qui (Fatto, cancellato PIUMONE Nº)
    Ci devo scrivere un piumone a caso?
    Fammi capire
  • OFFLINE
    rollis13
    Post: 1.159
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 21/10/2021 21:49
    Quello che vedi nella macro è la diagnostica a video che comparirà in caso di errore e/o alla fine della cancellazione; nella macro non devi fare niente, al massimo puoi cambiare il testo tra le doppie-virgolette nel caso non ti piaccia quanto ho proposto come testo.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 98
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 21/10/2021 22:43
    rollis13, 21/10/2021 21:49:

    Quello che vedi nella macro è la diagnostica a video che comparirà in caso di errore e/o alla fine della cancellazione; nella macro non devi fare niente, al massimo puoi cambiare il testo tra le doppie-virgolette nel caso non ti piaccia quanto ho proposto come testo.

    Sei un genio grazie mille davvero...come mi piacerebbe vedere un video dove fanno queste macro così.....tu lhai registrata questa macro...se conosci qualche video dove spiegano come farle mi piacerebbe vederle
  • OFFLINE
    rollis13
    Post: 1.160
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 21/10/2021 22:52
    Veramente ho scritto il codice parola per parola aggiungendo o adattando quanto avevi già proposto.
    Per i video non saprei, sicuramente in rete ci sono, personalmente ho iniziato tanti anni fa leggendo e facendo pratica su libri spessi 3 dita e facendo le ore piccole fino a quando non ho imparato la sinstassi e l'uso delle funzioni; magari sono stato anche facilitato essendomi fatto il mazzo a scuola per imparare bene l'inglese.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Mirko Dinelli
    Post: 99
    Registrato il: 03/04/2021
    Età: 24
    Utente Junior
    2019
    00 22/10/2021 14:23
    rollis13, 21/10/2021 22:52:

    Veramente ho scritto il codice parola per parola aggiungendo o adattando quanto avevi già proposto.
    Per i video non saprei, sicuramente in rete ci sono, personalmente ho iniziato tanti anni fa leggendo e facendo pratica su libri spessi 3 dita e facendo le ore piccole fino a quando non ho imparato la sinstassi e l'uso delle funzioni; magari sono stato anche facilitato essendomi fatto il mazzo a scuola per imparare bene l'inglese.



    Come mai avvolte da questo messaggio?
  • OFFLINE
    rollis13
    Post: 1.161
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 22/10/2021 15:07
    L'immagine del messaggio di errore non serve a niente, serve si il codice del messaggio ma più ancora sapere in quale riga del codice si è fermata la macro, ovvero, basta cliccare Debug e verificare quale riga è evidenziata in giallo e sarebbe molto utile anche il valore delle variabili attive in quella riga (basta passarci sopra il mouse).

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)