Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens des
résultats tres differents et c'est la seconde méthode qui est la plus rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens des
résultats tres differents et c'est la seconde méthode qui est la plus rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens des
résultats tres differents et c'est la seconde méthode qui est la plus rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$626a14ce@news.free.fr...
Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$626a14ce@news.free.fr...
Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Bonjour,
1.
Faire des "ReDim Preserve" pour chaque ligne quand tu connais déjà le
nombre
total de lignes (var02+1-11), c'est pas très optimisé.
Il faudrait donc 'sortir' le ReDim Preserve à l'EXTÉRIEUR de la boucle.
ReDim Preserve stock(0 To var02-11)
For each Cellule in Sheets("stock").Range(colonne1 ...
2.
Pourquoi ne pas recourir à l'assignation unique?
Ça fait plusieurs fois qu'on te mentionne cette solution.
Pourquoi ne te convient-elle pas?
Par exemple:
Dim stock as variant
stock=Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:42106891$0$12840$Salut
pour faire suites à des développement que j'ai fait les semaines
précédentes, avec notamment l'aide de plusieurs personnes ici, je me
trouve
devant qquechose de bizarre : j'ai essayé 2 facons de déclarer
différentes
matrices à chaque fois ayant la meme taille, la premiere, en faisant une
boucle et en incrémentant toutes les matrices, et la seconde, en faisant
une
boucle par matrice... a premiere vue, la premiere devrait etre la plus
rapide, mais en ajoutant un chrono en début et fin de macro, j'obtiens
des
résultats tres differents et c'est la seconde méthode qui est la plus
rapide
! ca vous parait logique ?
ci joint les déclaration, la version ou je ne fais qu'une boucle est
commentée et c'est la version a plusieurs boucles qui est fonctionnelle
d'avance merci pour vos commentaires ;)
elicend
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
'i = 0
'toutes les matrices ont le meme nombre de lignes
'For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
'Stock
'ReDim Preserve stock(0 To i)
'stock(i) = Sheets("stock").Cells(i + 11, var01 + 2).Value
'reappro
'ReDim Preserve reappro(0 To i)
'reappro(i) = Sheets("reappro").Cells(i + 11, var01 + 2).Value
'commandes pays A
'ReDim Preserve comA(0 To i)
'comA(i) = Sheets("comA").Cells(i + 11, var01 + 2).Value
'commandes pays B
'ReDim Preserve comB(0 To i)
'comB(i) = Sheets("comB").Cells(i + 11, var01 + 2).Value
'commandes pays C
'ReDim Preserve comC(0 To i)
'comC(i) = Sheets("comC").Cells(i + 11, var01 + 2).Value
'ventes pays A
'ReDim Preserve ventA(0 To i)
'ventA(i) = Sheets("venA").Cells(i + 11, var01 + 2).Value
'ventes pays B
'ReDim Preserve ventB(0 To i)
'ventB(i) = Sheets("venB").Cells(i + 11, var01 + 2).Value
'ventes pays C
'ReDim Preserve ventC(0 To i)
'ventC(i) = Sheets("venC").Cells(i + 11, var01 + 2).Value
'reliquat pays A
'ReDim Preserve reliA(0 To i)
'reliA(i) = Sheets("reliA").Cells(i + 11, var01 + 2).Value
'reliquat pays B
'ReDim Preserve reliB(0 To i)
'reliB(i) = Sheets("reliB").Cells(i + 11, var01 + 2).Value
'reliquat pays C
'ReDim Preserve reliC(0 To i)
'reliC(i) = Sheets("reliC").Cells(i + 11, var01 + 2)
'i = i + 1
'Next cellule
'MsgBox stock(5)
'MsgBox reappro(5)
' On commence par remplir le stock avec les données de la feuille
i = 0
For Each cellule In Sheets("stock").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve stock(0 To i)
stock(i) = cellule
i = i + 1
Next cellule
'on remplie la réappro du jour
i = 0
For Each cellule In Sheets("reappro").Range(colonne1 & "11:" & colonne1
&
var02)
ReDim Preserve reappro(0 To i)
reappro(i) = cellule
i = i + 1
Next cellule
'on remplie la commande A
i = 0
For Each cellule In Sheets("comA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comA(0 To i)
comA(i) = cellule
i = i + 1
Next cellule
'on remplie la commande B
i = 0
For Each cellule In Sheets("comB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comB(0 To i)
comB(i) = cellule
i = i + 1
Next cellule
'on remplie la commande C
i = 0
For Each cellule In Sheets("comC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve comC(0 To i)
comC(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes A
i = 0
For Each cellule In Sheets("venA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventA(0 To i)
ventA(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes B
i = 0
For Each cellule In Sheets("venB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventB(0 To i)
ventB(i) = cellule
i = i + 1
Next cellule
'on remplie les ventes C
i = 0
For Each cellule In Sheets("venC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve ventC(0 To i)
ventC(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats A
i = 0
For Each cellule In Sheets("reliA").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliA(0 To i)
reliA(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats B
i = 0
For Each cellule In Sheets("reliB").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliB(0 To i)
reliB(i) = cellule
i = i + 1
Next cellule
'on remplie les reliquats C
i = 0
For Each cellule In Sheets("reliC").Range(colonne1 & "11:" & colonne1 &
var02)
ReDim Preserve reliC(0 To i)
reliC(i) = cellule
i = i + 1
Next cellule
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 & var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 & var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 & var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
Salut,
Pour voir la troisième ligne de stocks :
Msgbox stock(3,1)
Il faut que tu saches que stock devient un tableau à 2 dimensions (la
deuxième
dimension est de 1, parce qu'il y a UNE colonne).
Exécute le code pas à pas, puis affiche la vue sur tes variables (dans
l'éditeur
VBA) et regarde ce qu'elles contiennent après les assignations.
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4211c500$0$352$bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant
j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
Salut,
Pour voir la troisième ligne de stocks :
Msgbox stock(3,1)
Il faut que tu saches que stock devient un tableau à 2 dimensions (la
deuxième
dimension est de 1, parce qu'il y a UNE colonne).
Exécute le code pas à pas, puis affiche la vue sur tes variables (dans
l'éditeur
VBA) et regarde ce qu'elles contiennent après les assignations.
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4211c500$0$352$626a14ce@news.free.fr...
bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant
j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
Salut,
Pour voir la troisième ligne de stocks :
Msgbox stock(3,1)
Il faut que tu saches que stock devient un tableau à 2 dimensions (la
deuxième
dimension est de 1, parce qu'il y a UNE colonne).
Exécute le code pas à pas, puis affiche la vue sur tes variables (dans
l'éditeur
VBA) et regarde ce qu'elles contiennent après les assignations.
Salutations,
Daniel M.
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4211c500$0$352$bonjour,
j'ai fait le test ce matin, mais ca me renvoie une erreur... pourtant
j'ai
calqué ta synthaxe :
dim stock, reappro,... as variant
'--------------------------------------------------
'Déclaration et mise en forme de toute les matrices
'--------------------------------------------------
stock = Sheets("stock").Range(colonne1 & "11:" & colonne1 & var02).Value
reappro = Sheets("reappro").Range(colonne1 & "11:" & colonne1 &
var02).Value
comA = Sheets("comA").Range(colonne1 & "11:" & colonne1 & var02).Value
comB = Sheets("comB").Range(colonne1 & "11:" & colonne1 & var02).Value
comC = Sheets("comC").Range(colonne1 & "11:" & colonne1 & var02).Value
ventA = Sheets("venA").Range(colonne1 & "11:" & colonne1 & var02).Value
ventB = Sheets("venB").Range(colonne1 & "11:" & colonne1 & var02).Value
ventC = Sheets("venC").Range(colonne1 & "11:" & colonne1 & var02).Value
reliA = Sheets("reliA").Range(colonne1 & "11:" & colonne1 & var02).Value
reliB = Sheets("reliB").Range(colonne1 & "11:" & colonne1 & var02).Value
reliC = Sheets("reliC").Range(colonne1 & "11:" & colonne1 & var02).Value
'--------------------------------------------------
erreur 9, l'indice n'appartient pas à la selection, si je fais un msgbox
stock(1) par exemple, c'est pareil :(
étrange non ?
sinon c'est sur ca raccourci considérablement le code :)
elicend.
donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à l'aube
;)
donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à l'aube
;)
donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à l'aube
;)
Bonjour,donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à
l'aube
;)
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)
Salutations,
Daniel M.
Bonjour,
donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à
l'aube
;)
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)
Salutations,
Daniel M.
Bonjour,donc si je suis je vais devoir en utilisant cette optimisation, corriger
tous mes calculs en remplacant par exemple
stock(j) = stock(j)-comA(j)
par
stock(j,1) = stock(j,1)-comA(j,1)
ca c'est uen correction assez fastidieuse, je vais travailler sur mon
interface cette fin d'apres midi et je me lancerai la dedans demain à
l'aube
;)
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)
Salutations,
Daniel M.
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)
Pour éviter de créer un object à 2 dimensions, il y a ça (mais le
Transpose
ralentit l'exécution un peu). Moi, je préfère la méthode 'clean' sans
Transpose.
comA = Application.Transpose(Sheets("comA"). _
Range(colonne1 & "11:" & colonne1 & var02).Value)