OVH Cloud OVH Cloud

Le saviez-vous ? (Hommage à Serge Garnote)

12 réponses
Avatar
G. L
Bonsoir à toute et à tous

Le saviez vous ? moi non !!! pour "étirer" une formule ..
J' ai découvert une suggestion de Serge le 14 février 2004 :
**** début de citation
Salut Plouf,
Voici une suggestion :
Va dans la «zone Nom», juste à gauche de la
barre de formules. Écris a1:A20000, ta plage
sera sélectionnée automatiquement.
Entre alors ta formule, par exemple =B1+C1,
et valide par Ctrl+Entrée.
Serge
**** fin de citation

Que j'ai (converti) en VBA comme ceci :

Sub Etire_Formule()
'essai, en colonne A4:Ax une série de valeurs qui sont ajoutées de
la valeur B1 en Colonne B
Ligne = Range("A65536").End(xlUp).Row
Range("B4").Select
Application.Goto Reference:="R4C2:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 = "=RC[-1]+R1C2"
Range("D4").Select ' Changer de colonne avec nouvelle formule
Application.Goto Reference:="R4C4:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 = "=IF(RC[-1]>0,(RC[-3]+RC[-2])*RC[-1],0)"

End Sub

Je recherchai une méthode rapide et simple depuis si longtemps que je suis
particulièrement ravi de dire merci à Serge !
Peut être est-il possible d'accélérer ..... pour moi c'est le niveau
supérieur ;)
Cordialement
Gérard

2 réponses

1 2
Avatar
michdenis
Bonour G. ,

| comment remplacer [G5:G10] par G5:G" & dernière ligne) ?

C'est impossible en utilisant les crochets, ce type de syntaxe ne tolère pas de variables! Il faudrait que tu aies recours à sa
petite soeur "Evaluate" et pour ce type d'usage, ce serait pour le moins singulier.


Salutations!


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

Merci, c'est plus court et encore plus facile à intégrer, l'exécution est
très rapide (sur 60000 lignes)
En revanche comment se comporte la ressource mémoire dans le cas de
plusieurs colonnes avec différentes formules ?
Il me semble que le End With "libère" cette resource, mais pas certain de
moi.
J'ai un trou (!) comment remplacer [G5:G10] par G5:G" & dernière ligne) ? à
l'image de Range("G5:" & Range("G65536").....
Merci d'avance
Cordialement
Gérard



"Herdet" a écrit dans le message de
news:%23B7Wj$
Bonsoir Denis et Gérard,
Dans le genre court on peut aussi écrire
Sub test()
[G5:G10] = "=A" & [G5:G10].Row & "+$B$1"
End Sub

Salutations
Robert

"michdenis" a écrit dans le message de news:
%
Remarque que ceci était suffisant :

With Range("G5:G10")
.Formula = "=A" & .Item(1).Row & "+$B$1"
End With


Salutations!


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



Bonsoir Denis

C'est bien l'équivalent !

Long est le chemin qu'il me reste à parcourir pour seulement espérer
apercevoir au loin ta maîtrise du sujet VBA !

Cordialement

Gérard



"michdenis" a écrit dans le message de
news:%
Bonjour G.

Ce que tu proposes est-ce l'équivalent de ceci :

Dim Rg As Range
Set Rg = Range("G5:G10")
Rg.Formula = "=A" & Rg.Item(1).Row & "+$B$1"


Salutations!



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


Bonsoir à toute et à tous

Le saviez vous ? moi non !!! pour "étirer" une formule ..
J' ai découvert une suggestion de Serge le 14 février 2004 :
**** début de citation
Salut Plouf,
Voici une suggestion :
Va dans la «zone Nom», juste à gauche de la
barre de formules. Écris a1:A20000, ta plage
sera sélectionnée automatiquement.
Entre alors ta formule, par exemple ±+C1,
et valide par Ctrl+Entrée.
Serge
**** fin de citation

Que j'ai (converti) en VBA comme ceci :

Sub Etire_Formule()
'essai, en colonne A4:Ax une série de valeurs qui sont ajoutées
de
la valeur B1 en Colonne B
Ligne = Range("A65536").End(xlUp).Row
Range("B4").Select
Application.Goto Reference:="R4C2:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 = "=RC[-1]+R1C2"
Range("D4").Select ' Changer de colonne avec nouvelle formule
Application.Goto Reference:="R4C4:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 "=IF(RC[-1]>0,(RC[-3]+RC[-2])*RC[-1],0)"

End Sub

Je recherchai une méthode rapide et simple depuis si longtemps que je
suis
particulièrement ravi de dire merci à Serge !
Peut être est-il possible d'accélérer ..... pour moi c'est le niveau
supérieur ;)
Cordialement
Gérard














Avatar
G. L
Bonjour Denis,
Merci pour cette info.
Conclusion : Cette formule ne convient pas dans le cas que je voulais
résoudre. Alors que ta proposition avec With est en place et répond
parfaitement.
Merci encore
Cordialement
Gérard

"michdenis" a écrit dans le message de
news:OzQWUQ%
Bonour G. ,

| comment remplacer [G5:G10] par G5:G" & dernière ligne) ?

C'est impossible en utilisant les crochets, ce type de syntaxe ne tolère
pas de variables! Il faudrait que tu aies recours à sa

petite soeur "Evaluate" et pour ce type d'usage, ce serait pour le moins
singulier.



Salutations!


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

Bonsoir Robert,

Merci, c'est plus court et encore plus facile à intégrer, l'exécution est
très rapide (sur 60000 lignes)
En revanche comment se comporte la ressource mémoire dans le cas de
plusieurs colonnes avec différentes formules ?
Il me semble que le End With "libère" cette resource, mais pas certain de
moi.
J'ai un trou (!) comment remplacer [G5:G10] par G5:G" & dernière ligne) ?
à

l'image de Range("G5:" & Range("G65536").....
Merci d'avance
Cordialement
Gérard



"Herdet" a écrit dans le message de
news:%23B7Wj$
Bonsoir Denis et Gérard,
Dans le genre court on peut aussi écrire
Sub test()
[G5:G10] = "=A" & [G5:G10].Row & "+$B$1"
End Sub

Salutations
Robert

"michdenis" a écrit dans le message de news:
%
Remarque que ceci était suffisant :

With Range("G5:G10")
.Formula = "=A" & .Item(1).Row & "+$B$1"
End With


Salutations!


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



Bonsoir Denis

C'est bien l'équivalent !

Long est le chemin qu'il me reste à parcourir pour seulement espérer
apercevoir au loin ta maîtrise du sujet VBA !

Cordialement

Gérard



"michdenis" a écrit dans le message de
news:%
Bonjour G.

Ce que tu proposes est-ce l'équivalent de ceci :

Dim Rg As Range
Set Rg = Range("G5:G10")
Rg.Formula = "=A" & Rg.Item(1).Row & "+$B$1"


Salutations!



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


Bonsoir à toute et à tous

Le saviez vous ? moi non !!! pour "étirer" une formule ..
J' ai découvert une suggestion de Serge le 14 février 2004 :
**** début de citation
Salut Plouf,
Voici une suggestion :
Va dans la «zone Nom», juste à gauche de la
barre de formules. Écris a1:A20000, ta plage
sera sélectionnée automatiquement.
Entre alors ta formule, par exemple ±+C1,
et valide par Ctrl+Entrée.
Serge
**** fin de citation

Que j'ai (converti) en VBA comme ceci :

Sub Etire_Formule()
'essai, en colonne A4:Ax une série de valeurs qui sont
ajoutées




de
la valeur B1 en Colonne B
Ligne = Range("A65536").End(xlUp).Row
Range("B4").Select
Application.Goto Reference:="R4C2:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 = "=RC[-1]+R1C2"
Range("D4").Select ' Changer de colonne avec nouvelle formule
Application.Goto Reference:="R4C4:R[" & Ligne - 4 & "]C"
Selection.FormulaR1C1 > "=IF(RC[-1]>0,(RC[-3]+RC[-2])*RC[-1],0)"

End Sub

Je recherchai une méthode rapide et simple depuis si longtemps que je
suis
particulièrement ravi de dire merci à Serge !
Peut être est-il possible d'accélérer ..... pour moi c'est le niveau
supérieur ;)
Cordialement
Gérard



















1 2