Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Basculer les formules relatives d'une plage en absolues

Claudy

XLDnaute Accro
Bonjour à tous,
comment transformer les références relatives d'une plage en références absolues?
VBA ok
Merci,
Claudy
 

Claudy

XLDnaute Accro
Bonjour Fredoo, ça je connais, et m^me en utilisant "F4", mais il faut à chaque fois sélectionner la ref relative de la formule.
J'aurais préférer une macro sur une plage de cellules avec +/- 50 ref relatives.
A+
Claudy
 

Dranreb

XLDnaute Barbatruc
Bonjour
J'utilise fréquemment cette macro affectée à ma barre de lancement rapide, qui conserve toutefois volontairement relatives les références à ligne ou à la colonne portant la formule.
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…