copie vers classeru fermé (débutant ... déoslé)

Fouding

XLDnaute Nouveau
Bonjour à tous. Excusez par avance mon ignorance.

Je souhaite copier les cellules A6 à A20 d'un classeur ouvert, vers un classeur fermé (test.xlsx, Feuil1, cellule A1)

En m'inspirant du forum, j'ai "bricolé" ça, mais ça bloque à <Sheets("Feuil1").Select>

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Commandes").Select
Range("A6:A20").Select
Selection.Copy
Workbooks.Open Filename:="F:\Direction\test.xlsx"
Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub


Merci de votre aide

Que se passe-t-il si le classeur test.xlsx est ouvert ?

Merci encore
 

Staple1600

XLDnaute Barbatruc
Re : copie vers classeru fermé (débutant ... déoslé)

Bonjour


Comme ceci cela fonctionne sur mon PC
Code VBA:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wbA As Workbook, wbB As Workbook
Set wbA = ThisWorkbook
Set wbB = Workbooks.Open("F:\Direction\test.xlsx")
wbA.Sheets("Commandes").Range("A6:A20").Copy wbB.Sheets("Feuil1").Range("A1")
wbB.Close True
End Sub
 

Fouding

XLDnaute Nouveau
Re : copie vers classeru fermé (débutant ... déoslé)

Re bonjour à tous
Question subsidiaire SVP . Je voudrais apporter une fonction supplémentaire au code de staple1600 :

Si le classeur "test.xlsx" est fermé, pas de problème. Mais s'il est ouvert (par un autre user par exemple) ça le ferme.

Comment faire pour qu'il reste fermé s'il l'était, et qu'il reste ouvert s'il était aussi ?
Merci pur votre aide.
 

Staple1600

XLDnaute Barbatruc
Re : copie vers classeru fermé (débutant ... déoslé)

Re

Fouding
Fais une petite recherche sur le forum (dans ses archives), tu devrais trouver de quoi t'aider
Exemple de mot-clé: tester fichier ouvert
Et tu tomberas en lisant bien sur par exemple sur ceci (je salue au passage BrunoM45 ;) )

Tu vois comment utiliser ces exemples?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : copie vers classeru fermé (débutant ... déoslé)

Re

A la réflexion , autant faire plus simple avec cette fonction retrouvée dans mes archives
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wbA As Workbook, wbB As Workbook, Fichier As String
Fichier="F:\Direction\test.xlsx"
Set wbA = ThisWorkbook
If Ouvert(Fichier) Then
Set wbB = Workbooks("test.xlsx")
Else
Set wbB = Workbooks.Open(Fichier)
End If
wbA.Sheets("Commandes").Range("A6:A20").Copy wbB.Sheets("Feuil1").Range("A1")
wbB.Close True
End Sub
Code:
Private Function Ouvert(WBK As String) As Boolean
On Error Resume Next
Ouvert = Not Workbooks(WBK) Is Nothing
Err.Clear
End Function

PS: Test OK sur mon PC.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 046
Membres
104 010
dernier inscrit
Freba