Copier coller celulle itération avec date

Résolu
Bonjour,

https://www.cjoint.com/?3BzkR1Z8q4p

Je joue à l'apprentie sorcière du VBA... Pas très concluant !

Voici ce que j'essaie de faire : quand je tape un nouveau prix dans ma cellule B4,
j'aimerais que ce prix s'affiche dans la première ligne de la seconde colonne de mon tableau.
Puis quand je retape un nouveau prix, il s'affiche dans la seconde ligne de ma seconde colonne, et ainsi de suite...

Pour cela j'ai déjà trouvé un code sur un forum (à l'aide d'un bouton)

Sub miseajour()

Dim lifin As Long, v
v = ActiveSheet.Range("B4").Value
lifin = Activesehet.Range("G" & Rows.Count).End(xlUp).Row
If ActiveSheet.Range("G3") <> "" Then lifin = lifin + 1
ActiveSheet.Range("G" & lifin).Value = v


End Sub


cependant excel me renvoie objet non défini...

En plus de cela, j'aimerais qu' à chaque fois que le prix est modifié, la date à laquelle il est modifié apparaisse dans la première colonne de mon tableau

Pouvez vous m'aider svp?

Merci d'avance

5 réponses

  1. Bonjour,

    Essayez avec ceci (je suis aussi apprentis sorcier du VBA, mais voyons si cela fonctionne)

    Sub miseajour() 

    Dim lifin As Long, v
    Dim cell As Range

    v = ActiveSheet.Range("B4").Value

    lifin = ActiveSheet.Range("G1:G" & Range("G" & Rows.Count).End(xlUp).Row)

    If ActiveSheet.Range("G3") <> "" Then lifin = lifin + 1
    ActiveSheet.Range("G" & lifin).Value = v
    ActiveSheet.Range("F" & cell.Row).Value = Date
    End If

    End Sub


    PS : Je n'ai pas pu voir votre fichier, le site étant bloqué pour moi.

    Cordialement, Romain.
    0
    1. La macro n'a pas l'air de fonctionner (et je m'en doutais un peu), j'y travaille n'ayez aucune inquiétude ;)
      0
  2. Voila, ça fonctionne !

    Sub test()
    Dim rng As Range, cell As Range
    Dim i As Integer

    i = 3
    While (Cells(i, 7).Value <> "")
    i = i + 1
    Wend
    Cells(i, 7).Select

    Set rng = ActiveSheet.Range("B4")

    With rng.Cells
    .Copy
    If ActiveSheet.Range("G3") = "" Then
    ActiveSheet.Range("G3").PasteSpecial xlPasteValues
    End If

    If ActiveSheet.Range("G3") <> "" Then
    ActiveCell.PasteSpecial xlPasteValues
    End If

    ActiveCell.Offset(, -6).Value = Date 'entre la date dans la colonne A. Mettre -1 pour entrer la date dans la colonne F

    End With

    End Sub


    Cordialement, Romain.
    0
    1. merci bcp !! J'apprends bcp grâce à votre code
      Encore merci :)
      0
      1. Re- Bonjour,

        J'ai essayé d'adapter le code à un autre fichier. Et là, grand mystère le code ne marche plus !
        Au début je n'avais pas rajouté Worksheets("BCC") devant Cells(i,10).Select mais alors : excel m'indique : erreur 1004 définie par l'application ou l'objet. J'ai cru comprendre qu'excel ne comprenait pas dans quelle sheet il devait prendre la cellule (i,10)

        Le probleme est qu'une fois cet incident résolu alors : Il copie bel et bien une premiere fois la cellule voulue mais ensuite, il refuse de copier la même cellule sur la ligne suivante ...
        Je ne comprends pas on a pourtant bien notre compteur qui s'incrémente dans notre boucle...

        Puis je encore quémander votre aide?
        Merci d'avance

        Sub test()
        Dim rng As Range
        Dim cell As Range
        Dim i As Integer

        i = 5
        While (Cells(i, 10).Value <> "")
        i = i + 1
        Wend
        Worksheets("BCC").Cells(i, 10).Select

        Set rng = ActiveSheet.Range("B35")

        With rng.Cells
        .Copy
        If ActiveSheet.Range("J5") = "" Then
        ActiveSheet.Range("B35").PasteSpecial xlPasteValues
        End If

        If ActiveSheet.Range("J5") <> "" Then
        ActiveCell.PasteSpecial xlPasteValues
        End If

        ActiveCell.Offset(, -1).Value = Date 'entre la date dans la colonne A. Mettre -1 pour entrer la date dans la colonne F

        End With

        End Sub
        0
        1. Que voulez vous faire exactement dans cette macro ? Car après vos modifications elle n'a plus aucune logique, ça part dans tous les sens. Expliquez moi plus en détails svp.
          (au passage comment faites vous pour que dans votre premier post le code s'affiche ainsi ?)

          EDIT : Voir mon post en dessous
          0
      2. Bonjour,

        La macro fonctionne uniquement sur une page. Vous avez modifié des range qui n'ont donné plus aucune logique à la macro.

        Essayez donc avec ce code :

        Sub test()
        Dim rng As Range
        Dim cell As Range
        Dim i As Integer
        
        i = 5
        While (Cells(i, 10).Value <> "")
        i = i + 1
        Wend
        Cells(i, 10).Select 'cellule de la page actuelle
        
        Set rng = ActiveSheet.Range("B35")
        
        With rng.Cells
        .Copy
        If ActiveSheet.Range("J5") = "" Then
        ActiveSheet.Range("J5").PasteSpecial xlPasteValues 'endroit ou tu colles les données
        End If
        
        If ActiveSheet.Range("J5") <> "" Then
        ActiveCell.PasteSpecial xlPasteValues
        End If
        
        ActiveCell.Offset(, -1).Value = Date 'entre la date dans la colonne précédente
        
        End With
        
        End Sub


        Cordialement, Romain.
        0
        1. Merci pour la rapidité de votre réponse ! Malheureusement j'ai toujours la même réponse : erreur 1004 erreur définie par l'application ou par l'objet
          Je vais tenter quelque chose d'autre !
          0
        2. Probleme résolu !!! j'avais oublié de mettre option explicit !
          Merci bcp pour votre aide Romain
          0
        3. De rien. Bonne journée à vous !
          0