j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
=SOMMEPROD((fact!$A$5:$A$1995=C2)*(fact!$N$5:$N$1995="A")*(fact!$J$5:$J$1995
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite
pour le recalcul.
y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules
pourque la mise à jour se fasse rapidement
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
RaMA
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y) Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle "clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite pour le recalcul. y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules pourque la mise à jour se fasse rapidement
merci
Bonjour
Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact()
Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500")
R = Cli.Row
CumF = 0
If Not IsEmpty(Cli) Then
For Each x In Sheets("fact").Range("A5:A1995")
Y = x.Row
With Sheets("fact")
If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y)
Then
CumF = CumF + .Range("J" & Y)
End If
End With
Next x
Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures
est inscrit en col J de clients?
End If
Next Cli
End Sub
Salutations
RaMa
--
.
"mo manou" <mohamedmanouzi@hotmail.com> a écrit dans le message de
news:O0nUrmtdEHA.1644@tk2msftngp13.phx.gbl...
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on
extrait
les données à partir d'une base de données, sauf que ca prend une eternite
pour le recalcul.
y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules
pourque la mise à jour se fasse rapidement
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y) Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle "clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite pour le recalcul. y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules pourque la mise à jour se fasse rapidement
merci
mo manou
sauf que dans la formule =SOMMEPROD((fact!$A$5:$A$1995Â)*(fact!$N$5:$N$1995="A")*(fact!$J$5:$J$1995
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille "clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec comme critère les valeures de la colonne "N" égales à "A" et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu ma problématique.
"RaMA" a écrit dans le message de news:
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y)
Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite
pour le recalcul. y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules
pourque la mise à jour se fasse rapidement
merci
sauf que dans la formule
=SOMMEPROD((fact!$A$5:$A$1995Â)*(fact!$N$5:$N$1995="A")*(fact!$J$5:$J$1995
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille
"clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute
valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec comme
critère les valeures de la colonne "N" égales à "A"
et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu ma
problématique.
"RaMA" <rmarceauPas2Spam@free.fr> a écrit dans le message de
news:eFMrkPudEHA.4092@TK2MSFTNGP10.phx.gbl...
Bonjour
Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact()
Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500")
R = Cli.Row
CumF = 0
If Not IsEmpty(Cli) Then
For Each x In Sheets("fact").Range("A5:A1995")
Y = x.Row
With Sheets("fact")
If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" &
Y)
Then
CumF = CumF + .Range("J" & Y)
End If
End With
Next x
Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures
est inscrit en col J de clients?
End If
Next Cli
End Sub
Salutations
RaMa
--
.
"mo manou" <mohamedmanouzi@hotmail.com> a écrit dans le message de
news:O0nUrmtdEHA.1644@tk2msftngp13.phx.gbl...
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui
s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
sauf que dans la formule =SOMMEPROD((fact!$A$5:$A$1995Â)*(fact!$N$5:$N$1995="A")*(fact!$J$5:$J$1995
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille "clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec comme critère les valeures de la colonne "N" égales à "A" et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu ma problématique.
"RaMA" a écrit dans le message de news:
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y)
Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite
pour le recalcul. y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules
pourque la mise à jour se fasse rapidement
merci
RaMA
Bonjour Mohamed
Alors voilà et plus speed
Sub CumFact() Dim x, CumF, Cli Cli = UCase(Sheets("Clients").[C2]) CumF = 0 For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If UCase(x) = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y) Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").[G2] = CumF End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:%
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille "clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec comme
critère les valeures de la colonne "N" égales à "A" et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu ma
problématique.
"RaMA" a écrit dans le message de news:
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y)
Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures
est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
)*(fact!$O$5:$O$1995=1)), où "fact" une autre autre feuille où l'on extrait
les données à partir d'une base de données, sauf que ca prend une eternite
pour le recalcul. y a t il un moyen d'ecrire en vba cette formule ou trouver autres formules
pourque la mise à jour se fasse rapidement
merci
Bonjour Mohamed
Alors voilà et plus speed
Sub CumFact()
Dim x, CumF, Cli
Cli = UCase(Sheets("Clients").[C2])
CumF = 0
For Each x In Sheets("fact").Range("A5:A1995")
Y = x.Row
With Sheets("fact")
If UCase(x) = Cli And UCase(.Range("N" & Y)) = "A" And
.Range("O" & Y) Then
CumF = CumF + .Range("J" & Y)
End If
End With
Next x
Sheets("Clients").[G2] = CumF
End Sub
Salutations
RaMa
--
.
"mo manou" <mohamedmanouzi@hotmail.com> a écrit dans le message de
news:%23cnk2CvdEHA.4092@TK2MSFTNGP10.phx.gbl...
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille
"clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute
valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec
comme
critère les valeures de la colonne "N" égales à "A"
et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu
ma
problématique.
"RaMA" <rmarceauPas2Spam@free.fr> a écrit dans le message de
news:eFMrkPudEHA.4092@TK2MSFTNGP10.phx.gbl...
Bonjour
Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact()
Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500")
R = Cli.Row
CumF = 0
If Not IsEmpty(Cli) Then
For Each x In Sheets("fact").Range("A5:A1995")
Y = x.Row
With Sheets("fact")
If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" &
Y)
Then
CumF = CumF + .Range("J" & Y)
End If
End With
Next x
Sheets("Clients").Range("J" & R) = CumF 'le cumul de
factures
est inscrit en col J de clients?
End If
Next Cli
End Sub
Salutations
RaMa
--
.
"mo manou" <mohamedmanouzi@hotmail.com> a écrit dans le message de
news:O0nUrmtdEHA.1644@tk2msftngp13.phx.gbl...
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui
s'appelle
"clients", dans chaque cellules j'ai la formule suivantes:
Sub CumFact() Dim x, CumF, Cli Cli = UCase(Sheets("Clients").[C2]) CumF = 0 For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If UCase(x) = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y) Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").[G2] = CumF End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:%
)*(fact!$O$5:$O$1995=1)), est inscrite dans la cellule G2 de la feuille "clients" ca veut dire que faire la somme da la colonne "j" de "fact" pour
toute valeur C2 de la feuille "Clients" trouvée dans la feuille "fact" avec comme
critère les valeures de la colonne "N" égales à "A" et celle de la colonne "J" égales à 1. j'espère que j'ai éclaircie un peu ma
problématique.
"RaMA" a écrit dans le message de news:
Bonjour Si j'ai bien compris la structure de tes feuilles
ça pourrait être quelque chose comme ça
Sub CumFact() Dim x, CumF, Cli, R
For Each Cli In Sheets("clients").Range("C2:C500") R = Cli.Row CumF = 0 If Not IsEmpty(Cli) Then For Each x In Sheets("fact").Range("A5:A1995") Y = x.Row With Sheets("fact") If x = Cli And UCase(.Range("N" & Y)) = "A" And .Range("O" & Y)
Then CumF = CumF + .Range("J" & Y) End If End With Next x Sheets("Clients").Range("J" & R) = CumF 'le cumul de factures
est inscrit en col J de clients?
End If Next Cli End Sub
Salutations RaMa -- . "mo manou" a écrit dans le message de news:
Bonjour
j'ai un tableau de 5 colonnes et 500 lignes dans une feuille qui s'appelle
"clients", dans chaque cellules j'ai la formule suivantes: