dans une macro, je souhaite faire la chose suivante:
- récupérer la formule présente dans une cellule
- transformer toutes les adresses relatives ("A1") en absolues ("$A$1")
- écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
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
electron
Tu as plusieurs solutions :
1) Si tu souhaites remplacer la référence "A1" dans des formules inscrites dans des cellules, tu peux faire comme suit (directement dans la feuille du classeur): Sélectionne les cellules concernées et vas dans Edition puis Remplacer, et inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules D1 à D3) Range("D1:D3").Select Selection.Replace What:="A1", Replacement:="$A$1", LookAt:=xlPart, SearchOrder:=xlByRows
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes formules. Si tu fais une copie incrémentée de tes cellules contenant des formule, le nom reste figé et fera donc référence à ta cellule A1. Pour affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question, la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette cellule avec une macro il faut écrire Application.Goto Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
Tu as plusieurs solutions :
1) Si tu souhaites remplacer la référence "A1" dans des formules inscrites
dans des cellules, tu peux faire comme suit (directement dans la feuille du
classeur):
Sélectionne les cellules concernées et vas dans Edition puis Remplacer, et
inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur
Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules D1 à D3)
Range("D1:D3").Select
Selection.Replace What:="A1", Replacement:="$A$1", LookAt:=xlPart,
SearchOrder:=xlByRows
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes
formules. Si tu fais une copie incrémentée de tes cellules contenant des
formule, le nom reste figé et fera donc référence à ta cellule A1. Pour
affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu
tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question,
la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette
cellule avec une macro il faut écrire Application.Goto
Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante:
- récupérer la formule présente dans une cellule
- transformer toutes les adresses relatives ("A1") en absolues ("$A$1")
- écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
1) Si tu souhaites remplacer la référence "A1" dans des formules inscrites dans des cellules, tu peux faire comme suit (directement dans la feuille du classeur): Sélectionne les cellules concernées et vas dans Edition puis Remplacer, et inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules D1 à D3) Range("D1:D3").Select Selection.Replace What:="A1", Replacement:="$A$1", LookAt:=xlPart, SearchOrder:=xlByRows
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes formules. Si tu fais une copie incrémentée de tes cellules contenant des formule, le nom reste figé et fera donc référence à ta cellule A1. Pour affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question, la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette cellule avec une macro il faut écrire Application.Goto Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
bourby
bonsoir et merci pour ces précisions.
je connais tout ça, et j'utilise systématiquement les noms, mais mon problème est différent. Je fais des calculs dans des tableaux à double entrée (avec autant de cellules ou plages nommées que possible). Je les empile les uns au dessous des autres, car il s'agit en général d'étudier plusieurs aspects d'un même problème. Mais j'ai besoin de faire des "études de sensibilité", c'est à dire de refaire les mêmes calculs avec des variantes dans les données (p.ex. + et - 10% sur une donnée). Je mets ces clones de chaque tableau à droite de leur "tableau maître". Pour cela, j'ai réussi à écrire quelques macros bien pratiques qui conservent les mêmes antécédants lorsqu'elles dupliquent un tableau à un nouvel emplacement. Mais il arrive que certaines adresses qui étaient en coordonnées relatives doivent être converties en absolues. Et je n'ai pas trouvé de solution pour ce cas.Comme j'ai plein de variables à faire varier séparément, ça devient très lassant de corriger toutes les formules.
Est-ce plus concret comme ça? Et quelqu'un peut-il m'éclairer?
D'avance merci
Bourby
electron wrote:
Tu as plusieurs solutions :
1) Si tu souhaites remplacer la référence "A1" dans des formules inscrites
dans des cellules, tu peux faire comme suit (directement dans la feuille du
classeur): Sélectionne les cellules concernées et vas dans Edition puis Remplacer, et
inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules D1 à D3)
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes formules. Si tu fais une copie incrémentée de tes cellules contenant des formule, le nom reste figé et fera donc référence à ta cellule A1. Pour affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question, la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette cellule avec une macro il faut écrire Application.Goto Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
bonsoir et merci pour ces précisions.
je connais tout ça, et j'utilise systématiquement les noms, mais mon
problème est différent. Je fais des calculs dans des tableaux à double
entrée (avec autant de cellules ou plages nommées que possible). Je les
empile les uns au dessous des autres, car il s'agit en général d'étudier
plusieurs aspects d'un même problème.
Mais j'ai besoin de faire des "études de sensibilité", c'est à dire de
refaire les mêmes calculs avec des variantes dans les données (p.ex. +
et - 10% sur une donnée). Je mets ces clones de chaque tableau à droite
de leur "tableau maître". Pour cela, j'ai réussi à écrire quelques
macros bien pratiques qui conservent les mêmes antécédants lorsqu'elles
dupliquent un tableau à un nouvel emplacement.
Mais il arrive que certaines adresses qui étaient en coordonnées
relatives doivent être converties en absolues. Et je n'ai pas trouvé de
solution pour ce cas.Comme j'ai plein de variables à faire varier
séparément, ça devient très lassant de corriger toutes les formules.
Est-ce plus concret comme ça? Et quelqu'un peut-il m'éclairer?
D'avance merci
Bourby
electron wrote:
Tu as plusieurs solutions :
1) Si tu souhaites remplacer la référence "A1" dans des formules
inscrites
dans des cellules, tu peux faire comme suit (directement dans la
feuille du
classeur):
Sélectionne les cellules concernées et vas dans Edition puis
Remplacer, et
inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur
Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules
D1 à D3)
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes
formules. Si tu fais une copie incrémentée de tes cellules contenant des
formule, le nom reste figé et fera donc référence à ta cellule A1. Pour
affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu
tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question,
la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette
cellule avec une macro il faut écrire Application.Goto
Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante:
- récupérer la formule présente dans une cellule
- transformer toutes les adresses relatives ("A1") en absolues ("$A$1")
- écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
je connais tout ça, et j'utilise systématiquement les noms, mais mon problème est différent. Je fais des calculs dans des tableaux à double entrée (avec autant de cellules ou plages nommées que possible). Je les empile les uns au dessous des autres, car il s'agit en général d'étudier plusieurs aspects d'un même problème. Mais j'ai besoin de faire des "études de sensibilité", c'est à dire de refaire les mêmes calculs avec des variantes dans les données (p.ex. + et - 10% sur une donnée). Je mets ces clones de chaque tableau à droite de leur "tableau maître". Pour cela, j'ai réussi à écrire quelques macros bien pratiques qui conservent les mêmes antécédants lorsqu'elles dupliquent un tableau à un nouvel emplacement. Mais il arrive que certaines adresses qui étaient en coordonnées relatives doivent être converties en absolues. Et je n'ai pas trouvé de solution pour ce cas.Comme j'ai plein de variables à faire varier séparément, ça devient très lassant de corriger toutes les formules.
Est-ce plus concret comme ça? Et quelqu'un peut-il m'éclairer?
D'avance merci
Bourby
electron wrote:
Tu as plusieurs solutions :
1) Si tu souhaites remplacer la référence "A1" dans des formules inscrites
dans des cellules, tu peux faire comme suit (directement dans la feuille du
classeur): Sélectionne les cellules concernées et vas dans Edition puis Remplacer, et
inscrit A1 dans rechercher puis $A$1 dans Remplacer par et clique sur Remplacer tout
2) Même opération via une macro : (exemple avec une plage de cellules D1 à D3)
Tu peux également affecter un nom à la cellule A1 et mettre ce nom dans tes formules. Si tu fais une copie incrémentée de tes cellules contenant des formule, le nom reste figé et fera donc référence à ta cellule A1. Pour affecter un nom : tu vas dans le menu Insertion puis Nom puis Definir et tu tappes un nom ; tu verras que lorsque tu sélectionne la cellule en question, la référence A1 par exemple, sera remplacée par ton nom. Pour atteindre cette cellule avec une macro il faut écrire Application.Goto Reference:="nom_que_tu_as_affecté"
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
Jean-François Aubert
salut bourby,
un début d'idée, à modifier à ta convenance ?
'*********************************** Sub Relatif_To_Absolu_Ou_Vice_Versa()
Dim c As Range
Dim LaFormule As String
For Each c In Selection
LaFormule = c.Formula
If LaFormule Like "*$*" Then
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
Else
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next c
End Sub
'***********************************
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"bourby" a écrit dans le message de news:
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
salut bourby,
un début d'idée, à modifier à ta convenance ?
'***********************************
Sub Relatif_To_Absolu_Ou_Vice_Versa()
Dim c As Range
Dim LaFormule As String
For Each c In Selection
LaFormule = c.Formula
If LaFormule Like "*$*" Then
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
Else
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next c
End Sub
'***********************************
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"bourby" <jchfer@wanadoo.fr> a écrit dans le message de news:
eYftufjuFHA.1256@TK2MSFTNGP10.phx.gbl...
bonjour,
dans une macro, je souhaite faire la chose suivante:
- récupérer la formule présente dans une cellule
- transformer toutes les adresses relatives ("A1") en absolues ("$A$1")
- écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
'*********************************** Sub Relatif_To_Absolu_Ou_Vice_Versa()
Dim c As Range
Dim LaFormule As String
For Each c In Selection
LaFormule = c.Formula
If LaFormule Like "*$*" Then
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
Else
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next c
End Sub
'***********************************
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"bourby" a écrit dans le message de news:
bonjour,
dans une macro, je souhaite faire la chose suivante: - récupérer la formule présente dans une cellule - transformer toutes les adresses relatives ("A1") en absolues ("$A$1") - écrire cette nouvelle version de la formule dans une autre cellule.
Je n'y suis pas arrivé. Quelqu'un peut-il m'aider?
D'avance merci.
Bourby
bourby
bonjour Jean-François,
je rentre d'une semaine de déplacement; ta réponse me donne sûrement le moyen de faire ce que j'ai besoin de faire. Je vais essayer au bureau dès que le problème se représente.
Merci beaucoup.
Bourby
Jean-François Aubert wrote:
salut bourby,
un début d'idée, à modifier à ta convenance ?
'*********************************** Sub Relatif_To_Absolu_Ou_Vice_Versa()
Dim c As Range
Dim LaFormule As String
For Each c In Selection
LaFormule = c.Formula
If LaFormule Like "*$*" Then
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
Else
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next c
End Sub
'***********************************
bonjour Jean-François,
je rentre d'une semaine de déplacement; ta réponse me donne sûrement le
moyen de faire ce que j'ai besoin de faire. Je vais essayer au bureau
dès que le problème se représente.
Merci beaucoup.
Bourby
Jean-François Aubert wrote:
salut bourby,
un début d'idée, à modifier à ta convenance ?
'***********************************
Sub Relatif_To_Absolu_Ou_Vice_Versa()
je rentre d'une semaine de déplacement; ta réponse me donne sûrement le moyen de faire ce que j'ai besoin de faire. Je vais essayer au bureau dès que le problème se représente.
Merci beaucoup.
Bourby
Jean-François Aubert wrote:
salut bourby,
un début d'idée, à modifier à ta convenance ?
'*********************************** Sub Relatif_To_Absolu_Ou_Vice_Versa()