XL 2016 Actualisation requête sélection tableau struturé

  • Initiateur de la discussion Initiateur de la discussion ZZ59264
  • Date de début Date de début

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 !

ZZ59264

XLDnaute Occasionnel
Bonjour à tous,

J'ai un souci avec ma version Excel 2016 : suite à la mise en place d'un code qui permet l'actualisation d'une requête, je souhaite qu'on passe à la cellule du dessous,

Le hic, c'est qu'à la fin de la procédure VBA, il sélectionne tout le tableau structuré,

Merci d'avance pour votre aide,

Cordialement,
 

Pièces jointes

Solution
Re-,
Essaie avec ce code : (juste modifié l'évènement SelectionChange, mais je mets l'entièreté)

VB:
Dim KeyCells As Range, Tgt As Range
Dim Flag As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Flag Then Exit Sub
Set KeyCells = Union(Me.Range("t_Exemple[Exemple 1]"), Me.Range("t_Exemple[Exemple 2]"))
If Not Intersect(Target, KeyCells) Is Nothing Then
    Set Tgt = Target.Offset(1)
    Flag = True
    Me.Range("t_Exemple").ListObject.QueryTable.Refresh BackgroundQuery:=False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("t_Exemple[#All]").Address Then
    If Not Tgt Is Nothing Then
        Tgt.Select
    Else...
Bonjour,
Sur ma version 2021, aucun problème avec le classeur fourni, le processus décrit s'effectue bien ..

A ce propos:
  • C'est le processus normal quand vous faites "entrée" sans le code, c'est probablement pour rafraichir la requête ?
  • Pourquoi passer par PowerQuery pour additionner les 3 colonnes précédentes , une formule ne convient pas ?
  • Attention à tester si vous êtes sur la dernière ligne .
zz.gif
 
Dernière édition:
Bonjour Fanch55,

Merci pour votre retour, mais sur ma version Excel 2016 à la fin il me sélectionne tout le tableau et je ne sais pas comment y remédier 🙃

Ce n'est pas grave si nous somme sur la dernière ligne, l'effet sera l'ajout une ligne vide au TS,

Cordialement,
 
Bonjour

Je suis sur excel 2016. Si je change une valeur, le code fonctionne et ne me sélectionne pas le tableau structuré comme vous le précisez.

Exemple : je mets 4 en D6 puis Entrée, cela me donne 14 en F6 et la cellule sélectionnée est D7
Si je mets 4 en D13, cela n'ajoute pas de ligne. D'ailleurs pourquoi excel irait ajouter une ligne ??

je me demande si votre fichier est identique à celui posté
 
Dernière édition:
Bonjour Dan,

Merci pour votre retour,

Je suis bien embêté car quand je mets 4 en D6 puis Entrée, cela me donne également 14 en F6,

mais c'est le tableau complet qui est sélectionné et pas D7 🙁

Je ne comprend pas pourquoi, j'ai fais des recherches sur le net mais j'ai rien trouvé !

J'ai la version Excel 2016 (16.0.5491.1000) MSO (16.0.5491.1001) 64 bits

Non c'est le même fichier, d’ailleurs je re-télécharge celui que j'ai posté et j'ai le même constat !

Cordialement,
 
re

Essayez en désactivant la ligne Target.offset(1)
Je ne vois pas l'intérêt de cette ligne vu que pour confirmer vous devez appuyer sur Entrée ou Tab

J'avais mis cette ligne pour m'assurer que la sélection serait la cellule du dessous,

Je confirme que peu importe mes requêtes dans d'autres fichiers, dés que j'actualise l'une d'entre elle, le tableau structuré est sélectionné en fin de procédure,

Cela doit être lié à une option coché ou une mise à jour de ma version Excel,

Je remarque également que lorsque je sélectionne dans le volet Requête de classeur, une requête, le tableau structuré de la feuille Excel se sélectionne,

A tout hasard, dans les propriétés de connexion, par défaut, j'ai :
type de commande : SQL
Texte de la commande : SELECT * FROM [t_Exemple]

Est ce que ça peut être la source de mon problème?

Cordialement,
 
Dernière édition:
J'ai remarqué que si je change une valeur et colonne D ou E puis que je clique sur le bouton Actualiser dans l'onglet Requete, le tableau complet est sélectionné et la ligne suivante
Ce n'est pas cela que vous faites je suppose ?
 
J'ai remarqué que si je change une valeur et colonne D ou E puis que je clique sur le bouton Actualiser dans l'onglet Requete, le tableau complet est sélectionné
Ce n'est pas cela que vous faites je suppose ?
Non non , je saisie 10 en D6 puis je tape sur la touche Entrée, la sélection passe à D7 (logique), la procédure évènementielle prends le relai et sans rien faire la sélection se fait sur le tableau structuré,

Merci de votre aide,
 
Ok essayez ceci
- Sélectionnez une cellule du tableau
- dans l'onglet requête, cliquez sur l'icone "Propriétés", cela vous affiche un fenêtre
- décochez la case "chargement rapide des données"

refaites un test

Votre code comme ceci plutôt
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim keycells As Range

Application.ScreenUpdating = False

Set keycells = Union(Me.Range("t_Exemple[Exemple 1]"), Me.Range("t_Exemple[Exemple 2]"))
If Not Intersect(Target, keycells) Is Nothing Then
    On Error GoTo fin:
    Application.EnableEvents = False
    Range("t_Exemple").ListObject.QueryTable.Refresh BackgroundQuery:=False
    Target.Offset(1, 0).Select
End If
fin: Application.EnableEvents = True
End Sub
 
Effectivement bizarre...
En fait une question, pourquoi utilisez-vous power query ?

edit : c'est un peu du tatonnement parce que je n'arrive pas à reproduire ce que vous avez mais essayez un peu en remplaçant la ligne Target.offset par ceci -->
VB:
Application.Undo
 
Merci Dan pour vos retours, et je comprends bien la difficulté de déterminer la source de mon problème, ne l'ayant pas chez vous !

En remplaçant Target.offset par Application.Undo, cela empêche l'actualisation de la requête,

Pourquoi j’utilise Power Query : ici il s'agit d'un test, mon fichier de travail est similaire, je souhaitais juste reproduire cet effet de sélection du TS après actualisation de la requête,

Je n'ai pas fait de tableau simple avec des formules car la source est un fichier Excel externe...

Cordialement,
 

Pièces jointes

Testez le code ci-joint :
si tout le tableau est sélectionné au stop, c'est que vous avez effectivement un problème
sinon s'il l'est après, c'est qu'il y a un autre event qui se déclenche ensuite ...
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Not Intersect(Target, [t_Exemple[[Exemple 1]:[Exemple 2]]]) Is Nothing Then
        Application.EnableEvents = False
            Me.Range("t_Exemple").ListObject.QueryTable.Refresh BackgroundQuery:=False
        Application.EnableEvents = True
        If Not Intersect(Selection, [t_Exemple[[Exemple 1]:[Exemple 2]]]) Is Nothing Then
            Selection.Rows(Selection.Rows.Count).Select
        Else
            Selection.Offset(-1).Select
        End If
        Stop ' <-- regarder les cellules affichées avant de continuer
    End If
End Sub
 
Re Bonjour Fanch55,

J'ai testé votre code, et le tableau est toujours sélectionné à la fin, la procédure évènementielle met en jaune cette partie :

VB:
Stop ' <-- regarder les cellules affichées avant de continuer

Cordialement,
 

Pièces jointes

- 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

Réponses
1
Affichages
455
Retour