OVH Cloud OVH Cloud

Copie de formule vers le bas

6 réponses
Avatar
Mesa
Bjr,
j'utilise le code suivant pour copier vers le bas une=20
formule, mais le probl=E8me est que des fois il se peut que=20
la fin soit juste une ligne et donc la macro plante.
De plus existe t il une autre formule pour copier qui=20
serait plus rapide que celle ci car je la trouve lourde et=20
peu rapide.
Merci d'avance.

Le code :
'ici on demasque tout
Cells.Select
Selection.EntireRow.Hidden =3D False
Range("B6:Z256").delete
'masque les champs en dessous des Isin
Cells(65536, 1).Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden =3D True
'met la formule security name dans la cellule B6 et l'=E9tire
Range("B6").Select
ActiveCell.FormulaR1C1 =3D "=3Dblp(RC[-
1],""Security_Name"")"
Selection.AutoFill Destination:=3DRange(Selection,=20
Selection.End(xlDown)), Type:=3DxlFillDefault

6 réponses

Avatar
Michel Gaboly
Bonjour,

Il faut éliminer tous les Select inutiles, qui ralentissent le traitement :

Dim Ref As Range, Ref2 As Range
'ici on demasque tout
Cells.EntireRow.Hidden = False
Range("B6:Z256").Delete
'masque les champs en dessous des Isin
Set Ref = Cells(65536, 1).End(xlUp).Offset(3)
With Ref
Range(.Offset(0), .End(xlDown)).EntireRow.Hidden = True
End With
Set Ref = Range("B6")
With Ref
.FormulaR1C1 = "=blp(RC[-1], ""Security_Name"")"
.AutoFill Destination:=Range(.Offset(0), .End(xlDown)), Type:=xlFillDefault
End With



Bjr,
j'utilise le code suivant pour copier vers le bas une
formule, mais le problème est que des fois il se peut que
la fin soit juste une ligne et donc la macro plante.
De plus existe t il une autre formule pour copier qui
serait plus rapide que celle ci car je la trouve lourde et
peu rapide.
Merci d'avance.

Le code :
'ici on demasque tout
Cells.Select
Selection.EntireRow.Hidden = False
Range("B6:Z256").delete
'masque les champs en dessous des Isin
Cells(65536, 1).Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
'met la formule security name dans la cellule B6 et l'étire
Range("B6").Select
ActiveCell.FormulaR1C1 = "=blp(RC[-
1],""Security_Name"")"
Selection.AutoFill Destination:=Range(Selection,
Selection.End(xlDown)), Type:=xlFillDefault


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Mesa
J'ai toujours mon pb qui veut que quand je n'ai qu'une
ligne la macro bug car la selection ne trouve pas le
xldown, peut on enlever ce type d'alerte ? Ou existe t il
un moyen de virer ce problème.
Merci d'avance pour ce pb et un gros merci pour le 1er !
@+ Eric

-----Message d'origine-----
Bonjour,

Il faut éliminer tous les Select inutiles, qui
ralentissent le traitement :


Dim Ref As Range, Ref2 As Range
'ici on demasque tout
Cells.EntireRow.Hidden = False
Range("B6:Z256").Delete
'masque les champs en dessous des Isin
Set Ref = Cells(65536, 1).End(xlUp).Offset(3)
With Ref
Range(.Offset(0), .End
(xlDown)).EntireRow.Hidden = True

End With
Set Ref = Range("B6")
With Ref
.FormulaR1C1 = "=blp(RC[-
1], ""Security_Name"")"

.AutoFill Destination:=Range(.Offset(0), .End
(xlDown)), Type:=xlFillDefault

End With



Bjr,
j'utilise le code suivant pour copier vers le bas une
formule, mais le problème est que des fois il se peut
que


la fin soit juste une ligne et donc la macro plante.
De plus existe t il une autre formule pour copier qui
serait plus rapide que celle ci car je la trouve lourde
et


peu rapide.
Merci d'avance.

Le code :
'ici on demasque tout
Cells.Select
Selection.EntireRow.Hidden = False
Range("B6:Z256").delete
'masque les champs en dessous des Isin
Cells(65536, 1).Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
'met la formule security name dans la cellule B6 et
l'étire


Range("B6").Select
ActiveCell.FormulaR1C1 = "=blp(RC[-
1],""Security_Name"")"
Selection.AutoFill Destination:=Range(Selection,
Selection.End(xlDown)), Type:=xlFillDefault


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




Avatar
Est il possible de modifier la formule sur le
.End(xlDown) pour faire .End(xldown)-1 pour que ça remonte
d'une cellule ? Dans ce cas il me suffit de modifier le
offset et de le mettre à 2 au lieu de 1 et hop plus de
soucis.
@+ Eric
Avatar
padbra
Salut,
J'ai eu le meme genre de probleme que j'ai contourne de la maniere suivante
:

<code>
If (WorksheetFunction.CountA(tbe.Columns(1)) = 1) Then 'j'utilise ca car je
ne connait pas l'equivalent en VBA
Set cellule = tbe.Cells(2, 1) '1ere Ligne pour 1ere entrée
ElseIf (WorksheetFunction.CountA(Columns(1)) > 1) Then
Set cellule = tbe.Cells(1, 1).End(xlDown).Offset(1, 0) 'Ligne pour
nouvelle entrée
Else
If Not MsgBox(MSGNREXIST, vbQuestion + vbYesNo) = vbYes Then Exit Sub 'Ne
pas remplacer l'entrée existante
End If
</code>

