IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

selection automatique de ligne sur un changement d'onglet


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 20
    Points : 22
    Points
    22
    Par défaut selection automatique de ligne sur un changement d'onglet
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     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

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonsoir

    je ne sais pas trop mais essaie cela

    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Workbooks(NomFichier).Worksheets(1).Selection.Row > 0 Then
       Workbooks(NomFichier).Worksheets(2).Rows(Workbooks(NomFichier).Worksheets(1).Selection.Row).Select
    End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
         if sh.index = 2 then sh.range("A" & sheets(1).activecell.row).entirerow.select
    End Sub

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,
    EDIT j'ai mal lu la question, réponse non adaptée....


    une solution pour copier les cellules sélectionnées dans la Feuil1 sur la Feuil2 à partir de A1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
    Dim tablo() As Variant
     
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Feuil2" Then
       On Error GoTo fin
       Sheets("Feuil2").Range(Cells(1, 1), Cells(UBound(tablo), UBound(tablo, 2))).Value = tablo
       Erase tablo
    End If
    fin:
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name = "Feuil1" Then
       Sheets("Feuil2").Range("A1").CurrentRegion.ClearContents
         If Target.Count > 1 Then
             Erase tablo: tablo = Target.Value
       Else
          Sheets("Feuil2").[a1] = Target.Value
       End If
    End If
    End Sub
    cordialement

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    en fait les macros evenementielles ne sont pas liées entre elle si tu fait une macro quand activate feuil2, elle ne se souvient pas ou était la selection en feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'sur feuill1
    Sub Worksheet_SelectionChange(ByVal Target As Range)
    u = Target.Row
    End Sub
    'sur feuil2
    Sub Worksheet_Activate()
    Cells(u, 1).Activate
    End Sub
    'dans un module
    Public u

  5. #5
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Re: bonjour alsimbad

    Merci à toi, je n'imaginais pas cette perte d'information etant donné que le passage d'une feuille à l'autre ne decale pas la selection précédente

    j'en arrive donc au meme code que toi en ajoutant une procedure, WorkBook_open, pour initialiser la variable dans le cas d'une ouverture directe en feuille 1
    Et une ligne dans l'activation de la feille 1 en cas de premiere activation de la feuille sans changer de selection de cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public ligne As Long
     
    Private Sub Workbook_Open()
        If ActiveSheet.Name = Sheets(1).Name Then ligne = ActiveCell.Row
    End Sub
     
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Index = 1 Then ligne = ActiveCell.Row
        If Sh.Index = 2 Then Sh.Range("A" & ligne).EntireRow.Select
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        If Sh.Index = 1 Then ligne = Target.Row
    End Sub

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/05/2013, 00h07
  2. [XL-2007] Ajout automatique de ligne sur calendrier
    Par Cerinos dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/03/2013, 11h30
  3. Réponses: 6
    Dernier message: 27/04/2009, 13h43
  4. [XL-2002] aide insertion automatique de lignes sur Excel
    Par Bendrien dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2009, 11h49
  5. selection d'une ligne sur 5 colonnes
    Par guyanais dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/09/2008, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo