Changement d'onglet et selection de ligne

Bonjour

J'ai deux onglet.

Je selectionne une ligne sur un onglet 1.

Je change d'onglet et passe à l'onglet 2

Je souhaite voir la même ligne (même numéro) sélectionnée sur le second onglet.

J'ai écrit le code mais il plante :

Private Sub Worksheet_Activate()

NomFichier = ActiveWorkbook.Name

If Workbooks(NomFichier).Worksheets(1).Selection.Row > 0 Then

Workbooks(NomFichier).Worksheets(2).Rows(Workbooks(NomFichier).Worksheets(1).Selection.Row).Select

End If

End Sub

Quelqu'un aurait-il une solution ?

merci

Bonjour,

Tu veux cela pour toutes les feuilles du fichier ou seulement entre deux feuilles ?

A te lire

Dan

Damoiselle a écrit :

Bonjour

J'ai deux onglet.

Je selectionne une ligne sur un onglet 1.

Je change d'onglet et passe à l'onglet 2

Je souhaite voir la même ligne (même numéro) sélectionnée sur le second onglet.

J'ai écrit le code mais il plante :

Private Sub Worksheet_Activate()

NomFichier = ActiveWorkbook.Name

If Workbooks(NomFichier).Worksheets(1).Selection.Row > 0 Then

Workbooks(NomFichier).Worksheets(2).Rows(Workbooks(NomFichier).Worksheets(1).Selection.Row).Select

End If

End Sub

Quelqu'un aurait-il une solution ?

merci

Salut

déjà : plus tu compliques moins , moins tu as plus de risques d'erruer

Tout ça pour dire que plus t'es feignant et ton code léger, moins tu risques des fautes de frappes, syntaxe,, etc...

pour la syntaxe

Si j'ai bien compris ta macro : tu voudrais à l'activation de la feuille2 que la ligne en sélection dans la feuille 1 soit sélectionnée.

Le problème pour Excel c'est que la selection ne peut concerner que la feuille active dans la fenêtre.

Une solution à adapter suivant tes besoins réels :

Dans le module ThisWorkBook

Option Explicit

Public Adr As String

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = Sheets(2).Name And Adr <> "" Then
    Range(Adr).Select
End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = Sheets(1).Name Then Adr = Target.Address(0, 0)
End Sub

On met à jour une variable à chaque changement de sélection dans la feuille 1

Quand on active la feuille 2, si la variable n'est pas vide, on sélectionne la plage qu'elle définit.

A+

Re,

voici un petit fichier qui fait ce que tu demandes.

explication :

  • vas dans VBA par ALT + F11
  • CRTL + R pour afficher VBA project à gauche
  • menu insertion/module
  • dans module mets ceci --> Public lig As Integer
  • Double clique sur THISWORBOOK et mets cette macro:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Macro par Dan pour damoiselle - excel pratique - 28/11/07
On Error Resume Next
Rows(lig).Activate
End Sub

- toujours dans VBA project, double clique sur la feuille 1 et mets ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'Macro par Dan pour damoiselle - excel pratique - 28/11/07
lig = ActiveCell.Row '
End Sub
  • double clique sur feuille 2 et mets aussi le code ci-avant.
  • Enregistre ton fichier

le fichier --> https://www.excel-pratique.com/~files/doc/Damoiselle.xls

Amicalement

Dan

Bonjour,

Je vous remercie tous,

j'ai mis en oeuvre la solution de Dan et cela marche

bonne journée

Rechercher des sujets similaires à "changement onglet selection ligne"