Je fais d'abord un test sur le nombre de valeurs dans ma colonne et agit en
consequence.

"Mesa" a écrit dans le message de
news: 5e6101c3b33c$c55f4270$
J'ai toujours mon pb qui veut que quand je n'ai qu'une
ligne la macro bug car la selection ne trouve pas le
xldown, peut on enlever ce type d'alerte ? Ou existe t il
un moyen de virer ce problème.
Merci d'avance pour ce pb et un gros merci pour le 1er !
@+ Eric

-----Message d'origine-----
Bonjour,

Il faut éliminer tous les Select inutiles, qui
ralentissent le traitement :


Dim Ref As Range, Ref2 As Range
'ici on demasque tout
Cells.EntireRow.Hidden = False
Range("B6:Z256").Delete
'masque les champs en dessous des Isin
Set Ref = Cells(65536, 1).End(xlUp).Offset(3)
With Ref
Range(.Offset(0), .End
(xlDown)).EntireRow.Hidden = True

End With
Set Ref = Range("B6")
With Ref
.FormulaR1C1 = "=blp(RC[-
1], ""Security_Name"")"

.AutoFill Destination:=Range(.Offset(0), .End
(xlDown)), Type:=xlFillDefault

End With



Bjr,
j'utilise le code suivant pour copier vers le bas une
formule, mais le problème est que des fois il se peut
que


la fin soit juste une ligne et donc la macro plante.
De plus existe t il une autre formule pour copier qui
serait plus rapide que celle ci car je la trouve lourde
et


peu rapide.
Merci d'avance.

Le code :
'ici on demasque tout
Cells.Select
Selection.EntireRow.Hidden = False
Range("B6:Z256").delete
'masque les champs en dessous des Isin
Cells(65536, 1).Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
'met la formule security name dans la cellule B6 et
l'étire


Range("B6").Select
ActiveCell.FormulaR1C1 = "=blp(RC[-
1],""Security_Name"")"
Selection.AutoFill Destination:=Range(Selection,
Selection.End(xlDown)), Type:=xlFillDefault


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




Avatar
Mesa
-----Message d'origine-----
Salut,
J'ai eu le meme genre de probleme que j'ai contourne de
la maniere suivante

:

<code>
If (WorksheetFunction.CountA(tbe.Columns(1)) = 1)
Then 'j'utilise ca car je

ne connait pas l'equivalent en VBA
Set cellule = tbe.Cells(2, 1) '1ere Ligne pour 1ere
entrée

ElseIf (WorksheetFunction.CountA(Columns(1)) > 1) Then
Set cellule = tbe.Cells(1, 1).End(xlDown).Offset(1,
0) 'Ligne pour

nouvelle entrée
Else
If Not MsgBox(MSGNREXIST, vbQuestion + vbYesNo) = vbYes
Then Exit Sub 'Ne

pas remplacer l'entrée existante
End If
</code>

Je fais d'abord un test sur le nombre de valeurs dans ma
colonne et agit en

consequence.

"Mesa" a écrit dans
le message de

news: 5e6101c3b33c$c55f4270$
J'ai toujours mon pb qui veut que quand je n'ai qu'une
ligne la macro bug car la selection ne trouve pas le
xldown, peut on enlever ce type d'alerte ? Ou existe t il
un moyen de virer ce problème.
Merci d'avance pour ce pb et un gros merci pour le 1er !
@+ Eric

-----Message d'origine-----
Bonjour,

Il faut éliminer tous les Select inutiles, qui
ralentissent le traitement :


Dim Ref As Range, Ref2 As Range
'ici on demasque tout
Cells.EntireRow.Hidden = False
Range("B6:Z256").Delete
'masque les champs en dessous des Isin
Set Ref = Cells(65536, 1).End(xlUp).Offset(3)
With Ref
Range(.Offset(0), .End
(xlDown)).EntireRow.Hidden = True

End With
Set Ref = Range("B6")
With Ref
.FormulaR1C1 = "=blp(RC[-
1], ""Security_Name"")"

.AutoFill Destination:=Range(.Offset(0), .End
(xlDown)), Type:=xlFillDefault

End With



Bjr,
j'utilise le code suivant pour copier vers le bas une
formule, mais le problème est que des fois il se peut
que


la fin soit juste une ligne et donc la macro plante.
De plus existe t il une autre formule pour copier qui
serait plus rapide que celle ci car je la trouve lourde
et


peu rapide.
Merci d'avance.

Le code :
'ici on demasque tout
Cells.Select
Selection.EntireRow.Hidden = False
Range("B6:Z256").delete
'masque les champs en dessous des Isin
Cells(65536, 1).Select
Selection.End(xlUp).Select
Cells(ActiveCell.Row + 3, ActiveCell.Column).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
'met la formule security name dans la cellule B6 et
l'étire


Range("B6").Select
ActiveCell.FormulaR1C1 = "=blp(RC[-
1],""Security_Name"")"
Selection.AutoFill Destination:=Range(Selection,
Selection.End(xlDown)), Type:=xlFillDefault


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




.





Avatar
Clément Marcotte
uneligne = [a65536].end(xlup).row
uneligneplushaut =uneligne -1

a écrit dans le message de
news:0d1001c3b33e$54058ce0$
Est il possible de modifier la formule sur le
.End(xlDown) pour faire .End(xldown)-1 pour que ça remonte
d'une cellule ? Dans ce cas il me suffit de modifier le
offset et de le mettre à 2 au lieu de 1 et hop plus de
soucis.
@+ Eric