Deplacement macro

Bonsoir
@Mimimathy
tu m’avais fais il y a quelques temps deja une macro pour l’enregistrement en rajoutant une ligne sur une feuille B des données que je renseignait sur la feuille A c’est le fichier ci dessous
fichier_exemple.xlsm (240,4 Ko)

j’essaie de remettre la même macro sur un autre fichier en modifiant les paramètres mais ça ne fonctionne pas, pourrais tu svp y jeter un œil ?
fichier ci dessous
Amundi_teste.xlsm (475,0 Ko)
les données en D3, D5 et J2 de la feuille « Valeur » devrais se mettre sur la feuille « Montant » respectivement dans les cellules de la colonne B, D et F lorsque je modifie les cellules D2 et D5 de la feuille « Valeur »
merci d’avance

Bonjour,
Quand on travaille avec un tableau structuré, on n’ajoute pas des lignes vides
Si tu regardait sur ton classeur le bas du tableau, tu aurais vu que les données étaient bien présente
Teste sans tableau structuré
Amundi_teste.xlsm (470,3 Ko)

Salut
ah ben oui effectivement elle sont présente…
bon dans mon fichier original j’ai supprimé les lignes vide et ça fonctionne, encore appris quelque chose, en fait la macro ne considère pas la même notion de vide que moi
autre question, si je veut que le résultat de la cellule B22 se copie sur le deuxieme tableau qui a un jour de retard comment faire suffit il de rajouter des conditions genre ou faut il refaire une macro avec un Row count sur la colonne « M » avec un date -1 ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(« D2:D4 »)) Is Nothing Then
Dim i%, Dl%, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets(« Valeur »)
Set Wd = Sheets(« Montant »)
Dl = Wd.Range(« A » & Rows.Count).End(xlUp).Row + 1
DI = Wd.Range(« M » & Rows.Count).End(xIUp).Row + 1

If Wd.Cells(Dl - 1, 1).Value = Date Then
Wd.Cells(Dl - 1, 1).Value = Date
Wd.Cells(Dl - 1, 2).Value = Ws.Range(« D3 »)
Wd.Cells(Dl - 1, 4).Value = Ws.Range(« D5 »)
Wd.Cells(Dl - 1, 6).Value = Ws.Range(« J2 »)
Wd.Cells(DI - 1, 13) Value = Ws.Range(« B22 »)
Else
Wd.Cells(Dl, 1).Value = Date
Wd.Cells(Dl, 2).Value = Ws.Range(« D3 »)
Wd.Cells(Dl, 4).Value = Ws.Range(« D5 »)
Wd.Cells(Dl, 6).Value = Ws.Range(« J2 »)
Wd.Cells(DI, 13).Value = Ws.Range(« B22 »)
End If
End If
End Sub

Re,
Peut-être éviter de mettre la même variable pour la dernière ligne

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D2:D4")) Is Nothing Then
Dim i%, Dl%, DlPlueValue%, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets("Valeur")
Set Wd = Sheets("Montant")
Dl = Wd.Range("A" & Rows.Count).End(xlUp).Row + 1
DlPlueValue = Wd.Range("M" & Rows.Count).End(xlUp).Row + 1
  If Wd.Cells(Dl - 1, 1).Value = Date Then
    Wd.Cells(Dl - 1, 1).Value = Date
    Wd.Cells(Dl - 1, 2).Value = Ws.Range("D3")
    Wd.Cells(Dl - 1, 4).Value = Ws.Range("D5")
    Wd.Cells(Dl - 1, 6).Value = Ws.Range("J2")
    Wd.Cells(DlPlueValue - 1, 13).Value = Ws.Range("B22")
  Else
    Wd.Cells(Dl, 1).Value = Date
    Wd.Cells(Dl, 2).Value = Ws.Range("D3")
    Wd.Cells(Dl, 4).Value = Ws.Range("D5")
    Wd.Cells(Dl, 6).Value = Ws.Range("J2")
    Wd.Cells(DlPlueValue - 1, 13).Value = Ws.Range("B22")
  End If
End If
End Sub

ok
je teste merci…
bon sur mon fichier teste ça fonctionne mais pas sur le fichier original…
même sans déclarer de variable supplémentaire, par contre dans le 1er tableau les formules dans certaines cellules sont ajouté alors que sur le deuxième tableau les formules ne se mettent pas

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D2:D4")) Is Nothing Then
Dim i%, Dl%, Ws As Worksheet, Wd As Worksheet

Set Ws = Sheets("Valeur")
Set Wd = Sheets("Montant")
Dl = Wd.Range("A" & Rows.Count).End(xlUp).Row + 1

  If Wd.Cells(Dl - 1, 1).Value = Date Then
    Wd.Cells(Dl - 1, 1).Value = Date
    Wd.Cells(Dl - 1, 2).Value = Ws.Range("D3")
    Wd.Cells(Dl - 1, 4).Value = Ws.Range("D5")
    Wd.Cells(Dl - 1, 6).Value = Ws.Range("J2")
    Wd.Cells(Dl - 1, 13).Value = Ws.Range("B22")
  Else
    Wd.Cells(Dl, 1).Value = Date
    Wd.Cells(Dl, 2).Value = Ws.Range("D3")
    Wd.Cells(Dl, 4).Value = Ws.Range("D5")
    Wd.Cells(Dl, 6).Value = Ws.Range("J2")
    Wd.Cells(Dl, 13).Value = Ws.Range("B22")
  End If
End If
End Sub

Amundi_teste.xlsm (289,8 Ko)

Re,
Faudrait déjà que je puisse comprendre ton principe de fonctionnement.
Tableau + Formules + VBA , c’est pas très pratique et engendre des erreurs

Hello

J’avoue j’ai quelques fois l’esprit un peu tordue…
mais bon, jusqu’à présent je mettait a jour mon fichier manuellement avec tableau et formule, jusqu’à ce que je retombe par hasard sur le fichier d’il y a 1an et demi ou je t’avais fais une demande.

A l’heure actuel je me pose juste la question pourquoi certaine formule de mon tableau se recopie dans la ligne crée au rajout avec la macro alors que d’autre formule du même tableau ne se recopiais pas

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.