Modifier un autre classeur (que celui ouvert)

Bonjour

voilà mon soucis, je suis dans un classeur wb1 et je souhaiterais que lorsque je modifie une page de ce classeur (donc une cellule) la macro me modifie la même cellule de la même page d'un autre classeur wb2 qui n'est pas ouvert

idéalement il faudrait ne pas avoir de confirmation d'enregistrement de modif , il faudrait que ce soit transparent pour l'utilisateur

voilà comment je suis parti

dans la feuille en question du wb1 j'ai mis

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Target.Count > 1 Then Exit Sub

MsgBox "Vous venez de modifier la cellule " & Target.Address & _

" (" & Target.Value & ")"

lig_cible = Target.Row

col_cible = Target.Column

val_cible = Target.Value

'chemin ou se trouve le fichier B

chemin = "C:\"

'nom du fichier 2

fichier = "nom.xltm"

If Dir(chemin & fichier) = "" Then Exit Sub

'met en variable le classeur 2

Set wkB = Workbooks.Open(chemin & fichier)

Set corr = ActiveWorkbook.Worksheets("corr")

corr.Cells(lig_cible, col_cible).Value = val_cible

Application.EnableEvents = True

wkB.Close

End Sub

ça fonctionne pas trop mal sauf que j'ai un message "voulez vous enregistrer les modifs apportées à noms1"

alors déjà pourquoi crée t il un autre classeur nommé noms1 au lieu de modifier le noms ?

ensuite pourrait on se passer de ce message de confirmation ?

voilà je débute un peu en vba , merci donc pour votre aide

cordialement

lolo

Bonjour,

wkB.Close True

pour que le classeur soit enregistré à la fermeture.

Cordialement.

merci mais ça change rien il m'ouvre toujours un fenêtre pour enregistrer sous .....

et à chaque modif de cellule il me créer un nouveau classeur noms2 , noms3 etcetc

Commence par réenregistrer ton classeur en .xlsx ou .xlsm (selon cas), rectifie le nom dans ta macro et vérifie si le problème a disparu...

Cordialement.

bon alors j'ai un peu modifié le bazar pour que la macro copie carrément la nouvelle page dans l'ancien classeur

je trouvais ça plus simple

alors je n'ai aucun message d'enregistrement mais par contre ça ne fait rien dans le calsseur destination (??)

j'ai enregistré cette macro dans thisworkbook à l'évènement before_close

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.EnableEvents = False

'chemin ou se trouve le fichier B

chemin = "C:\"

'nom du fichier B

fichier = "nom.xlsm"

If Dir(chemin & fichier) = "" Then Exit Sub

'définir le classeur source

Set classeurSource = ActiveWorkbook

'définir le classeur destination

Set classeurdestination = Application.Workbooks.Open(chemin & fichier, , True)

'copier les données de la "corr" du classeur source vers la "corr" du classeur destination

classeurSource.Sheets("corr").Range("A2:F9999").Copy Destination:=classeurdestination.Sheets("corr").Range("A1")

'fermer le classeur destination sans message

Application.DisplayAlerts = False

classeurdestination.Save

Application.DisplayAlerts = True

classeurdestination.Close

End Sub

on voit bien que la macro effectue un truc en plus mais manifestement ce n'est pas la copie .....

merci


il se passe un truc étrange en faisant le pas à pas

le d=classeur destination nom.xslm s'ouvre bien , mais il est bizarre j'ai pas de barre Fichier, insertion etcetc , juste le tableau

la page corr est bien modifée (ajout du nouveau range )

mais il ne se sauve pas

quand je l'ouvre la page corr n'est pas modifiée

merci encore

ok je me réponds à moi même puisque j'ai trouvé la solution

en fait le classeur était ouvert en mode read only

Set classeurdestination = Application.Workbooks.Open(chemin & fichier, , True)

donc à ouvrir en mode modif

Set classeurdestination = Application.Workbooks.Open(chemin & fichier, , false)

merci pour votre aide

Tu voulais qu'on le voie comment ? Cela ne figurait pas dans ton code initial...

Rechercher des sujets similaires à "modifier classeur que celui ouvert"