OVH Cloud OVH Cloud

Adresse relatif par erreur

7 réponses
Avatar
maryola
Bonjour à tous,
J'ai effectué 730 "copier-coller avec liaisons" (répartis sur les 12
onglets).Tout fonctionne parfaitement (heureusement, vu le temps que j'ai
mis).
Mais je viens de m'apercevoir qu'il me fallait des adresses absolues. Et mes
730 formules sont en relatives.
Comment insérer un $ entre la lettre et le chiffre pour TOUTES mes
formules.Une boucle en VBA ? Je ne suis pas très forte en vba mais je veux
bien tenté le coup.
En vous remerciant pour votre aide.
Mary

7 réponses

Avatar
MichDenis
Essaie avec ceci : à copier dans un module standard :

J'ai supposé que toutes les cellules contenant un "lien"
par sa formule devrait voir toutes les références devenir absolu.

'---------------------------------------------
Sub test()

Dim Sh As Worksheet, Adr As String
Dim Rg As Range, C As Range
On Error Resume Next
For Each Sh In Worksheets
Set Rg = Sh.UsedRange.SpecialCells(xlCellTypeFormulas)
With Rg
Set C = .Find(What:="[", LookIn:=xlFormulas)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Formula = Application.ConvertFormula(Range("C1").Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Adr
End If
End With
Next
End Sub
'---------------------------------------------




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

Bonjour à tous,
J'ai effectué 730 "copier-coller avec liaisons" (répartis sur les 12
onglets).Tout fonctionne parfaitement (heureusement, vu le temps que j'ai
mis).
Mais je viens de m'apercevoir qu'il me fallait des adresses absolues. Et mes
730 formules sont en relatives.
Comment insérer un $ entre la lettre et le chiffre pour TOUTES mes
formules.Une boucle en VBA ? Je ne suis pas très forte en vba mais je veux
bien tenté le coup.
En vous remerciant pour votre aide.
Mary
Avatar
maryola
Je vous remercie beaucoup pour votre réponse, mais ça ne fonctionne pas, ça
remplace ma formule par des chiffres.

Je souhaiterai modifier :
='U:...Planning'!C15

par
='U:...Planning'!$C15

Mais je m'étais peut-être mal expliqué


Essaie avec ceci : à copier dans un module standard :

J'ai supposé que toutes les cellules contenant un "lien"
par sa formule devrait voir toutes les références devenir absolu.

'---------------------------------------------
Sub test()

Dim Sh As Worksheet, Adr As String
Dim Rg As Range, C As Range
On Error Resume Next
For Each Sh In Worksheets
Set Rg = Sh.UsedRange.SpecialCells(xlCellTypeFormulas)
With Rg
Set C = .Find(What:="[", LookIn:=xlFormulas)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Formula = Application.ConvertFormula(Range("C1").Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Adr
End If
End With
Next
End Sub
'---------------------------------------------




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

Bonjour à tous,
J'ai effectué 730 "copier-coller avec liaisons" (répartis sur les 12
onglets).Tout fonctionne parfaitement (heureusement, vu le temps que j'ai
mis).
Mais je viens de m'apercevoir qu'il me fallait des adresses absolues. Et mes
730 formules sont en relatives.
Comment insérer un $ entre la lettre et le chiffre pour TOUTES mes
formules.Une boucle en VBA ? Je ne suis pas très forte en vba mais je veux
bien tenté le coup.
En vous remerciant pour votre aide.
Mary





Avatar
JB
Bonjour,

Je ne vois pas pouquoi il faut des adresses absolues?

Sélectionner le champ à convertir:

Sub essai()
For Each c In Selection
If c.HasFormula Then
P = InStr(c.Formula, "!")
If P = 0 Then P = 1
c.Formula = Left(c.Formula, P) & Range(Mid(c.Formula, P +
1)).Address
End If
Next c
End Sub

http://cjoint.com/?kFq4nuZm1X

JB


Bonjour à tous,
J'ai effectué 730 "copier-coller avec liaisons" (répartis sur les 12
onglets).Tout fonctionne parfaitement (heureusement, vu le temps que j'ai
mis).
Mais je viens de m'apercevoir qu'il me fallait des adresses absolues. Et mes
730 formules sont en relatives.
Comment insérer un $ entre la lettre et le chiffre pour TOUTES mes
formules.Une boucle en VBA ? Je ne suis pas très forte en vba mais je v eux
bien tenté le coup.
En vous remerciant pour votre aide.
Mary


