[VBA] Evennement, Sélection cellule

PYT -  
 PYT -
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

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  2. P-Yves
     
    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
    1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
       
      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
  3. PYT
     
    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
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

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

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

    Posez votre question