Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Existe-t-il une solution rapide pour recopier vers le bas une ligne de formule en VBA ?

22 réponses
Avatar
G. L
Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules jusqu'à la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose à
nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par paquet de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000 lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard

10 réponses

1 2 3
Avatar
Daniel
Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As Integer
Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de news:

Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules jusqu'à
la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose à
nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par paquet
de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard




Avatar
Daniel
Change la ligne :
Tabl(i) = Range("AU1").Offset(0, i).Formula
en :
Tabl(i) = Range("AU1").Offset(0, i).FormulaR1C1
Daniel

"Daniel" a écrit dans le message de news:

Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As Integer
Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de news:

Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules jusqu'à
la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose à
nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par paquet
de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard








Avatar
Daniel
Et dim Ligne as long ; sinon, je vais me faire tuer.
Daniel
"Daniel" a écrit dans le message de news:

Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As Integer
Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de news:

Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules jusqu'à
la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose à
nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par paquet
de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard








Avatar
LSteph
Bonsoir Daniel,

;o)) ici non pas tuer personne!

"Daniel" a écrit dans le message de news:
OQ4TD%
Et dim Ligne as long ; sinon, je vais me faire tuer.
Daniel
"Daniel" a écrit dans le message de news:

Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As Integer
Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:
Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules jusqu'à
la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose
à
nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par
paquet de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard












Avatar
jps
non, pas tuer, daniel, juste scuder un peu...d'ailleurs, le nick annonce la
couleur, non?
le coco...
jps

"LSteph" a écrit dans le message de news:

Bonsoir Daniel,

;o)) ici non pas tuer personne!



Avatar
G. L
Bonjour Daniel,

Merci bien pour la réponse que je vais mettre en place de ce pas.

Effectivement ici personne ne tue ! si ce n'est le moral du nul que je suis
face à performance et pertinence des réponses faites à des questions pas
toujours faciles à comprendre.

Encore bravo à ce groupe qui sait bien vivre (Liège 2005 ;) ) et fait bien
vivre le groupe !

Cordialement

Gérard




"Daniel" a écrit dans le message de
news:OQ4TD%
Et dim Ligne as long ; sinon, je vais me faire tuer.
Daniel
"Daniel" a écrit dans le message de news:

Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As
Integer


Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:



Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules
jusqu'à



la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se pose
à



nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par
paquet



de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard












Avatar
Daniel
Bonjour.
En fait, on pouvait faire plus simple, mais j'avais envie de me faire
plaisir avec un tableau.
Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de news:

Bonjour Daniel,

Merci bien pour la réponse que je vais mettre en place de ce pas.

Effectivement ici personne ne tue ! si ce n'est le moral du nul que je
suis
face à performance et pertinence des réponses faites à des questions pas
toujours faciles à comprendre.

Encore bravo à ce groupe qui sait bien vivre (Liège 2005 ;) ) et fait
bien
vivre le groupe !

Cordialement

Gérard




"Daniel" a écrit dans le message de
news:OQ4TD%
Et dim Ligne as long ; sinon, je vais me faire tuer.
Daniel
"Daniel" a écrit dans le message de news:

Bonsoir.
A tester :

Dim Ligne As Integer, Tabl(44) As String, col As Integer, i As
Integer


Ligne = Range("D65536").End(xlUp).Row
col = Range("AU1.CL1").Columns.Count
For i = 0 To col - 1
Tabl(i) = Range("AU1").Offset(0, i).Formula
Next i
For j = 1 To Ligne
For i = 0 To col - 1
Var = Range("AU" & j).Offset(0, i).Address
Range("AU" & j).Offset(0, i).Formula = Tabl(i)
Next i
Next j

Cordialement.
Daniel
"G. " <sugere~KillPub~@online.fr> a écrit dans le message de
news:



Bonsoir,

Existe-t-il une solution rapide pour recopier vers le bas une ligne de
formule en VBA ?

De la colonne AU à la colonne CL j'ai des formules diverses dont une
majorité de RechercheV, par macro je recopie toutes ces formules
jusqu'à



la
dernière ligne de la colonne D.

Tout ce passe bien tant que je ne dépasse pas 2000 lignes après j'ai
un
message « sélection trop grande » J'ai contourné le problème en
sectionnant
la copie par groupe de 11 colonnes mais dans ce cas le problème se
pose
à



nouveau avant d'arriver à la fin.

J'ai essayé avec une boucle de faire la copie ligne à ligne ou par
paquet



de
qqs lignes mais c'est très long car je peux avoir jusqu'à 20 - 25000
lignes.



Ce qui est utilisé :

ligne = Range("D65536").End(xlUp).Row

Range("AU40:CL" & ligne).Copy

Range("AU40:CL" & ligne).PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, SkipBlanks _

:úlse, Transpose:úlse

Application.CutCopyMode = False



Merci d'avance et bon WE

Cordialement

Gérard
















Avatar
abcd
il y a une solution sans macro:
sélectionner la série de cellules concernées

on peut par exemple taper
12 CTRL+ENTRÉE
pour entrer 12 dans toutes les cellules sélectionnées

on peut de même entrer une formule (les références relatives se font
par rapport à la cellule active, généralement la première sélectionnée
de la série, elle reste sur fond blanc et c'est dans celle là qu'on écrit)
Bref, après avoir sélectionner par exemple A1:A10
taper par exemple
± CTRL+ENTRÉE

et A1:A10 possède maintenant les formules ± puis ² etc. jusqu'à ±0
Avatar
abcd
je rappelle au passage que si la plage à sélectionnoer est grande et
remplie ed blancs (on ne peut alors pas utiliser CTRL+flèche) alors on
peut choisir la sélection en tapant son nom

il y a une "zone nom" pour cela

donc on peut par exemple directement entrer A1:B10000
(par exemple)
Avatar
Daniel
Bonjour.
Le problème, c'est qu'il y a 44 colonnes et qu'il faut répéter autant de
fois la manip.
Cordialement.
Daniel
"abcd" a écrit dans le message de news:

je rappelle au passage que si la plage à sélectionnoer est grande et
remplie ed blancs (on ne peut alors pas utiliser CTRL+flèche) alors on
peut choisir la sélection en tapant son nom

il y a une "zone nom" pour cela

donc on peut par exemple directement entrer A1:B10000
(par exemple)


1 2 3