Creare elenchi

  • creare elenchi di Ricky
    Dunque, premetto che non sono un programmatore, è solo un passatempo che mi appassiona;
    ho bisogno di un grosso aiuto a perfezionare una funzioncina che per ora fa solo in parte quello che vorrei;
    come vedete tramite un InputBox vado ad aggiornare il valore delle celle B38 e C38 di un Foglio1 rispettivamente con la data del giorno precedente e un valore che cambia giornalmente...e fin qui tutto Ok...

    Sub Modifica_NAV_DA_Clic()
    myNum = Application.InputBox("Modifica valore...", Format(Range("C38"), "Currency"), 50, 150, , , 9)
    If myNum <> False Then
    If myNum <> Range("C38") Then
    If MsgBox("Sicuro di voler Modificare il valore " & Format(Range("C38"), "Currency") & " con " & Format(myNum, "Currency") & " ?", vbYesNo + vbQuestion, _
    "Modifica valore") = vbYes Then

    Range("B38") = CDate(FormatDateTime(Now - 1, vbShortDate))
    Range("C38") = myNum

    End If
    ElseIf myNum = Range("C38") Then
    MsgBox "Non hai modificato il valore..."

    End If
    End If
    End Sub


    mi servirebbe che contemporaneamente su un Foglio2 venissero memorizzati i dati che aggiorno sul foglio1 , ottenedo un elenco di coppie data e valore, in più ci dovrebbe essere la possibilità ad es. cambiando più volte al giorno il valore, di non aggiungere più righe con la stessa data, ma di aggiornare quella già esistente;
    c' è qualcuno disposto a spenderci un po di tempo per darmi una mano ?
    Grazie in ogni caso...

    di Apoben64
    Ciao Ricky, non sò se ho compreso bene quello che vuoi ottenere, da parte mia, riportando il tuo codice in excel, ho creato un modulo COPIA , inserito nella tua istruzione dopo End If; in modo che quando tu scegli il valore , automicamente ti copia il tutto nel foglio 2.
    La macro COPIA ha il seguente codice :

    Sub COPIA()
    Dim Indiceriga As Integer
    ActiveSheet.Range("A1:B1").Select
    Selection.Copy
    Sheets("Foglio2").Select
    For Indiceriga = 1 To 200
    With Worksheets("Foglio2").Cells(Indiceriga, 1)
    If .Value = "" Then GoTo 10
    End With
    Next Indiceriga
    Exit Sub
    10:
    Sheets("Foglio2").Select
    Cells(Indiceriga, 1).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Application.CutCopyMode = False
    End Sub

    Questo è un primo passo, vediamo se poi anche Mauro ti può dare ulteriori consigli.

    L'ho provata e tutto funziona !

    di ENZO
    SE VUOI ANCHE IL MIO MODESTO PARERE PER OVVIARE AL FATTO CHE SE NON CAMBIA LA DATA IL VALORE NON DEVE ESSERE AGGIUNTO IN UN ALTRA RIGA DOVRESTI INSERIRE IN UN FOGLIO NASCOSTO CHE POI RICHIAMI A TUO PIACIMENTO LA FORMULA "ADESSO" CHE TI INSERISCE LA DATA DEL GIORNO E NELLA TUA ROUTINE NEL MOMENTO IN CUI VUOI SCRIVERE IL VALORE FAI IL CONFRONTO TRA LA TUA DATA E QUELLA CHE TROVA NELLA FORMULA ADESSO.
    SE UGUALE NON INSERIRE RIGHE ALTRIMENTI SI.
    SPERO DI ESSERE STATO CHIARO

    di Mauro
    Ciao Ricky, Luca ed Enzo sanno bene ke di solito programmo solamente per persone ke danno un contributo attivo al forum.
    Nel tuo caso ho fatto un eccezione con la speranza ke vorrai essere anke tu dei nostri, nel darci una mano a rispondere alle molte richieste.
    Ciao


    Sub Modifica_NAV_DA_Clic()
    myNum = Application.InputBox("Modifica valore...", Format(Range("C38"), "Currency"), 50, 150, , , 9)
    If myNum <> False Then
    If myNum <> Range("C38") Then
    If MsgBox("Sicuro di voler Modificare il valore " & Format(Range("C38"), "Currency") & " con " & Format(myNum, "Currency") & " ?", vbYesNo + vbQuestion, _
    "Modifica valore") = vbYes Then

    ComData = CDate(FormatDateTime(Now - 1, vbShortDate))
    ComVal = myNum

    indi = 1
    Do Until Sheets("Foglio2").Range("A" & indi) = ""
    If Sheets("Foglio2").Range("A" & indi).Value = ComData Then
    ComVal = myNum + Sheets("Foglio2").Range("B" & indi).Value
    Exit Do
    End If
    indi = indi + 1
    Loop

    Sheets("Foglio2").Range("A" & indi) = ComData
    Sheets("Foglio2").Range("B" & indi) = ComVal

    Range("B38") = CDate(FormatDateTime(Now - 1, vbShortDate))
    Range("C38") = myNum

    End If
    ElseIf myNum = Range("C38") Then
    MsgBox "Non hai modificato il valore..."

    End If
    End If
    End Sub

    di Apoben64
    Mauro, come al solito colpisci con semplicità e competenza !!!!C'è ancora molto da imparare !!!

    di Ricky
    Ragazzi, non so come ringraziarvi, provo subito gli esempi che mi avete postato e vediamo qual'è che fa di più al caso mio...spero di nel mio piccolo poter ricambiare la gntilezza

    di Ricky
    Grazie di nuovo a tutti ed in particolare a mauro che fatto centro, era proprio quello che mi serviva