Avatar
AV
Pour la feuille active :

Sub zzz()
For Each C In Cells.SpecialCells(xlCellTypeFormulas, 23)
C.Formula = Application.ConvertFormula(C.Formula,
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
Next
End Sub


AV
Avatar
Ricky
Bonjour *maryola*

Sélectionner la plage
Edition / Remplacer
!C par !$C

A renouveler dans chaque colonne éventuellement

| Je vous remercie beaucoup pour votre réponse, mais ça ne fonctionne
| pas, ça remplace ma formule par des chiffres.
|
| Je souhaiterai modifier :
| ='U:...Planning'!C15
|
| par
| ='U:...Planning'!$C15
|
| Mais je m'étais peut-être mal expliqué
|
|
| | Essaie avec ceci : à copier dans un module standard :
| |
| | J'ai supposé que toutes les cellules contenant un "lien"
| | par sa formule devrait voir toutes les références devenir absolu.
| |
| | '---------------------------------------------
| | Sub test()
| |
| | Dim Sh As Worksheet, Adr As String
| | Dim Rg As Range, C As Range
| | On Error Resume Next
| | For Each Sh In Worksheets
| | Set Rg = Sh.UsedRange.SpecialCells(xlCellTypeFormulas)
| | With Rg
| | Set C = .Find(What:="[", LookIn:=xlFormulas)
| | If Not C Is Nothing Then
| | Adr = C.Address
| | Do
| | C.Formula | | Application.ConvertFormula(Range("C1").Formula,
| | _ fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
| | Set C = .FindNext(C) Loop While Not C Is Nothing And
| | C.Address <> Adr End If
| | End With
| | Next
| | End Sub
| | '---------------------------------------------
| |
| |
| |
| |
| | "maryola" a écrit dans le
| | message de news:
| |
| | Bonjour à tous,
| | J'ai effectué 730 "copier-coller avec liaisons" (répartis sur les 12
| | onglets).Tout fonctionne parfaitement (heureusement, vu le temps
| | que j'ai mis).
| | Mais je viens de m'apercevoir qu'il me fallait des adresses
| | absolues. Et mes 730 formules sont en relatives.
| | Comment insérer un $ entre la lettre et le chiffre pour TOUTES mes
| | formules.Une boucle en VBA ? Je ne suis pas très forte en vba mais
| | je veux bien tenté le coup.
| | En vous remerciant pour votre aide.
| | Mary

--
Ricky [MVP] Visitez les faq....
http://www.faqoe.com http://faqword.free.fr
http://dj.joss.free.fr/faq.htm http://www.excelabo.net
Avatar
MichDenis
| Je vous remercie beaucoup pour votre réponse, mais ça ne fonctionne pas, ça
| remplace ma formule par des chiffres.

| Je souhaiterai modifier :
| ='U:...Planning'!C15

| par
| ='U:...Planning'!$C15

Si ton classeur référencé existe vraiment, la proposition que je t'ai faite
fonctionne et donne le résultat que tu attends ....J'ai vérifié la procédure
soumise par un petit test...

Exécute la macro pas à pas en utilisant la touche F8 et observe ce qui se passe
en plaçant ton curseur au dessus sur cette ligne de code après l'avoir exécuté :
C.Formula = Application.ConvertFormula(Range("C1").Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)

As-tu réellement mis la macro dans un module standard dudit fichier ?
Avatar
MichDenis
Il y a une petite coquille suite au copier-coller :

La ligne de code devrait être écrit comme suit :

C.Formula = Application.ConvertFormula(C.Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)

au lieu de :
C.Formula = Application.ConvertFormula(Range("C1").Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)



"MichDenis" a écrit dans le message de news:
uq7ohYQ$

| Je vous remercie beaucoup pour votre réponse, mais ça ne fonctionne pas, ça
| remplace ma formule par des chiffres.

| Je souhaiterai modifier :
| ='U:...Planning'!C15

| par
| ='U:...Planning'!$C15

Si ton classeur référencé existe vraiment, la proposition que je t'ai faite
fonctionne et donne le résultat que tu attends ....J'ai vérifié la procédure
soumise par un petit test...

Exécute la macro pas à pas en utilisant la touche F8 et observe ce qui se passe
en plaçant ton curseur au dessus sur cette ligne de code après l'avoir exécuté :
C.Formula = Application.ConvertFormula(Range("C1").Formula, _
fromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)

As-tu réellement mis la macro dans un module standard dudit fichier ?