remplacer un ligne d'une feuille par une ligne d'une autre feuille sous condition

superbog

XLDnaute Occasionnel
Bonjour,

J'ai un classeur avec un feuille contenant une liste de dossier (client) avec les coordonnées de chaque client et une feuille pour chaque dossier (numéro du dossier). Quand les coordonnées du client changent, je modifie la feuille contenant la liste de dossier et je voudrais par une macro pouvoir mettre à jour les feuilles dossiers.
Pour l'instant j'ai fait une macro qui modifie la totalité des adresses de tous les clients dans tous les dossiers car je n'ai pas trouvé comment faire.
Il faudrait comparer la ligne qui se trouve dans la feuille clients (le numéro de dossier est en colonne B) avec la ligne 2 colonne A à Q de la feuille client correspondant et ne copier que si il y a une différence, considérant que les infos contenues dans la feuille clients sont toujours justes et doivent écraser le cas échéant celle de la feuille dossier.

Ci joint fichier

Merci d'avance pour votre aide
 

Pièces jointes

  • test1.xlsm
    105.7 KB · Affichages: 29
  • test1.xlsm
    105.7 KB · Affichages: 28
  • test1.xlsm
    105.7 KB · Affichages: 26
Dernière édition:

Paf

XLDnaute Barbatruc
Re : remplacer un ligne d'une feuille par une ligne d'une autre feuille sous conditio

Bonjour

un code à copier dans le module de la feuille clients

à chaque modification en feuille clients la feuille concernée est mise à jour (après vérification qu'elle existe)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim DerLig As Long, Feuille As String, Ligne As Long
 DerLig = Range("A" & Rows.Count).End(xlUp).Row
 If Not Intersect(Target, Range("A2:R" & DerLig)) Is Nothing Then
    Application.ScreenUpdating = False 'désactive le rafraichissement écran
    test = IsError(Evaluate("= " & Range("A" & Target.Row) & "!A1")) ' test si la feuille existe
    If test Then
        MsgBox "La feuille n'existe pas"
    Else
        Feuille = Range("A" & Target.Row) 'Nom de la feuille
        Ligne = Target.Row              'N° de ligne
        Sheets("clients").Range("A" & Ligne & ":R" & Ligne).Copy Worksheets(Feuille).Range("A2")
        MsgBox "adresses client " & Range("B" & Target.Row) & "  " & Range("C" & Target.Row) & " à jour"
    End If
    Application.ScreenUpdating = True 'affiche les changements à l'écran
 End If
End Sub

A+
 

Paf

XLDnaute Barbatruc
Re : remplacer un ligne d'une feuille par une ligne d'une autre feuille sous conditio

Re

test = IsError(Evaluate("= " & Range("A" & Target.Row) & "!A1")) ' test si la feuille existe

à remplacer par ( rajout de ' (apostrophe))

test = IsError(Evaluate("= '" & Range("A" & Target.Row) & "'!A1")) ' test si la feuille existe

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2