Bonjour les champions,
La seule différence entre les 2 procédures est l'emploi du set.
Quelqu'un peut il m'expliquer précisément ce que fait le set ?
Merci,
Sub Fast()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Set rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
Sub Slow()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ghislain Benrais
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le vrai code : Sub Slow()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Set rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub Sub Fast()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le vrai
code :
Sub Slow()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Set rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
Sub Fast()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le vrai code : Sub Slow()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Set rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub Sub Fast()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub
docm
Bonjour Ghislain Benrais.
rngValues = ActiveSheet.UsedRange crée un tableau de type VARIANT contenant seulement les valeurs.
Set rngValues = ActiveSheet.UsedRange crée un objet qui est une copie conforme de ActiveSheet.UsedRange avec toutes ses multiples propriétés.
L'objet rngValues occupe un espace mémoire beaucoup plus considérable que le tableau rngValues et donc, rechercher un élément de l'objet rngValues prend plus de temps que de chercher un élément du tableau rngValues.
Amicalement docm
"Ghislain Benrais" wrote in message news:e5k771$t5h$
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le vrai
code : Sub Slow()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Set rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub Sub Fast()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub
Bonjour Ghislain Benrais.
rngValues = ActiveSheet.UsedRange
crée un tableau de type VARIANT contenant seulement les valeurs.
Set rngValues = ActiveSheet.UsedRange
crée un objet qui est une copie conforme de ActiveSheet.UsedRange avec
toutes ses multiples propriétés.
L'objet rngValues occupe un espace mémoire beaucoup plus considérable que le
tableau rngValues et donc, rechercher un élément de l'objet rngValues prend
plus de temps que de chercher un élément du tableau rngValues.
Amicalement
docm
"Ghislain Benrais" <NOSPAMghislain.benrais@csa-fr.com> wrote in message
news:e5k771$t5h$1@news1.completel.net...
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le
vrai
code :
Sub Slow()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Set rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
Sub Fast()
Sheets("1 - v1").Activate
Application.StatusBar = "Process"
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
rngValues = ActiveSheet.UsedRange
For I = 1 To lastRow
For J = 1 To lastCol
strValue = rngValues(I, J)
Next J
Next I
Application.StatusBar = ""
End Sub
rngValues = ActiveSheet.UsedRange crée un tableau de type VARIANT contenant seulement les valeurs.
Set rngValues = ActiveSheet.UsedRange crée un objet qui est une copie conforme de ActiveSheet.UsedRange avec toutes ses multiples propriétés.
L'objet rngValues occupe un espace mémoire beaucoup plus considérable que le tableau rngValues et donc, rechercher un élément de l'objet rngValues prend plus de temps que de chercher un élément du tableau rngValues.
Amicalement docm
"Ghislain Benrais" wrote in message news:e5k771$t5h$
Oooops! On l'aura remarqué, les noms des procédures sont inversées, le vrai
code : Sub Slow()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Set rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub Sub Fast()
Sheets("1 - v1").Activate Application.StatusBar = "Process" lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column rngValues = ActiveSheet.UsedRange For I = 1 To lastRow For J = 1 To lastCol strValue = rngValues(I, J) Next J Next I Application.StatusBar = "" End Sub