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

Macros et VBA Excel Discussion :

Application d'une formule matricielle en vba avec des variables ligne/colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Le Phénomène
    Homme Profil pro
    Cadre Bancaire
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Cadre Bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Par défaut Application d'une formule matricielle en vba avec des variables ligne/colonne
    Bonjour (et bonnes vacances pour ceux/celles qui y sont déjà),

    Je souhaite optimiser un "très" lourd fichier créé par un trés gentil stagiaire aujourd'hui parti vers de nouvelles aventures
    En effet, le truc fait juste plus de 20Mo et j'ai tout le temps de déjeuner, boire un café et faire un tour quand il tourne.

    Ce fichier comporte de nombreuses formules matricielles dont celle ci-après que j'ai simplifiée :

    {=RANG.POURCENTAGE.INCLURE(SI($G:$G="Issuer Reco";$H:$H;"");$H3))} que l'on pourrait même simplifier jusqu'à {=RANG.POURCENTAGE.INCLURE($H:$H;$H3)}.

    Lorsque je retranscris cette petite chose dans un sub, j'obtiens un résultat satisfaisant sur une cellule avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        Issuer_Reco.Cells(3, 41) = Evaluate([PERCENTRANK.INC($H:$H,$H3)])
    End Sub
    Mon problème est que je n'arrive pas à retranscrire la partie de la colonne $H:$H et de la cellule $H3 avec des variables afin des les incorporer dans une boucle.
    Le truc tout bête pour faire le recalcul en matriciel (je ne veux que le résultat dans la cellule et non une formule) ligne par ligne avec selon les cas changement de la colonne (matrice) de référence du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Calculs_Level2()
        Dim i As Integer
        For i = 3 To Issuer_Reco.Cells(Rows.Count, 1).End(xlUp).Row
            Issuer_Reco.Cells(i, 41) = Evaluate([PercentRank.INC($H:$H,i)])
        Next i
    End Sub
    Selon les cas, le résultat me renvoi #NOM? (dans le cas présent) ou #VALEUR! si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Calculs_Level2()
        Dim i As Integer
        For i = 3 To Issuer_Reco.Cells(Rows.Count, 1).End(xlUp).Row
            Issuer_Reco.Cells(i, 41) = Evaluate([PercentRank.INC($H:$H," & i " &)])
        Next i
    End Sub
    Je suis certain que cela me crève les yeux, mais là... j'ai aussi besoin de vacances (bientôt )

    Un grand MERCI par avance pour votre précieuse aide.

    Très bonne fin de journée à toutes/tous

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu as perdu le $H en cours de route.
    Mais je ne suis pas sûr que tu gagnes du temps ainsi.
    Tu devrais coller ta formule sur toute la plage en une fois, et finir par ta_plage.value = ta_plage.value pour éliminer les formules.
    eric

  3. #3
    Membre averti Avatar de Le Phénomène
    Homme Profil pro
    Cadre Bancaire
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Cadre Bancaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Par défaut
    Bonjour Eriiic,
    Et merci pour cette réponse.

    Citation Envoyé par eriiic Voir le message
    Bonjour,
    tu as perdu le $H en cours de route.
    En effet, tu as raison. J'ai tenté d'affecter un range par combinaison colonne/ligne, de faire la combinaison dans la formule, par une autre variable... sans succès.
    J'ai même osé un Variant...
    Je remarque juste que si l'on "casse" la composante d'Evaluate entre [], je n'obtiens plus de résultat.

    Citation Envoyé par eriiic Voir le message
    Mais je ne suis pas sûr que tu gagnes du temps ainsi.
    Tu devrais coller ta formule sur toute la plage en une fois, et finir par ta_plage.value = ta_plage.value pour éliminer les formules.
    eric
    Cela m'a traversé l'esprit en effet cette nuit. Mon souci étant que je travaille en ligne à ligne avec des résultats dépendants d'autres (le stagiaire à dû en manger du doliprane... moi aussi).
    Mais tu as certainement raison. Je vais revoir si je peux réorganiser l'algo autrement afin de travailler par plage.

    Toutefois, si quelqu'un d'autre à une idée sur le sujet... Je reste preneur (et la communauté aussi, je pense !)

    Je tente et vous reviens pour fermer le sujet selon les résultats.

    En tout cas, encore merci.
    Franck

Discussions similaires

  1. [AC-2013] Comment bien rédiger une requête SQL en VBA avec des critères
    Par alexdre dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/08/2016, 10h21
  2. [XL-2003] Problème avec une formule Matricielle
    Par willou893 dans le forum Excel
    Réponses: 9
    Dernier message: 01/12/2011, 14h25
  3. [AC-2003] creer une requête en VBA avec des variables
    Par qung88 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/02/2011, 15h19
  4. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h21
  5. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h20

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