limitation du nombre de colonne dans une macro....
3 réponses
Hervé Frank-Dangel
voici le prob:
j'ai cette macro :
> >Sub copy()
> > Dim rangeToCopy As Range
> > Dim i As Long
> > With Worksheets("Feuil1")
> > Set rangeToCopy = .Rows(1)
> > For i = 11 To 33401 Step 10
> > Set rangeToCopy = Union(rangeToCopy, .Rows(i))
> > Next
> > End With
> > rangeToCopy.copy Worksheets("Feuil2").Range("A1")
> > Set rangeToCopy = Nothing
> > End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
> avantage à délimiter le nombre réel de colonnes que ta plage
> > possède... car ça bouffe beaucoup de mémoire
> !)..............................
>
>
> excellent ça a marché !!!!!
>
> moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a une
> (la I ) qui est sans importance, mais je sais pas comment on fait....
>
>
>****************> Le but est d'optimiser cette macro en limitant le nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre
exploitable sur des petites config....)
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
JpPradier
Bonjour Hervé ta macro modifiée pour selectionner uniquement les colonnes A à G :
j-p
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Range("A1:G1") For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Range("A1:G1").Offset(i-1)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
Bonjour Hervé
ta macro modifiée pour selectionner uniquement les colonnes A à G :
j-p
Sub copy()
Dim rangeToCopy As Range
Dim i As Long
With Worksheets("Feuil1")
Set rangeToCopy = .Range("A1:G1")
For i = 11 To 33401 Step 10
Set rangeToCopy = Union(rangeToCopy, .Range("A1:G1").Offset(i-1))
Next
End With
rangeToCopy.copy Worksheets("Feuil2").Range("A1")
Set rangeToCopy = Nothing
End Sub
Bonjour Hervé ta macro modifiée pour selectionner uniquement les colonnes A à G :
j-p
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Range("A1:G1") For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Range("A1:G1").Offset(i-1)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
Hervé
Bonsoir Hervé, Je pense que le mieux est de passer par un tableau, comme il n'est pas possible de redimensionner la 1ère dimension de celui-ci, je supprime les lignes excédentaires après collage du tableau sur la feuille 2. Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une seconde ?? Teste avant pour voir si le résultat te convient :
Sub Tableau() Dim Tbl Dim I As Long Dim J As Integer Dim K As Long Tbl = Worksheets("Feuil1").[A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl 'suppression des lignes inutiles car pas possible de 'redimensionner le tableau .Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete End With Erase Tbl End Sub
Hervé.
"Hervé Frank-Dangel" a écrit dans le message news:
voici le prob:
j'ai cette macro :
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Rows(1) For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Rows(i)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire !)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre exploitable sur des petites config....)
merci d'avance !!!!
Bonsoir Hervé,
Je pense que le mieux est de passer par un tableau, comme il n'est pas
possible de redimensionner la 1ère dimension de celui-ci, je supprime les
lignes excédentaires après collage du tableau sur la feuille 2.
Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une
seconde ??
Teste avant pour voir si le résultat te convient :
Sub Tableau()
Dim Tbl
Dim I As Long
Dim J As Integer
Dim K As Long
Tbl = Worksheets("Feuil1").[A1:G33401]
K = 1
For I = 11 To 33401 Step 10
K = K + 1
For J = 1 To 7
Tbl(K, J) = Tbl(I, J)
Next J
Next I
With Worksheets("Feuil2")
.Range("A1:G" & K) = Tbl
'suppression des lignes inutiles car pas possible de
'redimensionner le tableau
.Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete
End With
Erase Tbl
End Sub
Hervé.
"Hervé Frank-Dangel" <nospam-hfrankdangel@frog-sa.com> a écrit dans le
message news: OOF1OM6UEHA.544@TK2MSFTNGP11.phx.gbl...
voici le prob:
j'ai cette macro :
Sub copy()
Dim rangeToCopy As Range
Dim i As Long
With Worksheets("Feuil1")
Set rangeToCopy = .Rows(1)
For i = 11 To 33401 Step 10
Set rangeToCopy = Union(rangeToCopy, .Rows(i))
Next
End With
rangeToCopy.copy Worksheets("Feuil2").Range("A1")
Set rangeToCopy = Nothing
End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire
!)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a
une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le
nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre
exploitable sur des petites config....)
Bonsoir Hervé, Je pense que le mieux est de passer par un tableau, comme il n'est pas possible de redimensionner la 1ère dimension de celui-ci, je supprime les lignes excédentaires après collage du tableau sur la feuille 2. Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une seconde ?? Teste avant pour voir si le résultat te convient :
Sub Tableau() Dim Tbl Dim I As Long Dim J As Integer Dim K As Long Tbl = Worksheets("Feuil1").[A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl 'suppression des lignes inutiles car pas possible de 'redimensionner le tableau .Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete End With Erase Tbl End Sub
Hervé.
"Hervé Frank-Dangel" a écrit dans le message news:
voici le prob:
j'ai cette macro :
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Rows(1) For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Rows(i)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire !)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre exploitable sur des petites config....)
merci d'avance !!!!
Hervé
Oups, J'ai dis une bêtise Il n'est pas la peine de supprimer les lignes car le fait de limiter la plage tronque le tableau : >>.Range("A1:G" & K) = Tbl Bien sûr il faut lire Chez "moi" la proc a mis une seconde
Sub Tableau() Dim Tbl As Variant Dim I As Long Dim J As Integer Dim K As Long Tbl = [A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl End With Erase Tbl End Sub
Hervé.
"Hervé" a écrit dans le message news: #
Bonsoir Hervé, Je pense que le mieux est de passer par un tableau, comme il n'est pas possible de redimensionner la 1ère dimension de celui-ci, je supprime les lignes excédentaires après collage du tableau sur la feuille 2. Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une seconde ?? Teste avant pour voir si le résultat te convient :
Sub Tableau() Dim Tbl Dim I As Long Dim J As Integer Dim K As Long Tbl = Worksheets("Feuil1").[A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl 'suppression des lignes inutiles car pas possible de 'redimensionner le tableau .Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete End With Erase Tbl End Sub
Hervé.
"Hervé Frank-Dangel" a écrit dans le message news:
voici le prob:
j'ai cette macro :
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Rows(1) For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Rows(i)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire !)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre exploitable sur des petites config....)
merci d'avance !!!!
Oups,
J'ai dis une bêtise
Il n'est pas la peine de supprimer les lignes car le fait de limiter la
plage tronque le tableau : >>.Range("A1:G" & K) = Tbl
Bien sûr il faut lire Chez "moi" la proc a mis une seconde
Sub Tableau()
Dim Tbl As Variant
Dim I As Long
Dim J As Integer
Dim K As Long
Tbl = [A1:G33401]
K = 1
For I = 11 To 33401 Step 10
K = K + 1
For J = 1 To 7
Tbl(K, J) = Tbl(I, J)
Next J
Next I
With Worksheets("Feuil2")
.Range("A1:G" & K) = Tbl
End With
Erase Tbl
End Sub
Hervé.
"Hervé" <hmsilve@wanadoo.fr> a écrit dans le message news:
#jkkkR9UEHA.1656@TK2MSFTNGP09.phx.gbl...
Bonsoir Hervé,
Je pense que le mieux est de passer par un tableau, comme il n'est pas
possible de redimensionner la 1ère dimension de celui-ci, je supprime les
lignes excédentaires après collage du tableau sur la feuille 2.
Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une
seconde ??
Teste avant pour voir si le résultat te convient :
Sub Tableau()
Dim Tbl
Dim I As Long
Dim J As Integer
Dim K As Long
Tbl = Worksheets("Feuil1").[A1:G33401]
K = 1
For I = 11 To 33401 Step 10
K = K + 1
For J = 1 To 7
Tbl(K, J) = Tbl(I, J)
Next J
Next I
With Worksheets("Feuil2")
.Range("A1:G" & K) = Tbl
'suppression des lignes inutiles car pas possible de
'redimensionner le tableau
.Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete
End With
Erase Tbl
End Sub
Hervé.
"Hervé Frank-Dangel" <nospam-hfrankdangel@frog-sa.com> a écrit dans le
message news: OOF1OM6UEHA.544@TK2MSFTNGP11.phx.gbl...
voici le prob:
j'ai cette macro :
Sub copy()
Dim rangeToCopy As Range
Dim i As Long
With Worksheets("Feuil1")
Set rangeToCopy = .Rows(1)
For i = 11 To 33401 Step 10
Set rangeToCopy = Union(rangeToCopy, .Rows(i))
Next
End With
rangeToCopy.copy Worksheets("Feuil2").Range("A1")
Set rangeToCopy = Nothing
End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire
!)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a
une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le
nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre
exploitable sur des petites config....)
Oups, J'ai dis une bêtise Il n'est pas la peine de supprimer les lignes car le fait de limiter la plage tronque le tableau : >>.Range("A1:G" & K) = Tbl Bien sûr il faut lire Chez "moi" la proc a mis une seconde
Sub Tableau() Dim Tbl As Variant Dim I As Long Dim J As Integer Dim K As Long Tbl = [A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl End With Erase Tbl End Sub
Hervé.
"Hervé" a écrit dans le message news: #
Bonsoir Hervé, Je pense que le mieux est de passer par un tableau, comme il n'est pas possible de redimensionner la 1ère dimension de celui-ci, je supprime les lignes excédentaires après collage du tableau sur la feuille 2. Il y a sûrement mieux mais je n'ai pas trouvé :o(. Chez la proc a mis une seconde ?? Teste avant pour voir si le résultat te convient :
Sub Tableau() Dim Tbl Dim I As Long Dim J As Integer Dim K As Long Tbl = Worksheets("Feuil1").[A1:G33401] K = 1 For I = 11 To 33401 Step 10 K = K + 1 For J = 1 To 7 Tbl(K, J) = Tbl(I, J) Next J Next I With Worksheets("Feuil2") .Range("A1:G" & K) = Tbl 'suppression des lignes inutiles car pas possible de 'redimensionner le tableau .Range(.Cells(K, 1), .Cells(33401, 1)).EntireRow.Delete End With Erase Tbl End Sub
Hervé.
"Hervé Frank-Dangel" a écrit dans le message news:
voici le prob:
j'ai cette macro :
Sub copy() Dim rangeToCopy As Range Dim i As Long With Worksheets("Feuil1") Set rangeToCopy = .Rows(1) For i = 11 To 33401 Step 10 Set rangeToCopy = Union(rangeToCopy, .Rows(i)) Next End With rangeToCopy.copy Worksheets("Feuil2").Range("A1") Set rangeToCopy = Nothing End Sub
...............(Comme ta plage de cellules est très grande, il y aurait
avantage à délimiter le nombre réel de colonnes que ta plage
possède... car ça bouffe beaucoup de mémoire !)..............................
excellent ça a marché !!!!!
moi je veux bien delimiter le nombre de colonnes, surtoutqu'il y'en a une
(la I ) qui est sans importance, mais je sais pas comment on fait....
****************> Le but est d'optimiser cette macro en limitant le nombre
de colonne (de A à G)
si une ame charitable sait comment je pourrais faire.....
(la macro marche très bien, c'est juste pour l'optimiser et la rendre exploitable sur des petites config....)