macro et références avec $

  • Initiateur de la discussion Initiateur de la discussion meldja
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

meldja

XLDnaute Impliqué
Bonjour,
Je voudrais savoir pourquoi dans la macro suivante, certaines références nécessitent le $ et pas d'autres ?

Sub worksheet_change(ByVal Target As Range)
If Target.Address = "$D$3" Then
Range("E4").ClearContents
Range("F5").ClearContents
End If
End Sub

C'est une macro pour effacer les cellules E4 et F5 que j'ai trouvé sur ce forum. Comme j'essaye de comprendre, j'ai essayé de mettre des parenthèses autour de "$D$3", pas de problème.
J'ai également essayé d'enlever les $ de D3 et ça ne marche plus.
De même, si je mets des $ sur E4 et F5, ça marche plus non plus.
Quelqu'un a-t-il une explication pour que je puisse capter la logique de cette macro ?
Merci d'avance
 
Re : macro et références avec $

Salut Meldja,

Dans Excel, le "$" permet d'avoir des références Absolues

Dans ton code, "Target" renvoi toujours une référence absolue en ligne et colonne !
Donc "Target.Address" te donnera toujours deux "$" dans ta référence.

Par contre, lorsque tu utilises une référence pour effectuer une action, tu n'es pas obligé de mettre des "$"

Par contre dans ce que tu dis,
De même, si je mets des $ sur E4 et F5, ça marche plus non plus.
Ce n'est pas normal !

Code:
Range("E4").ClearContents
Range("F5").ClearContents
ou
Code:
Range("$E$4").ClearContents
Range("$F$5").ClearContents
Cela t'effacera toujours le contenue des cellules E4 et F5, mais ATTENTION, de la feuille ACTIVE.

J'espère que ce sera plus clair pour toi 😉

A+
 
Re : macro et références avec $

Bonjour,

@Bruno45:

Target ne renvoie pas une adresse mais un objet Range, ici une cellule.
Target.Address renvoie une adresse en valeur absolue "$D$3"
Target.Address(False,False) ou Target.address(0,0) renvoie "D3"

A+
 
Re : macro et références avec $

Merci Bruno pour ton explication,
Je viens de tester les $ sur E4 et F5 et effectivement, ça marche toujours.
Je crois que j'avais enlevé les parenthèses après Range, comme ça :
Range"E4"
Donc d'après ce que je comprends ce n'est qu'une histoire de convention, toujours une référence absolue avec Target.
Encore merci et bonne soirée.
 
Re : macro et références avec $

Bonjour,
Target ne renvoie pas une adresse mais un objet Range, ici une cellule.
Je ne parle pas d'adresse, je parle d'une référence, qui effectivement est un objet Range !

Et comme Meldja est débutante, je ne veux pas commencer à l'ennuyer avec ce genre de détail !

Mais bon si tu n'as rien d'autre à faire ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
281
  • Question Question
Microsoft 365 modifier un code
Réponses
1
Affichages
541
Retour