Copier coller celulle itération avec date

Résolu
loulou5986 Messages postés 12 Statut Membre -  
romain7254 Messages postés 1071 Statut Membre -
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. romain7254 Messages postés 1071 Statut Membre 297
     
    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. romain7254 Messages postés 1071 Statut Membre 297
       
      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. romain7254 Messages postés 1071 Statut Membre 297
     
    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
  3. loulou5986 Messages postés 12 Statut Membre
     
    merci bcp !! J'apprends bcp grâce à votre code
    Encore merci :)
    0
  4. loulou5986 Messages postés 12 Statut Membre
     
    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. romain7254 Messages postés 1071 Statut Membre 297
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. romain7254 Messages postés 1071 Statut Membre 297
     
    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. loulou5986 Messages postés 12 Statut Membre
       
      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. loulou5986 Messages postés 12 Statut Membre
       
      Probleme résolu !!! j'avais oublié de mettre option explicit !
      Merci bcp pour votre aide Romain
      0
    3. romain7254 Messages postés 1071 Statut Membre 297
       
      De rien. Bonne journée à vous !
      0