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 :

Calcul matriciel sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2019
    Messages : 12
    Par défaut Calcul matriciel sous VBA
    Bonjour

    Je dois effectuer des calculs sur plusieurs colonnes et plusieurs lignes.

    Au lieu de passer par des boucles For, y'aurait il un moyen d'executer les calculs des données de chaque lignes et chaque colonne en meme temps, sachant que chaque données est independante de l'autre.

    Car mon programme met trop de temps a tourner, et on m'a proposé de passer par des calculs matriciels pour accelerer le programme mais je ne trouve nulle part comment faire.

    Merci

    Evan

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par matrixevan Voir le message
    Bonjour,

    Ayant eu le même problème que vous sur des extractions de plus de 20 000 enregistrements, j'ai organisé mes tableaux comme ci-dessous.
    Il s'agit ici de numéros de commande pour lesquels je souhaite connaître les sommes (commandées, dépensées, à réceptionner) des postes de commande. Les valeurs sont récupérées au dessus de la ligne de titre avec des fonctions Sommeprod, en faisant varier le numéro de commande en A8 avec une procédure. C'est instantané.

    En plus, j'annule le recalcul automatique pendant la procédure car j'ai beaucoup de formules, je recalcule seulement les 3 cellules à récupérer à chaque nouvelle commande.
    Pièce jointe 520866

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2019
    Messages : 12
    Par défaut
    Tu aurais la formule en VBA ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par matrixevan Voir le message

    A adapter : fonction-boucle-multiplier-variables

  5. #5
    Futur Membre du Club Avatar de Desperados_78
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    Salut,

    Je te conseil de faire tes traitements de données et calculs en passant par des TAB et DIC et non sur les cellules directement tu vas gagner énormément de temps de traitement.
    Si tu me précises ton besoin je peux te montrer comment faire.

    Pierre

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2019
    Messages : 12
    Par défaut
    je veux bien des precision.

    Un gros j'ai un tableau de plusieurs prix qui peuvent etre des regles, suspens ou des total. Et en fonction de ces derneires critères le formules n'est pas la meme. Exemple : pour les regles je dois multipleir le prix de bases par un coefficient.

    Voila

  7. #7
    Futur Membre du Club Avatar de Desperados_78
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    Je te propose une solution.

    Voila une fonction pour récupérer tout ton tableau dans une variable TAB_Feuil1.
    Il te suffira de faire tes traitements dans la variable directement et non sur les cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    '*********Fonction pour capturer un TAB commencant en A1 d'une feuille**********'
    Function Capture_Tab(NomFeuille)
     
    Dim TAB_TEMP()
     
    Sheets(NomFeuille).Select
     
    With ActiveWorkbook.Sheets(NomFeuille)
        lr = Cells(Rows.Count, 1).End(xlUp).Row
        lc = Cells(1, Columns.Count).End(xlToLeft).Column
        TAB_TEMP = .Range(.Cells(1, 1), .Cells(lr, lc)).Value
    End With
     
    Capture_Tab = TAB_TEMP
     
    End Function
     
    '*********Appel de la fonction**********'
    sub Main()
     
    Dim TAB_Feuil1()
    NomFeuille1 = "Feuill1"
    TAB_Feuil1 = Capture_Tab(NomFeuille1)
     
    end sub
    Après avoir fait les calculs et modifié ta variable TAB_Feuil1 il faudra que tu 'Resize' ton tableau sur ta feuille pour mettre à jour tes données.
    Attention le Resize ne colle que des données, donc si tu as besoin de garder des mise en forme ext il faut faire attention a resize au bon endroit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets(NomFeuille1).Select
    [A1].Resize(UBound(TAB_Feuil1, 1), UBound(TAB_Feuil1, 2)) = TAB_Feuil1
    En passant par une variable tu évites à Excel de faire des traitements sur les cellules ce qui prend beaucoup de temps de traitement.
    Si tu as besoin de plus de précision n’hésite pas.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2008, 12h27
  2. operations mathematiques dans une variable matricielle Sous VBA
    Par Mr_JF dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/01/2008, 13h16
  3. [Calculs VBA] Test de condition sous VBA
    Par guen dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/11/2007, 17h52
  4. Calcul de cap sous vba
    Par lucy22 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2007, 10h44

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