Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Souci dans le code

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 !

Hugues

XLDnaute Impliqué
Bonjour Le Forum

J'ai un souci dans le code suivant.
Je souhaite pour chaque onglet d'un classeur, lors de leur fermeture, faire un copier collage spécial des valeurs d'une zone.
Pour cela lors de l'ouverture de l'onglet je garde en mémoire le nom de l'onglet qui me servira pour donner les instruction lors de sa fermeture.

Ci joint le code :

Dim ws As Worksheet

Private Sub Worksheet_Activate()
ws = ActiveSheet.Name
MsgBox ("Le nom de l'onglet est : " & ws)
End Sub

Private Sub Worksheet_Deactivate()
' Détermination de la dernière cellule de la ligne 6 renseignée
dercellule = ws.Range("iv6").End(xlToLeft).Offset(-2, 0).Address
MsgBox ("La dernière cellule est : " & dercellule)


' Copiage_collage spécial de la zone recherchée
ws.Range("W4:" & dercellule).Select
Selection.Copy
ws.Range("W4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


End Sub


Merci par avance pour l'aide,

Cordialement,

Hugues
 
Re : Souci dans le code

Bonjour,

Oui, et le 'soucis' il est où?

Sans doute faut-il mettre ton instruction de copiage dans le module 'thisworkBokk'


Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
'Sh est la feuille en cours de désactivation
End Sub

A+
 
Dernière modification par un modérateur:
Re : Souci dans le code

Bonjour Hugues, salut Hasco,

Pas regardé votre fichier, mais modifié les macros du post #1 :

Code:
Dim ws As Worksheet

Private Sub Worksheet_Activate()
Set ws = ActiveSheet
MsgBox ("Le nom de l'onglet est : " & ws.Name)
End Sub

Private Sub Worksheet_Deactivate()
' Détermination de la dernière cellule de la ligne 6 renseignée
dercellule = ws.Range("iv6").End(xlToLeft).Offset(-2, 0).Address
MsgBox ("La dernière cellule est : " & dercellule)


' Copiage de la zone recherchée
ws.Range("W4:" & dercellule).Copy ws.Range("W4")

End Sub

Pas trop compris l'intérêt mais maintenant au moins, ça ne bug plus partout...

A+
 
Re : Souci dans le code

Re,

Ah oui, le collage spécial était là pour ne conserver que les valeurs, alors écrivez :

Code:
' Copiage des valeurs de la zone recherchée
ws.Range("W4:" & dercellule) = ws.Range("W4:" & dercellule).Value

A+
 
Re : Souci dans le code

Re,
Hello Pierrot🙂

Moi aussi je cherchais l'intérêt!

Une autre proposition sans copier coller:

Code:
[COLOR=blue]Dim[/COLOR] ws [COLOR=blue]As[/COLOR] Worksheet
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Worksheet_Activate()
    [COLOR=blue]Set[/COLOR] ws = ActiveSheet
    MsgBox ([I]"Le nom de l'onglet est : "[/I] & ws.Name)
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Worksheet_Deactivate()
    [COLOR=blue]With[/COLOR] ws.Range([I]"W4:"[/I] & ws.Range([I]"iv6"[/I]).[COLOR=blue]End[/COLOR](xlToLeft).Offset(-2).Address)
        ws.Range([I]"W4"[/I]).Resize(, .Columns.Count).Value = .Value
    [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

Pour toutes les feuilles du classeur mettre dans le module ThisWorkBook:

Code:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Workbook_SheetDeactivate([COLOR=blue]ByVal[/COLOR] Sh [COLOR=blue]As[/COLOR] [COLOR=blue]Object[/COLOR])
  [COLOR=blue]With[/COLOR] Sh.Range([I]"W4:"[/I] & Sh.Range([I]"iv6"[/I]).[COLOR=blue]End[/COLOR](xlToLeft).Offset(-2).Address)
        Sh.Range([I]"W4"[/I]).Resize(, .Columns.Count).Value = .Value
  [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

Sans plus, a part peut-être vérifier s'il existe des données.
A+
 
Dernière modification par un modérateur:
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…