Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Copier dans la dernière cellule quittée une cellule d'une autre feuille
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je voudrais savoir s'il est possible avec une macro, de copier le contenu d'une cellule dans la dernière cellule quittée d'une autre feuille du même fichier.
Re : Copier dans la dernière cellule quittée une cellule d'une autre feuille
Bonsoir à tous.
Pour récupérer le nom de l'onglet et l'adresse de la cellule active dans cet onglet lors du passage à un autre onglet :
Dans un module standard :
VB:
Public feuille$
Public cellule$
Dans le module principal (ThisWorkbook par défaut):
VB:
Private Sub Workbook_SheetDeactivate(ByVal Fl As Object)
Dim af As Worksheet
Set af = ActiveSheet
With Application: .EnableEvents = 0: .ScreenUpdating = 0: End With
Fl.Activate
feuille = ActiveSheet.Name
cellule = ActiveCell.Address
af.Activate
With Application: .ScreenUpdating = 0: .EnableEvents = 1: End With
End Sub
On accède ensuite à cette cellule par :
Code:
Sheets(feuille).Range(cellule)
Le code de la procédure Macro5 pourrait alors s'écrire :
VB:
Sub Macro5()
If feuille = "" Then Exit Sub
With Application
.ScreenUpdating = 0
Range("A4").Copy
Sheets(feuille).Range(cellule).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.CutCopyMode = False
.ScreenUpdating = 1
End With
End Sub
À adapter à la situation réelle... (Le classeur fourni avec le message #1 est illisible chez moi.)
Re : Copier dans la dernière cellule quittée une cellule d'une autre feuille
Bonjour ergastule, salut Roger, kastor,
Enregistrez le fichier en .xlsm ou .xls et collez dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
If ActiveSheet.Type = xlWorksheet Then ActiveCell.Name = "memcel"
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Type <> xlWorksheet Then Exit Sub
If TypeName([memcel]) = "Range" Then Sh.[A4].Copy [memcel]
ActiveCell.Name = "memcel"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ActiveCell.Name = "memcel"
End Sub
Il peut y avoir des feuille autres que des feuilles de calcul dans le classeur (Graphique).
C'est la cellule A4 de chaque feuille qui est copiée, adaptez si nécessaire.
Re : Copier dans la dernière cellule quittée une cellule d'une autre feuille
Bonjour à tous,
Au lieu de mémoriser la cellule dans un nom défini on peut la mémoriser dans une variable.
Mais c'est plus précaire.
Placez tout ce code dans Thisworkbook :
Code:
Dim memcel 'mémorise la variable
Private Sub Workbook_Open()
If ActiveSheet.Type = xlWorksheet Then Set memcel = ActiveCell
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Type <> xlWorksheet Then Exit Sub
If Not memcel Is Nothing Then Sh.[A4].Copy memcel
Set memcel = ActiveCell
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set memcel = ActiveCell
End Sub
Sub TestVariable()
If TypeName(memcel) = "Range" Then
MsgBox "La cellule 'memcel' existe..."
Application.OnTime Now, "ThisWorkbook.TestVariable"
End 'réinitialise tout
Else
MsgBox "La cellule 'memcel' n'existe plus..."
End If
End Sub
Fermez et rouvrez le fichier puis lancez la macro TestVariable
On constate que l'instruction End a "détruit" memcel.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.