target, suivant et précédent ?

Joker001

XLDnaute Nouveau
Bonjour, je suis novice en VBA excel. J'ai réussi à programmer un bouton suivant et précédent avec ce code (trouvé qql part ..)

Précedent : currentrow= currentrow+abs ((currentrow<lastrow)*1):lecture ' sub qui lit le tableau vers textbox
suivant : currentrow= currentrow-abs ((currentrow>2)*1):lecture

sub userform_initialize ()
lastrow=thisworbook.worksheets ("Bd").range ("A"&colums.count)end(clup).row
currentrow=lastrow: lecture
end sub


pour la work sheet :

Private sub worksheet_beforedoubleclick (byval target as range, cancel as boolean)
cancel = true
userform1.show
range("B" & target.row).select
userform1.textbox1.value=activecell.value
end sub

J'ai crée un bouton pour appeler mon userform sur ma page excel et là préc et suivant fonctionnent.
Par contre ce n'est pas le cas si les utilisent en faisant apparaître le userform par double clique sur une ligne (target) ... il doit manquer quelque chose pour définir ma currentrow dans la worksheet ???

Merci pour vos réflexions !!
 

Pierrot93

XLDnaute Barbatruc
Re : target, suivant et précédent ?

Bonjour,

essaye comme ceci, non testé :
Code:
Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
 cancel = True
 userform1.textbox1.Value = Range("B" & target.Row)
 userform1.Show
 End Sub
bonne journée
@+
 

Papou-net

XLDnaute Barbatruc
Re : target, suivant et précédent ?

Bonjour Joker001,
Bonjour Pierrot, le Forum,

A moins d'une erreur lors de la retranscription de code dans ton message:

lastrow=thisworbook.worksheets ("Bd").range ("A"&colums.count)end(xlup).row

D'autre part, as-tu déclaré la variable lastrow comme Public, ou à défaut en début du module?

Cordialement.
 

Joker001

XLDnaute Nouveau
Re : target, suivant et précédent ?

Bonjour Papou-net,

oui toutes les variables sont déclarées (et c'est une faute de frappe) :

dim target as single
dim currentrow as single
dim lastrow as single
dim firstrow as single

le problème vient de la rédéfinition de currentrow après un target dans worksheet à mon avis ...

merci et bonne journée
 

Papou-net

XLDnaute Barbatruc
Re : target, suivant et précédent ?

RE:

Bonjour Pierrot,

Je me trouvais suffisamment intelligent pour ne pas avoir à lire ton post. Non, je plaisante bien sûr!

Je l'ai bien lu initialement, mais comme Joker ne me semble pas y avoir trouvé réponse, c'est donc l'idée d'utiliser l'événement du bouton qui m'est venue.

A +

Cordialement.
 

Joker001

XLDnaute Nouveau
Re : target, suivant et précédent ?

Qu'entendez-vous par "utiliser l'événement du bouton" ?

J'utilise double clique pour afficher les données d'une seule ligne dans mon userform. Comment placer la programmation du précédent et suivant dans "beforedoubleclik"?

Merci !
 

Papou-net

XLDnaute Barbatruc
Re : target, suivant et précédent ?

RE Joker,

Comme je l'ai dit plus haut, pas de fichier pas de certitude.

Je voulais simplement te dire d'écrire le nom de la macro attachée à ton bouton dans la procédure BeforeDoubleClick.

Mais tout dépend de la nature de ton bouton, s'il est issu de la barre d'outils Formulaires ou si c'est un contrôle ActiveX.

Exemples:

Code:
'Bouton de barre Formulaires
Private sub worksheet_beforedoubleclick (byval target as range, cancel as boolean)
cancel = true
Bouton1_Cliquer
end sub

'Bouton ActiveX
Private sub worksheet_beforedoubleclick (byval target as range, cancel as boolean)
cancel = true
Feuil1.CommandButton1_Click
end sub

A tester.

Cordialement
 

Si...

XLDnaute Barbatruc
Re : target, suivant et précédent ?

salut

peut-être ainsi

- dans ThisWorkbook
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  UserForm1.Show
End Sub

- dans la page de code du formulaire
Code:
Option Explicit
Dim Lastrow As Long, Currentrow As Long
Sub Userform_initialize()
  Lastrow = Sheets("Bd").Range("A" & Columns.Count).End(xlUp).Row
  Currentrow = ActiveCell.Row
  TextBox1 = Sheets("Bd").Range("B" & ActiveCell.Row)
End Sub

Private Sub CommandButton1_Click()
  If Currentrow < 2 Then
    MsgBox "on est au sommet !", 16, "C'est fini..."
  Else
    Currentrow = Currentrow - 1
    TextBox1 = Sheets("Bd").Range("B" & Currentrow)
  End If
 
End Sub
Private Sub CommandButton2_Click()
  If Currentrow > Lastrow - 1 Then
    MsgBox "on est au plus bas !", 16, "C'est fini..."
  Else
    Currentrow = Currentrow + 1
    TextBox1 = Sheets("Bd").Range("B" & Currentrow)
  End If
End Sub
 

Pièces jointes

  • Fausse Toupie.xls
    41 KB · Affichages: 36

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2