Macro trova-sostituisci



  • Macro trova-sostituisci
    di Andrea (utente non iscritto) data: 10/12/2008

    Buonasera a tutti.
    ho un problema, credo di facile soluzione.

    in pratica vorrei una macro che faccia il trova - sostituisci, ma usando i valori di determinate celle.

    esempio: ho una colonna con riportati i nomi di piante.

    vorrei creare una macro (magari associata ad un pulsante) che mis sostituisca dei valori che voglio di volta in volta.
    io avevo pensato di utilizzare due celle per questo scopo. in una ci mettevo il termine da sostituire, nell'altro il termine nuovo. poi ho iniziato a registrare la macro, aprendo sostituisci, copiando il valore della prima cella (testo da cercare), poi quella dell'altra cella (testo da sostituire), e premendo sostituisci tutto. poi ho interrotto la registrazione, ma rieseguendo la macro, dopo aver cambiato i valroi delle due celle sopra dette, non succede niente.

    ho anche guardato il codice vb ed ho visto che

    cells.replace what:="abeti", replacement:="cipressi", lookat:=xlpart _
    , searchorder:=xlbyrows, matchcase:=false, searchformat:=false, _
    replaceformat:=false

    cioè, mi scrive i valori di quelle celle quando ho fatto il copia incolla, e quindi eseguendo la macro mi farà sempre tale sostituzione anche se modifico con altri termini i valori delle due celle.

    come posso fare?
    grazie!


  • Tentativo
    di Fabioooo79 data: 10/12/2008

    Credo di aver capito dov'e' il problema.. o meglio.. praticamente se tu nella sessione successiva fai pini,salici la macro ti immette sempre la ricerca abeti e li cambia con i cipressi giusto? se cosi si tratta di mettere al posto di abeti e cipresi nella macro 2 valori variabili.. provalo come te lo mando poi mi farai sapere perche ora non posso provarlo e penso che come te l'ho scritto ci possan essere errori con le virgolette...
    ciaoooooo
     
    private sub commandbutton1_click()
    
    dim alb1 as string
    dim alb2 as string
    
    alb1= "range("c1").value"
    alb2= "range("d1").value"
    
       ' ho utilizzato c1 e d1 come intervalli di celle.. sostituiscili con gli intervalli che interessano a te
    
    cells.replace what:=alb1, replacement:= alb2 ,lookat:=xlpart _ 
    , searchorder:=xlbyrows, matchcase:=false, searchformat:=false, _ 
    replaceformat:=false 
    
    
    end sub
    



  • di Andrea (utente non iscritto) data: 11/12/2008

    Grazie mille per la disponibilià.....provo e ti faccio sapere


  • Funziona?
    di Fabioooo79 (utente non iscritto) data: 11/12/2008

    Funge allora?



  • di Andrea (utente non iscritto) data: 11/12/2008

    Whoawwww...funzia...sei un grande!!

    me la puoi spiegare per favore? (le devo capire le cose, sennò non sono contento! )



  • di Andrea (utente non iscritto) data: 11/12/2008

    Ciao, un ulteriore richiesta.

    e' possibile restringere la sostituzione ad una sola colonna, per evitare che vengano sostituiti anche i valori delle celle di riferimento (che per l'esattezza sono la i9 e la j9)?
    grazie!


  • Variabili
    di Fabioooo79 (utente non iscritto) data: 11/12/2008

    Praticamente hai inserito nella macro2 variabili. quando tu hai registrato la macro il registratore di macro non ha tenuto in considerazione le celle che usavi ma bensi quello che tu avevi scritto dentro.. ovvero abeti in una e cipressi nell'altra...

    se a te fosse servito di cambiare solo quei 2 tipi di albero la macro avrebbe fatto al caso tuo ma a te servivano valori nuovi da immettere di volta in volta... e qui entrano in gioco le variabili.. una spiegazione in linguaggio tecnico non te la so dare pero ci provo...

    i valori e inserisci di solito.. sono costanti quindi fissi oppure variano? inquesto caso variano..mazza che filosofo che sono... ahahh

    cmq

    facendo
    dim alb1 as string

    questa e' una dichiarazione di variabile
    ..
    dove "dim" e' codice visu basic

    "alb1"l'ho inventato io e rappresenta il nome che ho dato alla variabile .. potevo scrivere "testo1" oppure "albero1" o "tree1" ..

    "as string" e' il tipo di variabile che voglio impostare in questo caso l'ho impostata come stringa di caratteri.... essendo il nome dell'albero un testo credo possa essere approriata. prova a cercare nel corso a disp. nel sito troverai anche tuttigli altritipi di variabili cn le loro specifiche
    ..
    in seguito dopo aver detto che tipo di variabile
    volevo impostare le ho dato una provenienza.. in questo caso
    alb1=range("c1").value
    tradotto
    alb1= valore della cella c1

    tutto uguale anche per alb2

    siccome nella formula da te inviata abeti era tra virgolette "abeti" quando ho dato il valore alla variabile ho fatto :
    alb1=" range("c1").value "

    quando viene letto il programma prima legge le dicharazioni giusto. o meglio legge dall'alto verso il basso sempre tranne in caso di salti condizionati...

    cmq infine ho inserito le due variabili nel codice mandato da te al posto di abeti e cipressi
    x la seconda domanda prova a rimettermela in un altro modo domani provo a vedere cosa fare. al massimose proprio non riesco a capire mi spedirai un esempio.. ci sentiamo.

    p.s. spero d essere stasto chiaro... non son molto bravo a spiegare

    ciao

    fabio



  • di Andrea (utente non iscritto) data: 15/12/2008

    Grazie per la tua delucidazioni...è tutto molto chiaro.

    per la mia seconda domanda, cerco di riassumertela così.

    facendo la macro che tu mi hai dato, io sostituisco dei valori con altri (in base alle due celle i9 e j9, doe la prima riporta il contenuto da sostituire, e la seconda il contenuto che deve andare al suo posto).

    queste due celle sono con il "convalida", cioè hanno dei valori prefissati da un elenco.

    ora, applicando la macro tua, mi vengono sostituiti anche i valori delle due celle i9 e j9, nonchè quelle dell'elenco.
    io invece voglio che la sostituzione riguardi solo le celle della colonna f, e non tutte le celle del foglio.


  • Mmmm
    di Fabioooo79 (utente non iscritto) data: 15/12/2008

    Scusami se non ho risp velocemente ma ho avuto qualche intoppo con il pc.. volevo chiederti una cosa a riguardo dell'ultima risp.. tu nel foglio oltre alla colonna f hai altre celle conteneti valori simili se non ho capito male giusto? e eseguendo la macro ti cambia anche quelli giusto?per poterti rispondere ho bisogno di sapere quali operazioni hai eseguito quando hai registrato la macro in modo da potermi ricreare una specie di cartella qui e provare.. ah un ultima cosa.. utilizzi il pacchetto 2007? se non ti e' troppo lunga fammi sapere dai che proviamo a risolverlo.. ciao fabio



  • di Andrea (utente non iscritto) data: 16/12/2008

    Si, utilizzo il pacchetto 2007.

    con la macro in pratica faccio quello che farei con trova sostituisci.
    il punto è quello che dici te. io devo applicare tale sostituzione solo alla celle della colonna f, perchè in altre colonne posso avere questi valori, ma non voglio sostituirli.

    quindi, dovrei restringere il trova-sostituisci solo alla colonna f.

    grazie