Aller vers une cellule spécifique

Bonjour,

Grâce à m3ellem1, j'ai un fichier qui fonctionne très bien et je le remercie de nouveau.

Il s'agit d'un fichier de support à la saisie d'absences. Lorsque dans un formulaire, je saisie une absence un tableau s'auto-alimente de toutes les absences comprises dans la période de ma saisie.

J'aimerais pouvoir faire autre chose, mais je n'ai aucune idée sur la faisabilité. Je voudrais que lorsque je double clic sur un personne dont l'absence a déjà été enregistrée et qui apparait dans mon petit tableau, pouvoir aller directement sur la ligne concernant cette absence dans la feuille "ABSENCES ET CONGES".

Pouvez-vous me dire si c'est possible ? si oui pouvez vous m'aider à le mettre en place ?

Je joins un fichier.

Merci pour votre aide.

Sandrine

Salut Sandrine,

Le fichier ci-joint devrait correspondre à ton attente.

Bonnes salutations.

Bonjour Yvouille,

Voilà tout à fait !!!!

ça fait que 2 jours que je cherche.....

Merci beaucoup et très bonne soirée.

Sandrine

Bonsoir,

Je suis désolée de revenir sur ce sujet, mais il y a quelque chose qui ne va pas...

Dans la procédure que Yvouille m'a transmise, tout fonctionne bien, à un détail près.

Lorsque je double clic sur un personne dont l'absence a déjà été enregistrée je suis bien dirigée vers ma feuille "ABSENCES ET CONGES", qui contient le détail. Mais je reste figée sur le haut du tableau.

Si la cellule qui m'interesse est ligne 57, par exemple, je ne la vois pas du 1er coup. Il faut que je descende l'ascenseur afin de l'identifier (sans cliquer surtout, sinon je la perds).

Je ne comprends pas pourquoi ?

Je vous remercie pour votre aide.

Sandrine

Salut,

En règle générale, si quelqu'un prend un sujet en charge, il le suit volontiers.

Si la cellule qui m'interesse est ligne 57, par exemple, je ne la vois pas du 1er coup.

Tu pourrais la voir du premier coup si tu étais très attentive La cellule invisible est alors effectivement sélectionnée et tu le vois entre les deux autres lignes visibles.

J'avais bien remarquer cela, mais je pensais que tu ne revenais pas sur des lignes masquées et ne m'en étais pas occupé.

Dans le fichier ci-joint, les lignes concernées sont ouvertes automatiquement et - pour le fun - j'ai ajouté un bout de code afin que tu puisses masquer à nouveau ces lignes par un simple double-clic dans la colonne A.

Chaleureusement.

Bonjour Yvouille,

Je te remercie pour ton attention et ton aide.

Dans le fichier exemple que j'avais envoyé j'avais filtré volontairement les données (et non masqué ) afin que l'on puisse voir du 1er coup que la cellulle voulue était bien selectionnée.

Sans doute que je me suis mal exprimée lors de mon 2ème message.

