Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir fai re
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 14 2.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d 'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d 'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d 'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la vale ur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exe mple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'inde x 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la vale ur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exe mple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'inde x 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la vale ur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exe mple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'inde x 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JBC'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille ave c une
matrice pour faire le moins possible référence à la feuille ( ca me
fait gagné pas mal de temps), donc je préfere au maximum évit er d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizai nes de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As D ouble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la va leur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvo ir faire
une somme avec différents élément de cette matrice, par e xemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'in dex 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cett e chose
toute simple.
Merci pour votre aide.
J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JB
C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille ave c une
matrice pour faire le moins possible référence à la feuille ( ca me
fait gagné pas mal de temps), donc je préfere au maximum évit er d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizai nes de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As D ouble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la va leur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvo ir faire
une somme avec différents élément de cette matrice, par e xemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'in dex 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cett e chose
toute simple.
Merci pour votre aide.
J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JBC'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille ave c une
matrice pour faire le moins possible référence à la feuille ( ca me
fait gagné pas mal de temps), donc je préfere au maximum évit er d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizai nes de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As D ouble
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la va leur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvo ir faire
une somme avec différents élément de cette matrice, par e xemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'in dex 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cett e chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 > mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 > mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 > mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 > mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
C'est pour ca que les contenus de mes cellules sont déjà en mémoire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 > mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 > mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egale a
120, et si cette somme est aussi supérieur à 0 pour les éléments de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, puis
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette chose
toute simple.
Merci pour votre aide.
Ok....
je viens de comprendre le concept (fatigué !!!!!)
Merci pour ton aide.....J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JBC'est pour ca que les contenus de mes cellules sont déjà en mém oire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être eg ale a
120, et si cette somme est aussi supérieur à 0 pour les éléme nts de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules , puis
deviens ensuite indépendante de ces dernières. Je travaille a vec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum év iter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice re f.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs diz aines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pou voir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l' index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire ce tte chose
toute simple.
Merci pour votre aide.
Ok....
je viens de comprendre le concept (fatigué !!!!!)
Merci pour ton aide.....
J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JB
C'est pour ca que les contenus de mes cellules sont déjà en mém oire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être eg ale a
120, et si cette somme est aussi supérieur à 0 pour les éléme nts de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules , puis
deviens ensuite indépendante de ces dernières. Je travaille a vec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum év iter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice re f.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs diz aines de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pou voir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l' index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire ce tte chose
toute simple.
Merci pour votre aide.
Ok....
je viens de comprendre le concept (fatigué !!!!!)
Merci pour ton aide.....J'ai changé Table en Matable :
Sub essaiSansFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
d = 3: f = 7
For i = d To f
temp = temp + Matable(i, 1)
Next i
MsgBox temp
End Sub
Sub essaiAvecFonction()
Matable = [B2:B10] ' transfert Array (ton tableau)
MsgBox MaSomme(Matable, 3, 7)
End Sub
Function MaSomme(a, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
JBC'est pour ca que les contenus de mes cellules sont déjà en mém oire,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être eg ale a
120, et si cette somme est aussi supérieur à 0 pour les éléme nts de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Dou ble
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules , puis
deviens ensuite indépendante de ces dernières. Je travaille a vec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum év iter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice re f.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs diz aines de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pou voir faire
une somme avec différents élément de cette matrice, par exemple :
Je voudrais sommer toutes les valeurs entre l'index 120 et l' index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire ce tte chose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
Pas tout à fait d'accord inspecteur Robillard..
En utilisant Set ce ne sont pas les _contenus_ de tes cellules que tu r écupères
(donc les paramètres qui t'intéressent) mais les _objets_ cellules eu x-même.
Pour affecter les valeurs des cellules d'une plage à un tableau, il faut
utiliser ce genre de déclaration :
Dim ref '(déclare un tableau de Variants non dimensionné)
refþuil5.Range("G11:G587").Value
----------
Ange Ounis
----------C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Doub le
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
Pas tout à fait d'accord inspecteur Robillard..
En utilisant Set ce ne sont pas les _contenus_ de tes cellules que tu r écupères
(donc les paramètres qui t'intéressent) mais les _objets_ cellules eu x-même.
Pour affecter les valeurs des cellules d'une plage à un tableau, il faut
utiliser ce genre de déclaration :
Dim ref '(déclare un tableau de Variants non dimensionné)
ref=Feuil5.Range("G11:G587").Value
----------
Ange Ounis
----------
C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.
Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JB
Merci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).
Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Doub le
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JB
Bonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.
C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
Pas tout à fait d'accord inspecteur Robillard..
En utilisant Set ce ne sont pas les _contenus_ de tes cellules que tu r écupères
(donc les paramètres qui t'intéressent) mais les _objets_ cellules eu x-même.
Pour affecter les valeurs des cellules d'une plage à un tableau, il faut
utiliser ce genre de déclaration :
Dim ref '(déclare un tableau de Variants non dimensionné)
refþuil5.Range("G11:G587").Value
----------
Ange Ounis
----------C'est pour ca que les contenus de mes cellules sont déjà en mémoi re,
et que je ne veux pas avoir à le refaire.
Extrait de ma macro :
'Mise en mémoire des parametres
Set ref = Feuil5.Range("G11:G587")
ligne_fichier = 0
ouverture_fichier "data"
ouverture_fichier "log"
mouvement 5, entete
LGN = Sheets("Data").Cells(65536, 1).End(xlUp).Row
'<<<Mise en mémoire de l'ensemble de la table>>>
Set table = Nothing
Set table = Feuil2.Range("A1:IV" & LGN)
For i = 2 To LGN
ligne_fichier = ligne_fichier + 1
If SOMMEDESELEMENTDEREFDE120A142 > 0 then r = 120: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 120->142
If SOMMEDESELEMENTDEREFDE143A165 > 0 then r = 143: step1 =
mouvement_adr(i): mouvement 5, step1 'ref 143->165
'La valeur du r doit pouvoir être modifier en fonction de la somme
dans ref.
'Si cette somme des élément de 120 à 142 alors r doit être egal e a
120, et si cette somme est aussi supérieur à 0 pour les élément s de
143 à 165, elle doit ensuite prendre la valeur 143.
Dans ton exemple, tu fait de nouveau référence à des cellules, or
c'est justement ce que je veux éviter, puisque mes cellules sont
déjà en mémoire
Merci pour ton aide.Les calculs en mémoire centrale sont très rapides.
Function MaSomme(champ As Range, d As Integer, f As Integer) As Double
a = champ ' copie dans un Array pour performances
temp = 0
For i = d To f
temp = temp + a(i, 1)
Next i
MaSomme = temp
End Function
Sub essai()
x = MaSomme([B2:B5], 2, 3)
MsgBox x
End Sub
JBMerci JB, mais mon tableau se remplit avec le contenu de cellules, pu is
deviens ensuite indépendante de ces dernières. Je travaille avec une
matrice pour faire le moins possible référence à la feuille (ca me
fait gagné pas mal de temps), donc je préfere au maximum éviter d'y
retourner.
Donc faire la somme des éléments 120 à 142 de ma matrice ref.
Un truc genre :
Application.WorkSheetFunction.Sum(ref(120):ref(142))
Et le plus optimisé possible pour ne pas rajouter du temps de
traitement à cette macro (qui peut déjà durer plusieurs dizaine s de
minutes en fonction du volume de données).Bonjour,
Function MaSomme(champ As Range, d As Integer, f As Integer) As Doub le
temp = 0
For i = d To f
temp = temp + champ(i)
Next i
MaSomme = temp
End Function
Sub essai()
MsgBox MaSomme([B2:B5], 2, 3)
End Sub
Cordialement JBBonjour,
dans une macro, je créer une matrice qui correspond à la valeur de
plusieurs cellule :
Set ref = Feuil5.Range("G11:G587")
Pour valider un certain nombre d'opération, je voudrais pouvoir f aire
une somme avec différents élément de cette matrice, par exemp le :
Je voudrais sommer toutes les valeurs entre l'index 120 et l'index 142.
Je n'arrive aps à trouver la bonne syntaxe pour écrire cette ch ose
toute simple.
Merci pour votre aide.