[VBA] Evennement, Sélection cellule

Fermé
PYT - 27 avril 2005 à 16:19
 PYT - 28 avril 2005 à 13:24
Salut,

Je cherche à écrire un code permettant d'ouvrir un useform dès lors que l'utilisateur clic sur une cellule précise de son tableau excel.

En gros, faire comme si la cellule selectionnée était un bouton.

Je m'expilque:
j'ai écrit un code qui permet de remplir un tableau (ligne par ligne). Là, je fonctionne avec un bouton ("Create Data") qui ouvre un useform et rajoute une ligne à mon tableau.

Maintenant, ce que j'essais de faire, c'est d'écrire un code qui permet de modifier une ligne dèjà créée en cliquant dessus, en passant par le même useform.

On m'a proposé:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range)
if target.adress= adresse choisie
ouvrir ma forme
end if
End Sub

Mais je vois pas comment intégrer cette fonction.
Et le 'Adresse choisie' s'écrit comment? "A1" ou Cells(1,1) ou ...?

Une âme charitable est elle dans le coin?

Merci
P-Yves

5 réponses

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
27 avril 2005 à 16:29
salut PYT,

l'adresse choisie s'écrit au format A1.

tu dois coller cette Private Sub, non pas dans un module, mais dans le "Microsoft Excel Objects" de ta feuille

0
Re,

J'ai un problème quelquepart, mais je vois pas où!!

Voilà mon code...
'----------------------------------------------------------------------
Private Sub Workbook_SheetSelectionChange1(ByVal Sh As Object, _
ByVal Target1 As Excel.Range)

If Target1.Address = "H9" Then
Load RequestEditor
RequestEditor.Show
End If

End Sub

'---------------------------------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim inColMin As Integer, inColMax As Integer
Dim inLinMin As Integer, inLinMax As Integer

While (Valeur_cellule <> "* Statements : Not available, In progress or Completed")
position_origin = position_origin + 1
Valeur_cellule = Cells(position_origin, 6)
Wend

inColMin = 4
inColMax = 8
inLinMin = 9
inLinMax = position_origin - 1

Worksheets("Interfaces").ScrollArea = Adresse(inColMin) & inLinMin & ":" & Adresse(inColMax) & inLinMax
ActiveWindow.Panes(1).Activate
Worksheets("Interfaces").ScrollArea = "d1:h8"
ActiveWindow.Panes(3).Activate
Worksheets("Interfaces").ScrollArea = Adresse(inColMin) & inLinMin & ":" & Adresse(inColMax) & inLinMax

End Sub
'---------------------------------------------------------------

J'ai mit la procédure qui suit, parce que je soupçonne une interférence entre les 2...

Tu vois mon erreur?

P-Yves
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
27 avril 2005 à 18:41
atention P-Yves,

dans la ligne "If Target1.Address = "H9" Then", la valeur de Target1 sera du genre "$A$1" (coordonnées absolues), donc pas ="A1" (coordonnées relatives)

si tu veux utiliser des coordonnées relatives, pour forcer VBA à renvoyer des coordonnées relatives, tapes ceci :
If Target.Address(False, False) = "H9" Then

y faut que je te remercie : c'est grâce à toi que je viens de découvrir cette possibilité :-)
0
Oh, ya pas de quoi, ça me fait plaisir...

Juste un dernier ptit truc:

Je veux intégrer ça dans une "double" boucle For For afin de balayer un tableau.

Je vois pas comment écrire la synthaxe sous la forme "$A$1"

For i = 1 to 10
For j = 1 to 10
If Target1.Address = "$i$j"??? "$" & i & "$" j
Next
Next

P.S: J'ai régler le problème de transformation de i en lettre de colonne par une fonction qui a fait ses preuves dans une autre partie de mon programme. Donc la vérité est ailleurs..!

PYT
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 692
28 avril 2005 à 10:34
bonjour

If Target1.Address = "$" & i & "$" & j

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci tt le monde
0