Copié collé vba ne fonctionne pas

renoncule62 Messages postés 94 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
sous excel, Je souhaiterais, avant la fermeture d'un fichier,
copier la valeur d' une cellule de ce fichier
ouvrir un autre fichier
coller la valeur précédemment copiée dans ce nouveau fichier ouvert
enregistrer et fermer ce dernier fichier
et enfin fermer le fichier source (contenant la macro )

voici le code que j'ai utilisé mais la valeur n'est pas collée et je ne comprend pas pourquoi
j'ai essayé avec des activate un peu partout etc... mais rien à faire
si quelqu' un peut m' aider et surtout m'expliquer, ça serait sympa
voici mon code
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("B5").Select
    Selection.Copy
    ChDir "D:moncheminversmondossier"
    Workbooks.Open Filename:= _
        "D:monfichier à ouvrir.xls"
    Range("B5").Select
    ActiveSheet.Paste
        Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub


A voir également:

3 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour

J'aurais plutôt écris ça
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     xxx = Range("B5")
    Workbooks.Open Filename:= _
        "D:\moncheminversmondossier\monfichier à ouvrir.xls"
    Range("B5") = xxx
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub
0
renoncule62 Messages postés 94 Statut Membre 2
 
Bonjour Michel,
tout d'abord, Une nouvelle fois merci car tu m'avais déjà dépanné une précédente fois.
Effectivement, de cette façon, ça marche impec mais ce qui me manquerait c'est l'explication car mon exemple était une simplification de ma macro et, il se trouve que dans mon code, lorsque je veux sélectionner un onglet ou une cellule dans le fichier ouvert par la macro, celle ci s'arréte. J'ai essayé des activates pensant que le probléme venait de là , mais pas moyen .
voici mon code simplifié qui bloque de nouveau:


Private Sub Workbook_BeforeClose(Cancel As Boolean)
 xxx = Range("B5")
 Workbooks.Open Filename:= _
 "D:\moncheminversmondossier\monfichier à ouvrir.xls"
 Range("B5") = xxx

Sheets("feuil33").Select  'ça ça passe pas??
Range("b4").select         'ça ça passe pas non plus??

 ActiveWorkbook.Save
 ActiveWindow.Close
End Sub



et le pourquoi stp
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bon,jour,

mon exemple était une simplification de ma macro
c'est justement ce qu'il ne faut pas faire quand tu demandes de l'aide sur un code: un code est unique et valable que pour un besoin précis et tu dois expliquer clairement et complètement ce que tu veux faire en tenant compte des conditions.

actuellement on écrit la valeur de xxx dans la cellule B5 de la feuille active au moment de l'ouverture de ton classeur (et c'est + qu'imprudent;, tu dois préciser la feuille où tu mets xxx)

ensuite suivant ton code , tu sélectionnnes la feuille 33, cellule B4 du classeur dans lequel tu as copié xxx ( a la prochaine ouverture xxx sera écrit en B4 de cette feuille si personne ne travaille sur ce classeur en allant sur une autre feuille )

mais je ne peux rien te dire de plus (ta simplification)

0