Report de valeur sur un autre onglet

Bonjour à tous,

J'aide une amie pour réaliser un fichier comptable, mais je sèche un peux pour une fonction qu'elle m'a demandé :

Dans le fichier joint, j'aimerais copier la valeur saisie en colonne F d'un onglet puis la coller dans la dernière cellule vide de la colonne E de l'onglet sélectionné en colonne G via une liste déroulante

Via les formules cela me semble impossible, il reste donc le VBA mais c'est pas mon fort... surtout si cela doit fonctionner sur tous les onglets...

Pouvez-vous m'aider ?

Merci d'avance.

Bonjour Ningun54

Il faut supprimer le code du module qui n'est pas à sa place et mettre le code suivant dans "ThisWorkbook"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim ws As Worksheet
  Dim lRow As Long
  Dim sTabName As String
  ' Vérification si la modification a eu lieu dans la colonne G
  If Not Intersect(Sh.Range("G:G"), Target) Is Nothing Then
    sTabName = Target.Value
    ' Vérification si l'onglet existe
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets(sTabName)
    On Error GoTo 0
    If Not ws Is Nothing Then
      lRow = ws.Range("E7").End(xlDown).Row + 1
      ' Désactiver les évènements
      Application.EnableEvents = False
      ' Copier la valeur de la cellule de la même ligne en colonne F
      ws.Range("E" & lRow).Value = Target.Offset(0, -1).Value
      ' Réactiver les évènements
      Application.EnableEvents = False
    End If
  End If
End Sub

Normalement, il fait le job

Ceci dit, si après avoir saisi la somme et le moi, si l'utilisatrice veut revenir en arrière il faudra qu'elle fasse le changement sur les 2 feuilles

A+

Je viens d'essayer, cela ne fonctionne pas.. j'ai essayé avec plusieurs mois pourtant... :/

Oui effectivement, je n'a i pas de précision sur ce problème, je suppose que cela ne lui pose pas de souci.

Re,

Petite correction apportée au code, voici le fichier

Il suffit de choisir le mois sur la feuille de Janvier après les 1000€

A+

La logique est celle-ci, mais c'est possible de faire la meme manip pour n'importe quelle cellule de la colonne sur l'ensemble des onglets ?

Re,

Oui, à partir du moment ou vous remplissez la somme, puis le mois.
Cela va allez compléter la cellule E du mois choisi

En revanche, il n'est pas prévu que vous choisissiez le mois, puis saisissiez la somme

A+

Ca ne fonctionne mais que la 1ere fois...

Re,

Désolé, je vais trop vite, il faut modifier la dernière instruction

Application.EnableEvents = False

en

Application.EnableEvents = True

On désactive les évènements pour éviter une boucle infinie, mais il faut du coup les réactiver

A+

Ca marche, impeccable.

Tu pourrais modifier le code pour copier également les données des colonnes A à D pour les coller de la même manière, comme ça il y a la somme collée en E et les infos qui suivant avec...

Merci pour ton aide en tous cas, c'est top !

Bonsoir,

Voici le code modifié qui remplace celui existant

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim ws As Worksheet
  Dim lRow As Long
  Dim sTabName As String
  ' Vérification si la modification a eu lieu dans la colonne G
  If Not Intersect(Sh.Range("G:G"), Target) Is Nothing Then
    sTabName = Target.Value
    ' Vérification si l'onglet existe
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets(sTabName)
    On Error GoTo 0
    If Not ws Is Nothing Then
      lRow = ws.Range("E7").End(xlDown).Row + 1
      ' Désactiver les évènements
      Application.EnableEvents = False
      ' Copier les valeurs de la colonne A à D
      ws.Range("A" & lRow).Resize(1, 4).Value = Sh.Range("A" & Target.Row).Resize(1, 4).Value
      ' Copier la valeur de la cellule de la même ligne en colonne F
      ws.Range("E" & lRow).Value = Sh.Range("F" & Target.Row).Value
      MsgBox "Valeur copier dans la feuille " & ws.Name & " - Cellule : E" & lRow
      ' Réactiver les évènements
      Application.EnableEvents = True
    End If
  End If
End Sub

Et surtout

A+

Rechercher des sujets similaires à "report valeur onglet"