Bonjour
Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec?
prd = "Berlingot"
Set znAch = Sheets("Achats").Range("E2:E" &
Sheets("Achats").[E65536].End(xlUp).Row)
Set Rgrg = znAch.Offset(0, 3)
'------essai 1------
test = Evaluate("Sum((znAch= prd) *Rgrg)")
N° d'erreur=2029
'------essai 2-------
test = Evaluate(Sum((znAch = prd) * Rgrg)))
sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non
définie
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec? prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non définie
Bonjour
Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec?
prd = "Berlingot"
Set znAch = Sheets("Achats").Range("E2:E" &
Sheets("Achats").[E65536].End(xlUp).Row)
Set Rgrg = znAch.Offset(0, 3)
'------essai 1------
test = Evaluate("Sum((znAch= prd) *Rgrg)")
N° d'erreur 29
'------essai 2-------
test = Evaluate(Sum((znAch = prd) * Rgrg)))
sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non
définie
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec? prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non définie
Fred Pour répondre enlevez nsp
isabelle
oup's, ça ne fonctionne pas. j'avais testé auparavant
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec? prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non définie
Fred Pour répondre enlevez nsp
oup's, ça ne fonctionne pas. j'avais testé auparavant
Bonjour
Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec?
prd = "Berlingot"
Set znAch = Sheets("Achats").Range("E2:E" &
Sheets("Achats").[E65536].End(xlUp).Row)
Set Rgrg = znAch.Offset(0, 3)
'------essai 1------
test = Evaluate("Sum((znAch= prd) *Rgrg)")
N° d'erreur 29
'------essai 2-------
test = Evaluate(Sum((znAch = prd) * Rgrg)))
sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non
définie
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec? prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non définie
Fred Pour répondre enlevez nsp
Frédo P.
Bonjour Isabelle Si j'ai bien compris, il faut employer des plages nommées et non pas des variables(range) ? si tel est le cas cela me parrait pas trop convenable ,les lignes de codes sont dans une boucle For each avec plus de 200 valeurs différentes pour prd. Voici la partie de la procédure concernée qui fonctionne mais en procéde à successions d'additions , je souhaite gagner un vitesse d'exécution avec une autre méthode si possible. Sub Restock() Dim ana As Integer, anc As Integer, anb As Integer, c As Object, d As Object, O_i As Byte, prd As String Dim zn As Range, co As String, lg As Integer, col As Byte, znAch As Range, j As Byte, campa As String Dim tranche1() As Single, tranche2() As Single, tranche3() As Single, tranche4() As Single Dim surf As Single, coef As Single, act1 As Range, act2 As Range, act3 As Range, act4 As Range, dab$, dad$
col = Sheets("stocks").[a3] - 6 ReDim tranche1(col), tranche2(col), tranche3(col), tranche4(col) Set act1 = Sheets("stocks").Range("E5:E" & col + 5) Set act2 = Sheets("stocks").Range("G5:G" & col + 5) Set act3 = Sheets("stocks").Range("I5:I" & col + 5) Set act4 = Sheets("stocks").Range("K5:K" & col + 5) ana = Sheets("stocks").[O3] ' -------------------- année des achats Set zn = Sheets("stocks").Range("A5:A" & Sheets("stocks").[E65000].End(xlUp).Row) Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) For Each c In zn prd = c If c.Value <> "" Then 'recherche du produit sur la colonne et attribuer à chacun les Qtés correspondantes achetées / année With znAch Set d = .Find(prd, LookIn:=xlValues, lookat:=xlWhole) If Not d Is Nothing Then dab = d.Address Do If d.Offset(0, 3) > 0 And d.Offset(0, 7) > 0 And d.Offset(0, -4) <> "" And d.Offset(0, -2) = ana Then co = d.Offset(0, -4) O_i = Application.Match(co, Range("groupe")) - 1' -------groupe=GIE de Quatre personnes anb = d.Offset(0, -2).Value If anb = ana Then Select Case O_i Case 0 tranche1(c.Row - 5) = tranche1(c.Row - 5) + d.Offset(0, 3).Value Case 1 tranche2(c.Row - 5) = tranche2(c.Row - 5) + d.Offset(0, 3).Value Case 2 tranche3(c.Row - 5) = tranche3(c.Row - 5) + d.Offset(0, 3).Value Case 3 tranche4(c.Row - 5) = tranche4(c.Row - 5) + d.Offset(0, 3).Value End Select End If End If Set d = .FindNext(d) If Not d Is Nothing Then dad = d.Address End If co = "" Loop While Not d Is Nothing And dad <> dab End If End With
End If
Next c 'Sheets("feuil1").[B4] = 1
'-------------------- act1.Value = Application.WorksheetFunction.Transpose(tranche1) act2.Value = Application.WorksheetFunction.Transpose(tranche2) act3.Value = Application.WorksheetFunction.Transpose(tranche3) act4.Value = Application.WorksheetFunction.Transpose(tranche4) End Sub
-- Fred Pour répondre enlevez nsp
"isabelle" a écrit dans le message de news:
oup's, ça ne fonctionne pas. j'avais testé auparavant
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec?
prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non
définie
Fred Pour répondre enlevez nsp
Bonjour Isabelle
Si j'ai bien compris, il faut employer des plages nommées et non pas des
variables(range) ? si tel est le cas cela me parrait pas trop convenable
,les lignes de codes sont dans une boucle For each avec plus de 200 valeurs
différentes pour prd.
Voici la partie de la procédure concernée qui fonctionne mais en procéde à
successions d'additions , je souhaite gagner un vitesse d'exécution avec une
autre méthode si possible.
Sub Restock()
Dim ana As Integer, anc As Integer, anb As Integer, c As Object, d As
Object, O_i As Byte, prd As String
Dim zn As Range, co As String, lg As Integer, col As Byte, znAch As Range, j
As Byte, campa As String
Dim tranche1() As Single, tranche2() As Single, tranche3() As Single,
tranche4() As Single
Dim surf As Single, coef As Single, act1 As Range, act2 As Range, act3 As
Range, act4 As Range, dab$, dad$
col = Sheets("stocks").[a3] - 6
ReDim tranche1(col), tranche2(col), tranche3(col), tranche4(col)
Set act1 = Sheets("stocks").Range("E5:E" & col + 5)
Set act2 = Sheets("stocks").Range("G5:G" & col + 5)
Set act3 = Sheets("stocks").Range("I5:I" & col + 5)
Set act4 = Sheets("stocks").Range("K5:K" & col + 5)
ana = Sheets("stocks").[O3] ' -------------------- année des achats
Set zn = Sheets("stocks").Range("A5:A" &
Sheets("stocks").[E65000].End(xlUp).Row)
Set znAch = Sheets("Achats").Range("E2:E" &
Sheets("Achats").[E65536].End(xlUp).Row)
For Each c In zn
prd = c
If c.Value <> "" Then
'recherche du produit sur la colonne et attribuer à chacun les Qtés
correspondantes achetées / année
With znAch
Set d = .Find(prd, LookIn:=xlValues, lookat:=xlWhole)
If Not d Is Nothing Then
dab = d.Address
Do
If d.Offset(0, 3) > 0 And d.Offset(0, 7) > 0 And d.Offset(0, -4) <>
"" And d.Offset(0, -2) = ana Then
co = d.Offset(0, -4)
O_i = Application.Match(co, Range("groupe")) -
1' -------groupe=GIE de Quatre personnes
anb = d.Offset(0, -2).Value
If anb = ana Then
Select Case O_i
Case 0
tranche1(c.Row - 5) = tranche1(c.Row - 5) + d.Offset(0,
3).Value
Case 1
tranche2(c.Row - 5) = tranche2(c.Row - 5) + d.Offset(0,
3).Value
Case 2
tranche3(c.Row - 5) = tranche3(c.Row - 5) + d.Offset(0,
3).Value
Case 3
tranche4(c.Row - 5) = tranche4(c.Row - 5) + d.Offset(0,
3).Value
End Select
End If
End If
Set d = .FindNext(d)
If Not d Is Nothing Then
dad = d.Address
End If
co = ""
Loop While Not d Is Nothing And dad <> dab
End If
End With
End If
Next c
'Sheets("feuil1").[B4] = 1
'--------------------
act1.Value = Application.WorksheetFunction.Transpose(tranche1)
act2.Value = Application.WorksheetFunction.Transpose(tranche2)
act3.Value = Application.WorksheetFunction.Transpose(tranche3)
act4.Value = Application.WorksheetFunction.Transpose(tranche4)
End Sub
--
Fred
Pour répondre enlevez nsp
"isabelle" <as.isabellevIE@videotron.ca> a écrit dans le message de news:
3FA24B0F.B038566E@videotron.ca...
oup's, ça ne fonctionne pas. j'avais testé auparavant
Bonjour
Est ce que dans ce cas les plages znAch & Rgrg serait la cause de
l'échec?
prd = "Berlingot"
Set znAch = Sheets("Achats").Range("E2:E" &
Sheets("Achats").[E65536].End(xlUp).Row)
Set Rgrg = znAch.Offset(0, 3)
'------essai 1------
test = Evaluate("Sum((znAch= prd) *Rgrg)")
N° d'erreur 29
'------essai 2-------
test = Evaluate(Sum((znAch = prd) * Rgrg)))
sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction
non
Bonjour Isabelle Si j'ai bien compris, il faut employer des plages nommées et non pas des variables(range) ? si tel est le cas cela me parrait pas trop convenable ,les lignes de codes sont dans une boucle For each avec plus de 200 valeurs différentes pour prd. Voici la partie de la procédure concernée qui fonctionne mais en procéde à successions d'additions , je souhaite gagner un vitesse d'exécution avec une autre méthode si possible. Sub Restock() Dim ana As Integer, anc As Integer, anb As Integer, c As Object, d As Object, O_i As Byte, prd As String Dim zn As Range, co As String, lg As Integer, col As Byte, znAch As Range, j As Byte, campa As String Dim tranche1() As Single, tranche2() As Single, tranche3() As Single, tranche4() As Single Dim surf As Single, coef As Single, act1 As Range, act2 As Range, act3 As Range, act4 As Range, dab$, dad$
col = Sheets("stocks").[a3] - 6 ReDim tranche1(col), tranche2(col), tranche3(col), tranche4(col) Set act1 = Sheets("stocks").Range("E5:E" & col + 5) Set act2 = Sheets("stocks").Range("G5:G" & col + 5) Set act3 = Sheets("stocks").Range("I5:I" & col + 5) Set act4 = Sheets("stocks").Range("K5:K" & col + 5) ana = Sheets("stocks").[O3] ' -------------------- année des achats Set zn = Sheets("stocks").Range("A5:A" & Sheets("stocks").[E65000].End(xlUp).Row) Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) For Each c In zn prd = c If c.Value <> "" Then 'recherche du produit sur la colonne et attribuer à chacun les Qtés correspondantes achetées / année With znAch Set d = .Find(prd, LookIn:=xlValues, lookat:=xlWhole) If Not d Is Nothing Then dab = d.Address Do If d.Offset(0, 3) > 0 And d.Offset(0, 7) > 0 And d.Offset(0, -4) <> "" And d.Offset(0, -2) = ana Then co = d.Offset(0, -4) O_i = Application.Match(co, Range("groupe")) - 1' -------groupe=GIE de Quatre personnes anb = d.Offset(0, -2).Value If anb = ana Then Select Case O_i Case 0 tranche1(c.Row - 5) = tranche1(c.Row - 5) + d.Offset(0, 3).Value Case 1 tranche2(c.Row - 5) = tranche2(c.Row - 5) + d.Offset(0, 3).Value Case 2 tranche3(c.Row - 5) = tranche3(c.Row - 5) + d.Offset(0, 3).Value Case 3 tranche4(c.Row - 5) = tranche4(c.Row - 5) + d.Offset(0, 3).Value End Select End If End If Set d = .FindNext(d) If Not d Is Nothing Then dad = d.Address End If co = "" Loop While Not d Is Nothing And dad <> dab End If End With
End If
Next c 'Sheets("feuil1").[B4] = 1
'-------------------- act1.Value = Application.WorksheetFunction.Transpose(tranche1) act2.Value = Application.WorksheetFunction.Transpose(tranche2) act3.Value = Application.WorksheetFunction.Transpose(tranche3) act4.Value = Application.WorksheetFunction.Transpose(tranche4) End Sub
-- Fred Pour répondre enlevez nsp
"isabelle" a écrit dans le message de news:
oup's, ça ne fonctionne pas. j'avais testé auparavant
Bonjour Est ce que dans ce cas les plages znAch & Rgrg serait la cause de l'échec?
prd = "Berlingot" Set znAch = Sheets("Achats").Range("E2:E" & Sheets("Achats").[E65536].End(xlUp).Row) Set Rgrg = znAch.Offset(0, 3) '------essai 1------ test = Evaluate("Sum((znAch= prd) *Rgrg)") N° d'erreur 29 '------essai 2------- test = Evaluate(Sum((znAch = prd) * Rgrg))) sélection de "Rgrg" et message: Erreur de compilation: Sub ou Fonction non
Bonjour alain Comment veux tu que l'on trouve ça tout seul J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y mettre une ficelle pour pas qu'elles s'envollent.En plus il n'y aucun exemple sur le prrrésent-tement sujet!!
Bonjour alain
Comment veux tu que l'on trouve ça tout seul
J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout
apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y
mettre une ficelle pour pas qu'elles s'envollent.En plus il n'y aucun
exemple sur le prrrésent-tement sujet!!
--
Fred
Pour répondre enlevez nsp
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
bntrpk$g71$1@news-reader1.wanadoo.fr...
Bonjour alain Comment veux tu que l'on trouve ça tout seul J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y mettre une ficelle pour pas qu'elles s'envollent.En plus il n'y aucun exemple sur le prrrésent-tement sujet!!
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")") serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu plus haut Cad une suite d'additions ?
J'ai oublié de poser la question
est ce que
Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")")
serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu
plus haut Cad une suite d'additions ?
--
Fred
Pour répondre enlevez nsp
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
bntrpk$g71$1@news-reader1.wanadoo.fr...
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")") serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu plus haut Cad une suite d'additions ?
C'est juste un "exercice de style" sur la fonction Evaluate et sa syntaxe (façons de "ficeler" la chaîne de caractère avec des variables pour que Evaluate puisse l'interpréter correctement) ! Pour d'autres exemples http://disciplus.simplex.free.fr/classeursxl/av-evaluate.zip NB : La solution d'utiliser des plages nommées ou/et des noms définis (réponse d'Isabelle) , simplifie l'écriture
J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y mettre une ficelle pour pas qu'elles s'envollent.
;-)
AV
Comment veux tu que l'on trouve ça tout seul
C'est juste un "exercice de style" sur la fonction Evaluate et sa syntaxe
(façons de "ficeler" la chaîne de caractère avec des variables pour que Evaluate
puisse l'interpréter correctement) !
Pour d'autres exemples
http://disciplus.simplex.free.fr/classeursxl/av-evaluate.zip
NB : La solution d'utiliser des plages nommées ou/et des noms définis (réponse
d'Isabelle) , simplifie l'écriture
J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout
apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y
mettre une ficelle pour pas qu'elles s'envollent.
C'est juste un "exercice de style" sur la fonction Evaluate et sa syntaxe (façons de "ficeler" la chaîne de caractère avec des variables pour que Evaluate puisse l'interpréter correctement) ! Pour d'autres exemples http://disciplus.simplex.free.fr/classeursxl/av-evaluate.zip NB : La solution d'utiliser des plages nommées ou/et des noms définis (réponse d'Isabelle) , simplifie l'écriture
J'ai bien Excel 2000 et VBA (Osman Eyrolles), quand j'aurrai fini de tout apprendre il faudra que je fasse 2 trous dans toutes les feuilles et d'y mettre une ficelle pour pas qu'elles s'envollent.
;-)
AV
AV
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")") serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des plages restreintes, ça devrait être invisible ! Le mieux c'est que tu fasses le test sur d'énOOrmes plages Pour les tests, je passe la main :-)
AV
J'ai oublié de poser la question est ce que
Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")")
serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu
plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des plages
restreintes, ça devrait être invisible !
Le mieux c'est que tu fasses le test sur d'énOOrmes plages
Pour les tests, je passe la main :-)
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")") serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des plages restreintes, ça devrait être invisible ! Le mieux c'est que tu fasses le test sur d'énOOrmes plages Pour les tests, je passe la main :-)
AV
Frédo P.
Mille merci Cher professeur pour la main:-) je m'y attele. une HS: peut être sais tu, ChrisV ?? J'appréciait aussi ces interventions, nous ferait il pas un pêché??
-- Fred Pour répondre enlevez nsp
"AV" a écrit dans le message de news: bnu0lq$mdv$
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")")
serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu
plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des plages
restreintes, ça devrait être invisible ! Le mieux c'est que tu fasses le test sur d'énOOrmes plages Pour les tests, je passe la main :-)
AV
Mille merci Cher professeur pour la main:-) je m'y attele.
une HS: peut être sais tu, ChrisV ??
J'appréciait aussi ces interventions, nous ferait il pas un pêché??
--
Fred
Pour répondre enlevez nsp
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
bnu0lq$mdv$1@news-reader4.wanadoo.fr...
J'ai oublié de poser la question est ce que
Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg]
&")")
serait gagnant en temps d'exécution en lieu et place de ce que j'ai
pondu
plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des
plages
restreintes, ça devrait être invisible !
Le mieux c'est que tu fasses le test sur d'énOOrmes plages
Pour les tests, je passe la main :-)
Mille merci Cher professeur pour la main:-) je m'y attele. une HS: peut être sais tu, ChrisV ?? J'appréciait aussi ces interventions, nous ferait il pas un pêché??
-- Fred Pour répondre enlevez nsp
"AV" a écrit dans le message de news: bnu0lq$mdv$
J'ai oublié de poser la question est ce que Evaluate("Sum((" & [znAch] & "=" & """" & Prd & """" & ") *" & [Rgrg] &")")
serait gagnant en temps d'exécution en lieu et place de ce que j'ai pondu
plus haut Cad une suite d'additions ?
A priori oui dans la mesure ou tu passes par une boucle mais sur des plages
restreintes, ça devrait être invisible ! Le mieux c'est que tu fasses le test sur d'énOOrmes plages Pour les tests, je passe la main :-)