Sur mon fichier exemple, sur ma feuille "ABSENCES ET CONGES", je me mets en A1 par exemple (peu importe, le but étant de se mettre en haut de la feuille). Je reviens sur ma feuille "Saisie des absences" et toujours pour mon exemple (car les noms varient selon les dates d'absences), je double clic sur "Henri". Voici ce qu'il se passe :

capture

Je sais très bien que la cellule de mon "Henri" pour l'exemple située en ligne 45 est selectionnée, je peux le voir car j'ai rajouté une MEFC qui colorie la ligne selectionnée, mais pour la voir il faut que je descende l'ascenseur de ma feuille.

capture1

Merci encore pour votre aide.

Chaleureusement,

Sandrine

Re,

Selon moi, un filtre ne fait que masquer automatiquement des lignes bien précises

Je comprends de tes nouvelles explications que tes lignes ne sont ni filtrées, ni masquées à la base et que tu souhaiterais que la ligne sélectionnée apparaisse en haut d'écran.

Je te propose donc une solution par l'instruction Scroll. Tu peux régler le nombre de lignes qu'il doit y avoir au-dessus de la ligne choisie en modifiant le chiffre de la ligne de code ActiveWindow.ScrollRow = i – 2

Par exemple ActiveWindow.ScrollRow = i – 3 laisse 3 ligne au-dessus de celle sélectionnée, - 4 laisse 4 lignes au-dessus, etc.

A te relire.

Rebonjour,

Je te remercie triplement :

1 - d'avoir tout à fait compris ma demande

2- d'avoir pris du temps pour m'aider

3 - de m'avoir expliqué l'instruction Scroll, car effectivement c'est que qu'il me manquait.

Tout est parfait;

Je voudrais simplement te poser une question, à quel moment dans ta procédure tu indiques que c'est lorsqu'on clic à partir de la cellule G14 qu'elle doit se déclencher ? Je veux surtout rien changer. c'est juste pour ma culture personnelle.

Je te souhaite une bonne soirée.

Sandrine

Il me sera difficile de te faire un cours complet de macros pour débutants – surtout que je ne connais pas ton niveau et que je risque d’en dire trop ou pas assez - mais en deux mots :

Il s’agit d’un code événementiel qui se déclenche à chaque fois que tu double-cliques sur la feuille ‘’Saisie des absences’’ (Private Sub Worksheet_BeforeDoubleClick).

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim i As Integer

    Application.ScreenUpdating = False

    With Sheets("ABSENCES ET CONGES")
        For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Range("A" & i) = Target And .Range("B" & i) = Target.Offset(0, 1) Then
                .Activate
                .Range("A" & i).Select
                ActiveWindow.ScrollRow = i - 2
                Exit Sub
            End If
        Next i
    End With

End Sub

La cellule dans laquelle tu as double-cliqué est la ‘’Target’’.

A chaque déclenchement, à chaque double-clic sur cette feuille, le code va passer en revue les cellules de la colonne A (For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row) de la feuille "ABSENCES ET CONGES" (With Sheets("ABSENCES ET CONGES")) et va contrôler si la cellule passée en revue correspond à celle sur laquelle tu as cliqué dans l’autre feuille (If .Range("A" & i) = Target) de même que si la cellule de la colonne B de la feuille "ABSENCES ET CONGES" correspond à la cellule directement à droite de la Target (And .Range("B" & i) = Target.Offset(0, 1)).

A) Si c’est bien le cas, la feuille "ABSENCES ET CONGES" est activée (.Activate), la cellule voulue est sélectionnée (.Range("A" & i).Select) et ça scrolle au bon endroit (ActiveWindow.ScrollRow = i - 2)

B) Si non – si tu doubles cliques un peu n’importe où sur la feuille de base et que rien de correspondant n’est trouvé sur l’autre feuille - il ne se passe rien de plus.

Tu touches aux macros, ce que je t’explique te parle ? Tu savais déjà le 3/4 de ce que je t’explique ?

Ah je comprends mieux ! tu vas chercher l'information dans la feuille "ABSENCES ET CONGES". Moi je restais butée sur ma feuille "Saisie des absences", donc je voyais pas. Finalement c'est très logique quand c'est bien expliqué comme tu l'as fait.

Quant à mes connaissances en VBA, je dirais que je suis débutante depuis de nombreuses années Du coup, le code que tu me fournis me parle, mais je suis bien incapable de le faire toute seule, il me manque aussi une certaine logique. Hier, lorsque j'ai vu que le code ne faisait pas exactement ce que je voulais, j'ai cherché.... beaucoup cherché... je n'ai pas eu l'instinct de penser à "Scroll".

Si il faut que je fasse une toute procédure simple, j'y arrive après de longues heures dès fois.....

Par contre Target, j'ai jamais compris...

Et pour être sincère, une fois que mon fichier est terminée, je passe à autre chose, du coup j'oublie.. oups...

Là, j'ai encore deux ou trois fichiers à construire, donc tu risques de me revoir...

Une très bonne soirée à toi et encore merci.

Sandrine

Rechercher des sujets similaires à "aller specifique"