Obtenir l'adresse d'une cellule target

Bonjour à tous,

Je suis en train de me mettre au vba, cependant je ne comprend pas comment je peux utiliser l'adresse d'une cellule selectionnée :

Private Sub Worksheet_Change(ByVal Target As Range)

Adresse = ActiveCell.Address

Ligne = ActiveCell.Row

Colonne = ActiveCell.Columm

Range("A1") = Colonne

End Sub

Et cela ne fonctionne pas... ( Le but de ce code est juste d'afficher la colonne de la cellule "target")

Mon but étant à la fin de colorier la cellule Ei quand Mi est selectionnée (i=ligne et E et M = colonnes)

Merci d'avance

Cordialement

Maxime

Re,

Il me semble qu'il s'agit de la même question ... sous une autre forme ...

Private Sub Worksheet_Change(ByVal Target As Range)
Ligne = Target.Row
Colonne = Target.Columm
Range("A1") = Colonne
Range("A2") = Ligne
End Sub

Dans les macros évènnementielles ... ActiveCell disparait ... puisque c'est justement Target la cellule que tu es en train de modifier et qui par définition ... est la cellule active ...

Bonjour,

Essaie ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lCol As Long, lRow As Long, strAddress As String
    With Target
        strAddress = .Address
        lCol = .Column
        lRow = .Row
    End With
    MsgBox "Adresse :" & strAddress & Chr(10) _
           & "Colonne : " & lCol & Chr(10) _
           & "Ligne : " & lRow
End Sub

Effectivement, James007, mais je prefere comprendre partie par partie ce que je fais au lieu de demander en gros et de simplement copier coller le code.

En essayant ton code et en selectionnant une cellule, excel m'affiche une erreur...


Jean Eric : Ton code est vraiment trop compliqué pour un debutant comme moi ^^


Pour être plus precis cela me met une erreur sur la colonne, "Object doesn't support this property or method"

Re,

58mandreux.xlsm (18.29 Ko)

Et comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration des variables
Dim lCol As Long, lRow As Long, strAddress As String
    'Target = cellule modifiée
    'Adresse de la cellule modifiée (type string = texte)
    strAddress = Target.Address
    'Numéro de colonne de la cellule modifiée (type long = entier)
    lCol = Target.Column
    'Numéro de ligne de la cellule modifiée (type long = entier)
    lRow = Target.Row
    'Message   
    MsgBox "Adresse :" & strAddress & Chr(10) _
           & "Colonne : " & lCol & Chr(10) _
           & "Ligne : " & lRow
End Sub

Re,

Puisque tu veux faire de simples tests ...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Exit Sub
Application.EnableEvents = False
  With Target
    Range("A1") = .Row
    Range("A2") = .Column
    Range("A3") = .Address(0, 0)
    Range("A4") = .Value
  End With
Application.EnableEvents = True
End Sub

Merci beaucoup à vous deux de vous être penché sur mon problême, je regarderais cela demain.

Bonne soirée à vous

Cordialement

Merci ... pour tes remerciements ...

Jean-Eric et moi seront trsè attentifs à tes commentaires ... demain ...

Bonjour, j'espere que tout va bien pour vous,

excusez mon retard mais j'avais oublié que le 5 est férié au Portugal ^^

Du coup j'ai repris avec attention vos deux codes :

Merci pour les commentaires de Jean-Eric, je comprend chacun des etapes et cela fonctionne !

James007 : J'ai deux questions

Si j'ai bien compris la ligne de code ci dessous permet d'effectuer le code qu'une seule fois?

If Target.Column Then Exit Sub

Enfin je ne comprend pas l'utilité de Application.EnableEvents = False/True

Salut james

le truc en russe , ça me rapelle l'aide VBA

cordialement

tulipe_4 a écrit :

Salut james

le truc en russe , ça me rapelle l'aide VBA

cordialement

EXCELLENT ...

Toi aussi ... tu as fait RUSSE ... deuxième langue ...

Bonjour à tous,

Que penser des formules tridactyles, difficiles à comprendre, nécessitant doliprane et responsables de tendinites...

Mêmes les reins sont touchés si on en abuse.

L'aide VBA est plus simple à ingurgiter, quoique en anglais maintenant...

Bonne journée.

Bonjour l'équipe,

un truc que j'utilise à tout bout de champ pour déterminer l'intitulé de la colonne...

    sCol = Split(Columns(Target.Column).Address(ColumnAbsolute:=False), ":")(1)

où sCol = "A" ou "AA" ou...

A+

bonjour

j'aime bien ton " ingurgiter" ,tu m'aurais dit "savourer" cela apportai un carractère agreable

cordialement

Mais à quoi sert " Application.EnableEvents = False/True" svp?


curulis57 a écrit :

Bonjour l'équipe,

un truc que j'utilise à tout bout de champ pour déterminer l'intitulé de la colonne...

    sCol = Split(Columns(Target.Column).Address(ColumnAbsolute:=False), ":")(1)

où sCol = "A" ou "AA" ou...

A+

Si jamais j'ai besoin de connaitre la ligne je remplace simplement column par row?

Salut Mandreux,

Application.EnableEvents = False

VBA réagit à des événements : Change, SelectionChange, Activate,...

Quand tu ne souhaites pas qu'un événement soit détecté lors d'une action dans ta macro, tu le signales à l'application par cette instruction.

Cela évite des aller-retour, parfois sans fin, entre plusieurs procédures qui se rappellent entre elles jusqu'à planter le programme.

Dans le même ordre d'idée...

Application.ScreenUpdating = False

Cette instruction demande à l'application de ne pas mettre l'écran à jour en direct. Quand tu as une flopée de données qui doivent changer à l'écran, cela évite les scintillements et flashes désagréables.

Pour ces deux instructions ci-dessus, ne pas oublier, en fin de procédure, de spécifier TRUE.

Intitulé de colonne

La colonne est une lettre qui doit donc être calculée.

La ligne est un chiffre donc pas besoin de ce genre d'instruction : Target.Row suffit.

A+

Merci beaucoup à tous pour vos réponses plus que rapides et completes. J'ai reussi à faire ce que je voulais et surtout à comprendre pour de futur projet et ce clairement grâce à vous.

Passez tous une bonne journée

Maxime

De rien ...

Merci ... pour tes remerciements à toute la communauté ...

Et Plein de Belles Aventures avec Excel ....

Rechercher des sujets similaires à "obtenir adresse target"