Bonjour le forum,
Je me permets de vous exposer mon problème (que je ne comprends vraiment pas).
Edit: en écrivant ce message, j'ai eu une idée que je viens de tester. Ne pas mettre ce code en "passif" (lors de la sauvegarde du fichier), mais en action sur un bouton (déplacé le code dans un module). Et là, le code fonctionne parfaitement ! Nouvelle question: comment rendre ce code "passif" (transparent pour l'utilisateur) ? Ce code n'aime pas le Before Save ?
J'ai un fichier A avec 4 onglets.
Lors de l'ouverture de ce fichier (A), un autre Fichier (B) s'ouvre, copie le contenu du seul onglet dispo, rebascule sur le fichier A et colle le contenu dans l'onglet 2. Le fichier (B) se ferme.
Toute cette opération fonctionne parfaitement et est transparente pour l'utilisateur.
Ci-desous le code, qui est très certainement optimisable, mais qui fonctionne.
Je voudrais maintenant faire l'opération inverse : à chaque fois qu'on sauvegarde, toutes les informations de l'onglet 2 du Fichier A aillent se coller dans le Fichier B. C'est sensiblement la même opération, dans le sens inverse. Malheureusement, Excel refuse de faire le "coller" (tout se déroule parfaitement bien, sauf qu'il ne colle pas).
Ci-dessous le code, qui ne fait pas le coller:
Je ne parviens pas à mettre le doigt sur ce qui cloche. Un oeil neuf du forum saurait-il me dire d'où provient l'erreur ? (j'insiste sur le fait que mon code n'est pas nécessairement optimisé et qu'il y'a sûrement bien mieux à faire)
Par avance merci pour vos remarques / critiques / solutions,
Int0x
Je me permets de vous exposer mon problème (que je ne comprends vraiment pas).
Edit: en écrivant ce message, j'ai eu une idée que je viens de tester. Ne pas mettre ce code en "passif" (lors de la sauvegarde du fichier), mais en action sur un bouton (déplacé le code dans un module). Et là, le code fonctionne parfaitement ! Nouvelle question: comment rendre ce code "passif" (transparent pour l'utilisateur) ? Ce code n'aime pas le Before Save ?
J'ai un fichier A avec 4 onglets.
Lors de l'ouverture de ce fichier (A), un autre Fichier (B) s'ouvre, copie le contenu du seul onglet dispo, rebascule sur le fichier A et colle le contenu dans l'onglet 2. Le fichier (B) se ferme.
Toute cette opération fonctionne parfaitement et est transparente pour l'utilisateur.
Ci-desous le code, qui est très certainement optimisable, mais qui fonctionne.
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Dim v_FichierBdD As String, v_FichierProd As String, v_BdD As String
v_FichierBdD = Sheets("Résultats").Range("H48").Value
v_FichierProd = ActiveWorkbook.Name
Workbooks.Open Filename:=v_FichierBdD
v_BdD = ActiveWorkbook.Name
Workbooks(v_BdD).Activate
Cells.Select
Selection.Copy
Workbooks(v_FichierProd).Activate
Sheets("BdD").Select
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Workbooks(v_BdD).Activate
Application.CutCopyMode = False
ActiveWindow.Close
Workbooks(v_FichierProd).Activate
Sheets("Résultats").Select
MsgBox "Onglet BdD correctement mis à jour !"
Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub
Je voudrais maintenant faire l'opération inverse : à chaque fois qu'on sauvegarde, toutes les informations de l'onglet 2 du Fichier A aillent se coller dans le Fichier B. C'est sensiblement la même opération, dans le sens inverse. Malheureusement, Excel refuse de faire le "coller" (tout se déroule parfaitement bien, sauf qu'il ne colle pas).
Ci-dessous le code, qui ne fait pas le coller:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.ScreenUpdating = False
Application.DisplayAlerts = True
Dim v_FichierBdD As String, v_FichierProd As String, v_BdD As String
v_FichierBdD = Sheets("Résultats").Range("H48").Value
v_FichierProd = ActiveWorkbook.Name
Workbooks.Open Filename:=v_FichierBdD
v_BdD = ActiveWorkbook.Name
Workbooks(v_FichierProd).Activate
Sheets("BdD").Select
Cells.Select
Selection.Copy
Workbooks(v_BdD).Activate
Cells.Select
ActiveSheet.Paste '(opération non réalisée !)
Range("A1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
Workbooks(v_FichierProd).Activate
Application.CutCopyMode = False
Sheets("Résultats").Select
Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub
Je ne parviens pas à mettre le doigt sur ce qui cloche. Un oeil neuf du forum saurait-il me dire d'où provient l'erreur ? (j'insiste sur le fait que mon code n'est pas nécessairement optimisé et qu'il y'a sûrement bien mieux à faire)
Par avance merci pour vos remarques / critiques / solutions,
Int0x
Dernière édition: