Accepter automatiquement popup venant d'Excel
Bien le bonjour,
J'ai tenté de trouver réponse à ma question sur plusieurs forums mais je n'ai pas trouvé, je n'arrive peut-être pas à trouver les bons mots-clés.
La situation est assez complexe donc je vais essayer de l'expliquer clairement grâce à mon fichier exemple:
Je veux que mon programme soit ergonomique et facile d'utilisation. L'utilisateur doit donc sélectionner sur FeuillePrincipale, pour chacune des lignes, une marque et une longueur. En fonction de ces deux valeurs, j'ai une liaison grâce à MSQuerry qui propose tous les modèles qui ont ces deux critères. L'utilisateur peut donc choisir également le modèle exacte qu'il désire et le programme continue.
Comme cela doit être ergonomique, j'ai créé des boutons (mais pas dans mon exemple). Un qui ajoute une ligne en copiant celle du dessus à part pour les validations de données (elles sont rajoutées par macro) et un autre qui supprime la dernière ligne. Ainsi, l'utilisateur peut ajouter ou supprimer autant de modèles différents qu'il le désire (ici limité à trois pour l'exemple).
A cause de cette dernière macro, il supprime les références aux cellules car il supprime toute la ligne. Donc sur ma page "MSQuerry", les cellules F2,F3,G2 et G3 (la première ligne ne doit pas se supprimer sinon je n'ai plus de référence) se retrouvent en #REF!.
Pour contrer cela, j'ai donc instauré les formules "=INDIRECT("FeuillePrincipale!C"&LIGNE(cellule_haut_gauche)+F$1-1)" pour que même en étant supprimée, il soit toujours au bon endroit. (cellule_haut_gauche est la cellule B3 dans mon exemple).
Nouveau problème après cela, il ne considérait plus que la cellule était modifiée et j'ai donc du ajouter
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("MSQuerry").Range("E5:G5").ListObject.QueryTable.Refresh BackgroundQuery:=False
End Subqui actualise toutes mes requêtes à chaque fois qu'une cellule est modifiée (un peu pénible mais je veux vraiment que ce soit ergonomique).
Et voilà mon vrai soucis: Quand je supprime, par exemple, la troisième ligne, la cellule "MSQuerry!G2" renvoit "ligne gênante" (car en vrai, il y a des choses en dessous de ce tableau) et j'ai donc deux fenêtres de discussion d'excel qui apparaissent pour me dire "Type de paramètre incorrect. Microsoft excel attend une valeur d'un type différent de celui fourni." ainsi que "Impossible d'actualiser la plage de donnée xxx, voulez-vous continuer l'actualisation?" J'appuie sur OK et sur OUI car ce n'est pas un soucis, c'est ce que je cherche. En effet, en supprimant la ligne trois, "MSQuerry!G2" et ""MSQuerry!G3" renvoient "ligne gênante" qui n'est pas ce à quoi le MSQuerry s'attend. Si je rajoute, après, une ligne trois, il y a de nouveau des valeurs correctes et cela tourne correctement. (Il en est de même pour la ligne deux).
Malheureusement, mon programme doit tourner avec parfois trente lignes et je n'ai pas envie qu'à chaque fois qu'on supprime une ligne (ou même qu'on en rajoute parfois) il y ait ces deux fenêtres qui apparaissent.
Et voilà enfin ma question: Comment peut-on faire pour empêcher Excel d'afficher ces deux fenêtres de discussion? Ou bien comment peut-on faire pour accepter automatiquement ces deux fenêtres? J'ai tenté ceci:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False
Worksheets("MSQuerry").Range("E5:G5").ListObject.QueryTable.Refresh BackgroundQuery:=False
Application.DisplayAlerts = True
End SubCela ne fonctionne pas du tout (je pense que c'est parce qu'il est sorti de la macro quand les deux fenêtres apparaissent mais je n'en suis pas sur)
Si vous avez d'autres propositions qui fonctionnent aussi, cela me va très bien. L'essentiel est que cela reste ergonomique.
En espérant qu'une bonne âme aura réussi à comprendre mon charabia et à trouver une solution, merci d'avance
Bonjour,
il y a des choses en dessous de ce tableau
il faut absolument les mettre ailleurs,
excel vois qu'il y a une possibilité qu'il écrase ces données, c'est la raison de l'avertissement.
tu devrais mettre ces données en haut de la requête.
Malheureusement, ce n'est pas possible de les mettre au-dessus, je vais peut-être essayer de mettre sur un autre onglet même si cela ne m'arrange pas. J'ai aussi d'autres possibilités pour contourner mon soucis.
Dois-je marquer que le soucis est réglé même s'il ne l'est pas vraiment?
Merci pour votre réponse,
Harorhu