XL 2016 Ajout automatique de données à un tableau

MarineV

XLDnaute Nouveau
Bonjour,

J’aimerais enregistrer des données rentrées manuellement dans un onglet (dans mon exemple l’onglet DONNEES) dans le tableau d’un deuxième onglet (dans mon exemple l’onglet HISTO).

Sauf que mon tableau de l’onglet HISTO possède déjà certaines colonnes de remplies avec certaines informations (notamment les colonnes « n° de référence », « info 1 » et « info 2 » dans mon exemple) et j’aimerais que les informations remplies manuellement dans l’onglet DONNEES s’enregistrent automatiquement dans les colonnes encore vides de mon tableau (notamment les colonnes « date », « moyenne élément 1 », « moyenne élément 2 », « moyenne élément 3 », « moyenne élément 4 » dans mon exemple).

En fait : j’ai des lignes dans mon tableau avec des n° de référence et certaines informations et je souhaite que, après avoir rentré le n° de référence et d’autres informations dans mon onglet DONNES, en cliquant sur un bouton, une macro détermine (grâce au n° de référence) à quelle ligne les informations supplémentaires doivent être ajoutées.

Je ne sais pas si je suis assez claire, j'ai mis mon fichier pour que ce soit plus simple !

Merci beaucoup aux personnes qui voudront/pourront m'aider et très bonne journée,

Marine.
 

Pièces jointes

  • Enregistrement automatique.xlsx
    10.4 KB · Affichages: 36

Jean-Eric

XLDnaute Occasionnel
Bonjour,
Une proposition tardive à étudier.
Cdlt.
VB:
Option Explicit

Private Sub Save_Data()
Dim lo As ListObject
Dim lr As ListRow
Dim n As Long
Dim d

    n = Application.Count([B1:B2])
    If n < 2 Then
        MsgBox "La date et le n° de référence doivent être documentés"
        Exit Sub
    End If

    Set lo = Worksheets("HISTO").ListObjects(1)
    n = lo.ListRows.Count

    Select Case True
        Case [B1].Value > n
            Set lr = lo.ListRows.Add
        Case Else
            d = Application.Match([B1].Value, lo.ListColumns(1).DataBodyRange, 0)
            If IsError(d) Then
                MsgBox "La référence est inconnue..."
                Exit Sub
            Else
                Set lr = lo.ListRows(d)
            End If
    End Select

    With lr.Range
        .Cells(1, 1).Value = [B1]
        .Cells(1, 2).Value = [B2]
        .Cells(1, 5).Value = [B5]
        .Cells(1, 6).Value = [B6]
        .Cells(1, 7).Value = [B7]
        .Cells(1, 8).Value = [B8]
    End With

    [B1:B2,B5:B8].ClearContents

    With Worksheets("HISTO")
        .Activate
        .[A1].Select
    End With

    Set lo = Nothing

End Sub
 

Pièces jointes

  • xld - formulaire et tableau VBA.xlsm
    29.7 KB · Affichages: 26

Statistiques des forums

Discussions
314 619
Messages
2 111 220
Membres
111 068
dernier inscrit
Lirije