Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

somme si equivalent vba

  • Initiateur de la discussion Initiateur de la discussion kenshiro
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kenshiro

Guest
Hello a tous,
j'espere que tout le monde passe une bonne paire de fête !!

Voila, je cherche a modifier le code VBA suivant :

Sub SommeSiPayment()
Range("AE" & lig).Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-24]=0,""mandat simple"",SUMIF(R2C4:R15084C4,RC[-27],R2C18:R15084C18)/RC[-24])"
End Sub

Plutot que de modifié chaque ligne une a une de ma colonne AE... de mon classeur VBA (procédure super longue),
J'aimerais renseigné un tableau :

Sub SommeSiPayment()

For 1 to lig Do
TableauSiPay(lig, 1) = ...
Next

Range("AE1:AE" & lig).Value = TableauSiPay

End Sub

Le problème est que je ne trouve pas comment transformer ma formule XLS en format VBA.

Le SUMIF me pose probleme.

Quelqu'un a t'il déja bossé sur la question ?
peut il m'aider ?

merci d'avance 😀
 
Re : somme si equivalent vba

Hello Pascal,

Voila.. la premiere macro SommeSiPayment fonctionne très bien.

Le probleme est quelle boucle sur un tableau de 15000 ligne environ.
Par conséquent le temps d'execution est d'environ 5 minutes voir plus suivant le PC.

Mon but est de renseigner un tableau défini ainsi :

Dim TableauSiPay() As Variant

avec la macro ci dessous a modifier, pour quel amene au meme resultat que la 1ere version (qui fonctione) mais en 10 seconde 😀

Sub SommeSiPaymentV2()
For 1 to Nombredeligne Do
TableauSiPay(Nombredeligne, 1) = formule a trouver
Next
Range("A1:A" & NbrligKey).Value = TableauSiPay

EndSub

J'esperer que je suis clair, sinon j'envoi une copie de mon fichier xls..

Merci d'avance
 
Re : somme si equivalent vba

Pascal,

Je joint un fichier avec les deux types de procédure.

Une autre qui rempli cellule par cellule.
Une qui remplie par le biais d'un tableau (ce que je veux faire)

Le temps d'exécution de la seconde est extra rapide.

J'espere qu'avec ce fichier ma demande sera plus claire.

a+
 

Pièces jointes

Re : somme si equivalent vba

Bonsoir,

Salut, Pascal...🙂

kenshiro, regarde le code suivant, et dis si cela est plus rapide....

Code:
Sub Macro6()
Dim MesNums As Object, Cel As Range, DerLig As Long
Dim X As Double
Set MesNums = CreateObject("Scripting.Dictionary")
DerLig = [A65000].End(xlUp).Row
For Each Cel In Range("G2:G" & DerLig)
    If Cel.Value = 0 Then
        MesNums.Add Cel.Row, "mandat simple"
    Else
        X = Application.SumIf(Range("D2:D" & DerLig), Cells(Cel.Row, 4), Range("R2:R" & DerLig)) / Cel
        MesNums.Add Cel.Row, X
    End If
Next Cel
Range("AF2").Resize(MesNums.Count, 1).Value = Application.Transpose(MesNums.items)
End Sub

j'ai présumé que la dernière cellule pouvait être calculée dans la colonne A (toutes les cellules sont complétées dans cette colonne)

A adapter, sinon
 
Re : somme si equivalent vba

Bonsoir !

Merci a tous de vous être penché sur mon pb.

> JB : simple et efficace, ca marche du tonnère !
la fonction autofill risque de tourner souvent dans mes classeurs

> bhbh : ta fonction marche aussi au poil, et accelère drolement mon code initial.

Resultat des courses :
Jb = 10 sec.
Bhbh = 20sec.
Ma proc = 5 min.

Je garde donc ta proc JB 😉

PI : Je vais l'appliquer à plusieurs colonne de mon tableau. Les formules vont changer dans chaque colonnes des sommes.si, des recherche v, etc.

Merci a tous pour votre contribution.

a++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…