XL 2016 Signe $

Phoenix23

XLDnaute Occasionnel
Bonjour à toutes et tous.
Je souhaiterais figer différentes formules avec le signe $, je sais utiliser cette fonction avec la touche F4.
Mais j'aimerais savoir, car je n'y arrive pas si il est possible de sélectionner dans une colonne plusieurs cellules ayant différentes données en même temps et de incorporer cette fonction.
Ex.
A1 devienne A$1
A2. A$2
A3. A$3
etc..
D'avance merci.
Cordialement.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Mais j'aimerais savoir, car je n'y arrive pas si il est possible de sélectionner dans une colonne plusieurs cellules ayant différentes données en même temps et de incorporer cette fonction.
Ex.
A1 devienne A$1
A2. A$2
A3. A$3
etc..
Dit comme ça, ça donne l'impression que c'est plutôt la colonne qui doit être figée, ce qui donnerait donc $A1 dans la formule, qui donnera A1 sur la première ligne, deviendra A2 sur la deuxième ligne, A3 sur la troisième ligne, etc.
 

job75

XLDnaute Barbatruc
Bon cette macro convertit toutes les références relatives de la feuille active en références absolues :
VB:
Sub ReferenceRelativeVersAbsolue()
Dim c As Range
For Each c In ActiveSheet.UsedRange
    If c.HasFormula Then c = Application.ConvertFormula(c.Formula, xlA1, , True)
Next
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Personnellement j'utilise beaucoup ce code qui rend absolues toutes les références relatives au lignes et colonnes autres que celles des cellules portant les formules concernées :
VB:
Sub Dollars()
Dim RgSel As Range, Rg As Range
Set RgSel = Selection
For Each Rg In RgSel: Dollars1Cel Rg: Next Rg
End Sub
Private Sub Dollars1Cel(ByVal Rg As Range)
Dim ZOrg As String, lig As Long, Col As Long, SplO() As String, ZRés As String, N As Long, _
   Maju As String, P As Long, C As String * 1, SplF() As String ', PDéb As Long, PFin As Long
ZOrg = Rg.FormulaR1C1: If ZOrg = "" Then Exit Sub
lig = Rg.Row: Col = Rg.Column
SplO = Split(ZOrg, "["): ZRés = SplO(0)
For N = 1 To UBound(SplO)
   Maju = ""
   For P = Len(ZRés) To 1 Step -1
      C = Mid$(ZRés, P, 1): If C = LCase(C) Then Exit For
      Maju = C & Maju: Next P
   If Maju = "R" Then
      SplF = Split(SplO(N), "]"): ZRés = ZRés & lig + SplF(0) & SplF(1)
   ElseIf Maju = "C" Or Maju = "RC" Then
      SplF = Split(SplO(N), "]"): ZRés = ZRés & Col + SplF(0) & SplF(1)
   Else
      ZRés = ZRés & "[" & SplO(N)
      End If
   Next N
If ZRés <> ZOrg Then
   On Error Resume Next
   Application.Calculation = xlCalculationManual
   If Rg.HasArray Then
      Rg.CurrentArray.FormulaArray = Application.ConvertFormula(ZRés, xlR1C1, xlA1) ', RelativeTo:=Rg.CurrentArray)
      If Err Then MsgBox "Range(" & Rg.CurrentArray.Address(True, True) & ").FormulaArray =" _
         & vbLf & """" & ZRés & """ ==> erreur " & Err.Number & " :" _
         & vbLf & Err.Description, vbExclamation, "Mettre les ""$""."
   Else
      Rg.FormulaR1C1 = ZRés
      If Err Then MsgBox "Range(" & Rg.Address(True, True) & ").FormulaR1C1 =" _
         & vbLf & """" & ZRés & """ ==> erreur " & Err.Number & " :" _
         & vbLf & Err.Description, vbExclamation, "Mettre les ""$""."
      End If
   Application.Calculation = xlCalculationAutomatic
   On Error GoTo 0
   End If
End Sub
 

job75

XLDnaute Barbatruc
Hello Bernard,

Une solution qui utilise les antécédents :
VB:
Sub LigneAbsolue()
Dim c As Range
On Error Resume Next
With ActiveSheet.UsedRange
    .Replace "$", "", xlPart
    For Each c In .Precedents
        .Replace c.Address(0, 0), c.Address(1, 0)
    Next
End With
End Sub
Mais il peut y avoir des problèmes...
 

Discussions similaires

Réponses
56
Affichages
1 K
Réponses
4
Affichages
299

Statistiques des forums

Discussions
312 215
Messages
2 086 328
Membres
103 180
dernier inscrit
Vcr