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,

    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.
    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 !
    2. Probleme résolu !!! j'avais oublié de mettre option explicit !
      Merci bcp pour votre aide Romain
    3. De rien. Bonne journée à vous !
  2. 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
    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
  3. merci bcp !! J'apprends bcp grâce à votre code
    Encore merci :)
    1. 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.
      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.
        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 ;)