Macro vs. SumProduct

Hilton

XLDnaute Nouveau
Bonjour à tous,

Après avoir passé la journée à me décarcasser sans avancer sur ma problèmatique, je me decide enfin à vous consulter afin d'avoir un feedback constructif et éclairé.

J'ai créé un document excel afin de contrôler une interface que j'utilise, et qui transfert les factures d'un système X à un système Y. Comme le serveur lag souvent, il arrive que j'obtienne des doublons et il est nécessaire que je les corrige manuellement :(

Comme sur le système Y les factures sont détaillées, il est nécessaire que j'applique la formule SUMPRODUCT afin de reconstituer les montants totaux et les comparer aux montants du système X.

Je souhaite automatiser cette formule via VBA car on parle d'une plage de données de plus de 500 lignes, et lorsque j'applique la formule à ces 200 à 500 lignes, Excel met trois plombes à afficher les résultat.

Cette formule est la suivante : "=SUMPRODUCT((C:C=A1)*B:B)".

Rien de bien compliqué pourtant.

J'ai bien essayé de passer par une macro du type :

Code:
Sub TOTAL()
    For i = 1 To 1000
    If Cells(i, 4) = " " Then
    Cells(i, 8).FormulaR1C1 = "=SUMPRODUCT((C[-5]=RC[-7])*C[-6])"
    End If
    Next i
End Sub

...mais c'est pareil, ça met beaucoup trop de temps à afficher les résultats de par la gestion de la formule.

Je souhaitais créer un petit code de type .Evaluate ou Worsheetfunction.SumProduct, mais je n'ai pas réussi à retranscrire ma formule. Votre aide, de quelque manière que ce soit, serait appreciée !

Je suis bien sûr disponible pour de plus amples infos. Merci !

Hilton
 

david84

XLDnaute Barbatruc
Re : Macro vs. SumProduct

Bonjour et bienvenu sur le forum,
Concernant ta demande, il est recommandé de joindre un petit fichier exposant ton attente. Cela fera gagner du temps à tout le monde et te permettra d'obtenir plus facilement de l'aide.
Concernant ta formule, à 1ère vue, travailler sur des colonnes entières (A:A, C:C) n'est pas recommandé et allonge considérablement le temps de traitement, donc il est préférable de nommer les plages de manière dynamique en utilisant la fonction DECALER.
Sinon passer par EVALUATE ou par une autre procédure est également possible mais sans fichier, difficile de te proposer une solution adaptée.
A+
 

Hilton

XLDnaute Nouveau
Re : Macro vs. SumProduct

Concernant ta formule, à 1ère vue, travailler sur des colonnes entières (A:A, C:C) n'est pas recommandé et allonge considérablement le temps de traitement, donc il est préférable de nommer les plages de manière dynamique en utilisant la fonction DECALER.

Bonsoir David,

Je te remercie pour ton commentaire qui mine de rien m'a considérablement avancé. Effectivement, en travaillant sur une plage prédéfinie, le traitement est beaucoup moins long.

Je vais faire de plus amples recherches sur la fonction DECALER et adapter une Macro en EVALUATE.

Un grand merci.

Hilton

PS : Bien vue, ta signature :eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 168
Messages
2 085 906
Membres
103 028
dernier inscrit
MLAGHITI