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 :

Formules Excel générées par une requete SQL [XL-2010]


Sujet :

Excel

  1. #1
    Membre régulier
    Profil pro
    DSI
    Inscrit en
    Mars 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Mars 2009
    Messages : 102
    Points : 73
    Points
    73
    Par défaut Formules Excel générées par une requete SQL
    Bonjour,

    J'alimente une feuille Excel à l'aide d'une requete SQL.
    (Par VB, un truc du genre SQL_RS.Open SQL_Requete, SQL_Cnx où SQL_Requete contient un 'Execute sp_Toto')

    Pas de problème: Ca fonctionne bien. Ca retourne 4000 lignes sur 36 colonnes que je mets ensuite sous la forme de tableau via VB.

    Ensuite, j'ai besoin de rajouter des formules dans les colonnes 37 & 38.

    J'ai donc fait une boucle VB sur la feuille, en utilisant FORMULALOCAL.
    Ca marche, mais ça prend un temps dingue.

    J'ai donc eu l'idée de rajouter les formules sous forme de constates dans la requete SQL.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ,(st.st_valeur_pr * vs.taux) / 100 AS [Mt Provision]
    		,(st.st_valeur_pr + st.St_V_AugmRev - St_V_EffComm) * vs.taux / 100 AS [Mt Provision EC]
    		,'=RECHERCHEV([@[N° Chassis]];Tb_CHASSIS;12;FAUX)' AS Formule1
    		,'=STXT([@Période];1;1)' AS Formule2
    Ca marche presque: Les formules sont bien ramenées dans les cellules, mais elles apparaissent sous forme de texte.
    L'option Formule/Calculer la feuille ne change rien.
    La seule solution trouvée pour l'instant est de faire F2 + Entrée et le résultat s'affiche correctement.

    Est ce que quelqu'un a la solution pour faire F2+Entrée en automatique sur l'ensemble des 8000 cellules ?

    Merci d'avance.


    PS.
    Pour info, quand j'utilise la notation L1C1 dans les formules en lieu et place des noms de colonne du tableau c'est OK. Pas besoin de F2+Entrée.
    Mais j'aimerai bien conserver la syntaxe @nomdecolonne au cas ou mes requetes devraient évoluer.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,
    Citation Envoyé par BoromSikim Voir le message
    Ensuite, j'ai besoin de rajouter des formules dans les colonnes 37 & 38.

    J'ai donc fait une boucle VB sur la feuille, en utilisant FORMULALOCAL.
    Ca marche, mais ça prend un temps dingue.
    Je suppose que tu as oublié de désactiver
    • le mode de calcul automatique (Application.Calculation)


    • les procédures événementielles (Application.EnableEvents)


    • le rafraîchissement d'écran (Application.ScreenUpdating) …


    Selon les formules, elles peuvent être copiées en une fois par bloc de cellules soit par .Formula & consœurs
    soit par la méthode AutoFill

  3. #3
    Membre habitué
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2010
    Messages : 120
    Points : 175
    Points
    175
    Par défaut
    Salut,

    Dans ton code essaye de forcer le format de cellules des colonnes 37 et 38 en "standard"

  4. #4
    Membre régulier
    Profil pro
    DSI
    Inscrit en
    Mars 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Mars 2009
    Messages : 102
    Points : 73
    Points
    73
    Par défaut
    @lucorah: --> Ca ne marche pas.

    @Marc-L: --> EnableEvents + Screenupdate étaient bien positionnés.
    Application.calculation était zappé.
    J'ai rajouté Application.Calculation = xlCalculationManual avant la boucle for et Application.Calculation = xlCalculationAutomatic + ActiveSheet.Calculate apres le next.

    Amélioration par rapport à la boucle précédente, mais cela demeure lent.
    Cependant je pense que cela sera acceptable pour l'utilisateur.

    Merci à tous les deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. je veux remplir Jtree par une requete SQL
    Par chr3mn dans le forum Persistance des données
    Réponses: 3
    Dernier message: 26/02/2013, 16h22
  2. Réponses: 2
    Dernier message: 25/05/2009, 16h53
  3. Réponses: 3
    Dernier message: 20/11/2006, 13h17
  4. Remplacer Dlookup par une requete SQL
    Par nbouseem dans le forum IHM
    Réponses: 9
    Dernier message: 09/06/2006, 17h45
  5. Regroupement par tranche dans une requete SQL (MS SQL)
    Par AODRENN dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/03/2006, 14h21

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