Lorsque vous avez une plage et que vous souhaitez insérer son adresse dans une formule, vous pouvez utiliser .Address
. Cette propriété est très flexible et vous permet de contrôler beaucoup de choses, y compris et surtout, si vous voulez que les choses soient absolues (fixes) ou relatives (mobiles lors de la copie). Par souci de votre problème, vous pouvez utiliser les paramètres RowAbsolute
et ColumnAbsolute
du .Address method
. Par exemple, Cells(300 + i, 5 + j).Address(RowAbsolute=False)
. N'oubliez pas que la valeur par défaut de ces paramètres est True
.
L'extrait de code suivant vous indiquera comment procéder, des explications sont incluses.
Sub TestUsingAddress()
Dim r As Range
Set r = Sheet1.Cells(3, 4) ' (D3)
' You can control the parameters RowAbsolute and ColumnAbsolute
Debug.Print r.address ' $D$3 (default)
Debug.Print r.address(ColumnAbsolute:=False) ' D$3
Debug.Print r.address(RowAbsolute:=False) ' $D3
Debug.Print r.address(RowAbsolute:=False, ColumnAbsolute:=False) ' D3
'and you can get the sheet's name with the address using the External parameter
Debug.Print r.address(external:=True) ' [SOTest.xlsm]Sheet1!$D$3
' You can also get R1C1 format using the ReferenceStyle Parameter
Debug.Print r.address(ReferenceStyle:=xlR1C1) ' R3C4. default format is xlA1
End Sub
Ce que vous demandez n'est pas clair. Contrairement aux formules Excel, VBA vous offre la possibilité de définir des * variables *. Vous pouvez les réparer, les changer ou en faire tout ce qui convient à votre application. –
@ A.S.H., Si vous voulez réparer une ligne, je veux savoir comment coder pour représenter D $ 342. Si je veux réparer une colonne, je veux savoir comment coder $ D342. Si je veux corriger les deux, comment puis-je écrire le code pour $ 342 D $ C'est ce que je demande. – vbalearner