Comment utiliser target.address sous VBA

Comment utiliser target.address sous VBA - VB/VBA/VBS - Programmation

Marsh Posté le 24-04-2016 à 18:26:52    

Bonjour à tous !  
 
Je dois effectuer un projet sous Excel/VBA mais j'ai un problème que je n'arrive pas à résoudre malgré y avoir passé un après midi entier dessus...  
 
Mon projet est de faire une bataille navale.  
J'aimerai que lorsque je clique sur une case, cela me lance une macro qui charge un userform qui lui-même va me permettre de colorer la case sélectionnée.
 
Pour cela j'ai utilisé Worksheet_SelectionChange (que j'ai mis dans ma feuille) et dans lequel j'ai mis "CurrentPosition=Target.Address"
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
               If Not Intersect(Target, Range("F8:O18" )) Is Nothing Then
                        CurrentPosition = Target.Address
Call Dir
End If
End Sub

 
Dans mon module :  
 
Sub Dir()
ActiveSheet.Unprotect
 
Load Direction
Direction.Show
 
End Sub

 
Ensuite dans mon userform je mets ce code pour colorer la cellule sur laquelle j'ai cliqué lorsque je clique sur le bouton OK.
 
 
Private Sub OK_Click()
          Range(CurrentPosition).Interior.ColorIndex = 10
 
Unload Direction
Direction.Hide
 
End Sub

 
Sauf que là ça me met un message d'erreur : La méthode Range de l'objet _Global a échoué... J'ai cherché sur internet comment je pourrais modifier la syntaxe pour que cela désigne la cellule que je veux modifier et non son adresse mais je n'ai pas trouvé...  
 
Si une âme charitable pouvait m'aider...
 
Merci beaucoup !

Reply

Marsh Posté le 24-04-2016 à 18:26:52   

Reply

Marsh Posté le 24-04-2016 à 23:18:10    

Bonjour,
 
Essaies comme ceci :

Code :
  1. Option Explicit
  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3.   If Intersect(Target, Range("F8:O18" )) Is Nothing Then Exit Sub
  4.   CurrentPosition = Target.Address
  5.   Call DirShow
  6. End Sub


'Dans mon module :
 

Code :
  1. Option Explicit
  2. Public CurrentPosition As String
  3. Sub DirShow()
  4. ActiveSheet.Unprotect
  5. Load Direction
  6. Direction.Show
  7. End Sub


 
'Ensuite dans mon userform je mets ce code pour colorer la cellule sur laquelle j'ai cliqué lorsque je clique sur le bouton OK.
 

Code :
  1. Option Explicit
  2. Private Sub Ok_Click()
  3.          
  4. ActiveSheet.Range(CurrentPosition).Interior.ColorIndex = 10
  5. Direction.Hide
  6. Unload Direction
  7. End Sub


 
Edit : il ne faut pas nommer une variable (ou une procédure) avec un mot réservé au VBA (comme Dir que j'ai renommé en DirShow)


Message édité par patrice33740 le 24-04-2016 à 23:20:55

---------------
Cordialement, Patrice
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed