Copier partie d'un classeur dans un autre classeur
Bonjour,
J'essaye de copier une partie d'un classeur dans un autre classeur. Simple au demeurant. Mais ça se complique pour moi car il faut que les cellules, du classeur copié, lorsqu'elles sont modifiées ou ajoutées soient aussi soient répercutées dans le deuxième classeur.
Merci à vous pour votre aide et bonne journée
Cordialement
Salut et bienvenue sur le Forum,
Si je t'ai bien compris, tu as par exemple copié les cellules A1:B10 du classeur A dans le classeur B (Classeur B qui je présume évolue aussi de son coté, à l'exception des cellules A1:B10) et tu voudrais que si les cellules A1:B10 sont modifiées dans le classeur A, elles le soient aussi dans le classeur B ?
Si c'est bien le cas, pourquoi ne pas actualiser les cellules A1:B10 du classeur B à un certain moment donné, par exemple lors de la fermeture du classeur A ?
Si tu avais un petit bout de fichier exemple .....
A te relire.
Bonjour et merci d'essayer de résoudre mon problème.
Tu as bien compris ma demande. C'est concrètement faire apparaître le planning d'un intervenant sur deux classeurs (cet intervenant travaille pour deux services différents) sans à avoir à taper deux fois la même chose.
Peux-tu m'expliquer comment effectuer la MAJ dès que l'on ferme un classeur.
Grand merci et bonne journée
Bonjour,
Pour une mise à jour, tu peux utiliser soit une liaison entre les classeurs du style "='F:\[Classeur2.xls]Feuil1'!A2", soit le code ci-dessous qui est à mettre dans le module de la feuille sur l'évènement "Change". La mise à jour se fait à l'aide d'une connexion ADO. Avant de faire un essai, lis bien les commentaires dans le code :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ConCL As Object
Dim Rs As Object
Dim Classeur As String
Dim NomFeuille As String
Dim Plage As String
Dim Valeur
'plage où la mise à jour doit être faite, à adapter
If Not Intersect(Target, [A1:B10]) Is Nothing Then
'chemin du classeur cible, à adapter
Classeur = "F:\Test\Classeur2.xls"
'nom de la feuille où se trouve la cellule
NomFeuille = "Feuil1"
'valeur à inscrire
Valeur = Target.Value
'adresse de la cellule à mettre à jour sous la forme "A1:A1"
'attention ! les plages des classeurs doivent être identiques
'sinon, modifier ici pour la construction de l'adresse de la cellule cible
Plage = Target.Address(0, 0) & ":" & Target.Address(0, 0)
'connexion au classeur avec ADO
ConClasseur ConCL, Classeur, Rs
'mise à jour
With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Plage & "` ", ConCL
.Fields(0).Value = Valeur
.Update
End With
'fermeture de la conn
ConCL.Close
End If
Set Rs = Nothing
Set ConCL = Nothing
End Sub
Private Sub ConClasseur(Con_CL As Object, _
Fichier As String, _
Optional Rs)
Set Con_CL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If
Con_CL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
End SubHervé.