Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2344 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment utiliser target.address sous VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment utiliser target.address sous VBA

n°2280103
elgato18
Posté le 24-04-2016 à 18:26:52  profilanswer
 

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 !

mood
Publicité
Posté le 24-04-2016 à 18:26:52  profilanswer
 

n°2280118
patrice337​40
Avec la réponse, c'est facile.
Posté le 24-04-2016 à 23:18:10  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment utiliser target.address sous VBA

 

Sujets relatifs
Boucle sur appel de Routine, VBAMise en couleur d'une cellule VBA
[VBA] Utilisation du solver avec des fonctions code en vba???VBA - Formules qui fait référence à deux classeurs
Piloté en VBA, Word 2013 se comporte différemment que Word 2007/10VBA : manipuler des fichiers dont le nom a des caractères spéciaux
VBA PPT - Déplacer une Shape d'une slide à une AutreDiverses questions VBA
[VBA/Excel] Ouverture de Fichier User Friendly 
Plus de sujets relatifs à : Comment utiliser target.address sous VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR