target, suivant et précédent ?

  • Initiateur de la discussion Initiateur de la discussion Joker001
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Joker001

Guest
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 !!
 
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
@+
 
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.
 
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
 
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.
 
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 !
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
1
Affichages
939
aitelhachmi
A
C
Réponses
4
Affichages
2 K
C
A
Réponses
2
Affichages
826
aurel2chien
A
M
Réponses
7
Affichages
14 K
M
A
Réponses
1
Affichages
2 K
G
Réponses
10
Affichages
2 K
gypsos
G
Retour