[VBA] Evennement, Sélection cellule
PYT
-
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
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
A voir également:
- [VBA] Evennement, Sélection cellule
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
5 réponses
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
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
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
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
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é :-)
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é :-)
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question