Macro pour réécriture dans base de données

Bonjour à tous,

Je suis actuellement bloqué sur un problème et j'ai beau parcourir le net je ne trouve pas de situation équivalente sur les forums ce que je trouve étrange car je ne doit pas être le premier dans mon cas (ou alors je n'ai pas taper les bons mots clés dans ma recherche).

Je suis en train de réaliser un outil pour suivre les activités Marketing de mon entreprise. Avec un formulaire de saisie, l'utilisateur alimente une base de données, chaque fois qu'une donnée rentre dans la base elle se retrouve avec un identifiant unique.
L'utilisateur peu par la suite consulter les données de cette base via un onglet "Suivi d'activité" qui permet de faire une "extraction" de la base en fonction des critères de recherches préalablement défini. Dans cette "extraction" de la base, l'utilisateur pourra être amené à modifier les valeurs comme le statut ou encore la quantité (bref tout ce qui est présent sur la ligne).

Maintenant je souhaiterai qu'il soit possible de remplacer les lignes de la base par les lignes de l'extraction modifiée par l'utilisateur via une macro

Pour les pro d'Excel j'imagine que c'est un jeu d'enfant ! Mais étant débutant en VBA je ne sais pas trop comment m'y prendre. J'imagine qu'il faut créer une boucle.

Je vous joint un fichier simplifié pour l'illustration

Merci d'avance à ceux qui prendront le temps de m'aider

Bonjour,

Perso, j'écrirai dans le code le feuille de "Suivi activité" les lignes suivantes:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zn As Variant, T As Variant, id As String, lg As Long, Rg As Range

    id = Me.Cells(Target.Row, "L").Value
    lg = Me.Cells(Rows.Count, "L").End(xlUp).Row
    Set Zn = Intersect(Target, Range("A2:K" & lg))
    With Sheets("Base")
        If Not Zn Is Nothing Then
            T = Me.Range(Me.Cells(Target.Row, "C"), Me.Cells(Target.Row, "K")).Value
            Set Rg = .Range("J:J").Find(id, LookIn:=xlValues, Lookat:=xlWhole)
            If Not Rg Is Nothing Then .Range("A" & Rg.Row).Resize(UBound(T, 1), UBound(T, 2)) = T
        End If
    End With
End Sub

Les modifs devraient se répercuter dans l'onglet "Base" au fur et à mesure des saisies

A tester

Pierre

Bonjour Pierrep56,

Alors là c'est parfait ! Je ne savais pas que c'était possible de faire comme cela.

J'ai adapté à mon modèle qui est plus complexe que le fichier que j'avais laissé en pièce jointe et c'est vraiment encore mieux que ce que souhaitais faire. Un grand merci pour ton aide.

Je te souhaite une bonne journée

Buzz

Rechercher des sujets similaires à "macro reecriture base donnees"