J'utilise Office 2013 et SQLServer 2008 R2. J'ai un proc VBA Excel qui insère une liste de commissions pour les ventes dans une base de données. L'une des colonnes est SalesRepID, qui doit clairement être valide. Quand il a été écrit, nous avions une équipe de vente plutôt statique, mais nous avons depuis acquis deux autres sociétés qui font un travail moins spécialisé, donc il y a beaucoup de changements dans la force de vente maintenant. Les méthodes actuelles ont une liste de repères de vente et de noms dans la plage nommée triée, qui est ensuite utilisée comme critère de validation: l'utilisateur reçoit une liste de représentants dans la liste déroulante dans Excel et quand ils en sélectionnent un, il utilise VLookup pour insérer le SalesRepID dans une cellule cachée. Ceci est ensuite utilisé dans l'opération d'insertion.Excel - Actualiser et valider des données à partir de SQL (VBA)
Ce que je veux faire maintenant est de donner aux utilisateurs un bouton d'actualisation (et idéalement exécuter l'actualisation à l'ouverture). Certains des billeurs travaillent à la maison le week-end, donc cela doit pouvoir fonctionner hors ligne (évidemment, si un nouveau représentant est ajouté et qu'ils ne sont pas rafraîchis, ils ne verront pas le nouveau représentant).
Je ne veux pas avoir à définir quoi que ce soit comme sources ODBC sur la machine
physique d'un utilisateur que je suis en train de trouver le moyen de résoudre ce problème. Une façon consiste à ajouter un bouton d'actualisation qui va exécuter une requête, insérer la liste actuelle des commerciaux et mettre à jour la plage (ou utiliser une plage dynamique) pour être le numéro actuel des enregistrements renvoyés. (Je suppose que je peux mettre à jour une adresse de plage nommée, ou qu'une plage dynamique mettra à jour si les données sont insérées à partir d'une requête SQL)
Par exemple:
Gamme initiale
1 Tom
2 Dick
3 Harry
Plage SalesReps = A1: B3
Hits utilisateur Actualiser: supprime le contenu des anciennes plages. insérer une nouvelle liste
Nouvelle gamme
1 Tom
2 Dick
3 Harry
4 Fred
salesreps Plage = A1: B4
Quelqu'un peut-il penser à une meilleure façon de cela?
Cordialement
Mark
Qu'avez-vous fait jusqu'à maintenant? –