Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

AVANCER/RECULER plus vite

3 réponses
Avatar
Bataille Jean-Paul
Bonjour à tous,


Dans les formulaires, en bas à gauche deux boutos enregistrement précédent
ou suivant suivant

Jaimerais faire un bon de 10 ou 50 enregistrements quelle est la macro et
la version VBA de cette commande ?




Merci anticipé,

JPB

3 réponses

Avatar
Denis Michon
Bonjour Jean-Paul,


Voici une façon de procéder. Dans la procédure Intialize de ton formulaire, adapte le nom de la feuille. Attention, la
méthode CurrentRegion suppose que tu n'as pas de lignes complètement vide dans ta base de données...(il ne devrait pas y
en avoir) sinon tu devras adopter une autre façon de définir la plage nommée "Toto"

tu as besoin de 4 boutons de commandes et tu attaches à ces derniers une des procédures.


'Dans le haut de ton module
Dim Enr As Long

'--------------------------
Private Sub UserForm_Initialize()
With Worksheets("Feuil1")
.Range("A1").CurrentRegion.Name = "Toto"
End With
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_1_Click()
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_1_Click()
AfficherEnregistrement -1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_50_Click()
AfficherEnregistrement -50
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_50_Click()
AfficherEnregistrement 50
End Sub
'--------------------------

'La procédure générale
'--------------------------
Sub AfficherEnregistrement(Numero As Long)

Dim A As Long

Select Case Numero

Case Is > 0
If Enr + Numero > Range("toto").Rows.Count Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au dernier enregistrement?", _
vbInformation + vbYesNo, "Dernier enregistrement") = vbYes Then
Enr = Range("toto").Rows.Count
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If

Case Is < 0
If Enr + Numero < 1 Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au premier enregistrement?", _
vbInformation + vbYesNo, "Premier enregistrement") = vbYes Then
Enr = 1
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If
End Select

For A = 1 To 5
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next

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


Salutations!



"Bataille Jean-Paul" a écrit dans le message de news:3fa38768$0$249$
Bonjour à tous,


Dans les formulaires, en bas à gauche deux boutos enregistrement précédent
ou suivant suivant

Jaimerais faire un bon de 10 ou 50 enregistrements quelle est la macro et
la version VBA de cette commande ?




Merci anticipé,

JPB
Avatar
Denis Michon
Dans la procédure générale

Remplace le "5" par Range("Toto").Columns.Count

For A = 1 To 5
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next

Cela deviendra :

For A = 1 To Range("Toto").Columns.Count
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next


Salutations!


"Denis Michon" a écrit dans le message de news:oFPob.1555$
Bonjour Jean-Paul,


Voici une façon de procéder. Dans la procédure Intialize de ton formulaire, adapte le nom de la feuille. Attention, la
méthode CurrentRegion suppose que tu n'as pas de lignes complètement vide dans ta base de données...(il ne devrait pas y
en avoir) sinon tu devras adopter une autre façon de définir la plage nommée "Toto"

tu as besoin de 4 boutons de commandes et tu attaches à ces derniers une des procédures.


'Dans le haut de ton module
Dim Enr As Long

'--------------------------
Private Sub UserForm_Initialize()
With Worksheets("Feuil1")
.Range("A1").CurrentRegion.Name = "Toto"
End With
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_1_Click()
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_1_Click()
AfficherEnregistrement -1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_50_Click()
AfficherEnregistrement -50
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_50_Click()
AfficherEnregistrement 50
End Sub
'--------------------------

'La procédure générale
'--------------------------
Sub AfficherEnregistrement(Numero As Long)

Dim A As Long

Select Case Numero

Case Is > 0
If Enr + Numero > Range("toto").Rows.Count Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au dernier enregistrement?", _
vbInformation + vbYesNo, "Dernier enregistrement") = vbYes Then
Enr = Range("toto").Rows.Count
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If

Case Is < 0
If Enr + Numero < 1 Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au premier enregistrement?", _
vbInformation + vbYesNo, "Premier enregistrement") = vbYes Then
Enr = 1
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If
End Select

For A = 1 To 5
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next

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


Salutations!



"Bataille Jean-Paul" a écrit dans le message de news:3fa38768$0$249$
Bonjour à tous,


Dans les formulaires, en bas à gauche deux boutos enregistrement précédent
ou suivant suivant

Jaimerais faire un bon de 10 ou 50 enregistrements quelle est la macro et
la version VBA de cette commande ?




Merci anticipé,

JPB
Avatar
Bataille Jean-Paul
Voila qui va bien m'avancer dans mon projet, merci

JPB



"Denis Michon" a écrit dans le message de
news:3TPob.1558$
Dans la procédure générale

Remplace le "5" par Range("Toto").Columns.Count

For A = 1 To 5
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next

Cela deviendra :

For A = 1 To Range("Toto").Columns.Count
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next


Salutations!


"Denis Michon" a écrit dans le message de
news:oFPob.1555$

Bonjour Jean-Paul,


Voici une façon de procéder. Dans la procédure Intialize de ton
formulaire, adapte le nom de la feuille. Attention, la

méthode CurrentRegion suppose que tu n'as pas de lignes complètement vide
dans ta base de données...(il ne devrait pas y

en avoir) sinon tu devras adopter une autre façon de définir la plage
nommée "Toto"


tu as besoin de 4 boutons de commandes et tu attaches à ces derniers une
des procédures.



'Dans le haut de ton module
Dim Enr As Long

'--------------------------
Private Sub UserForm_Initialize()
With Worksheets("Feuil1")
.Range("A1").CurrentRegion.Name = "Toto"
End With
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_1_Click()
AfficherEnregistrement 1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_1_Click()
AfficherEnregistrement -1
End Sub
'--------------------------
Private Sub CmdEnregistrement_Moins_50_Click()
AfficherEnregistrement -50
End Sub
'--------------------------
Private Sub CmdEnregistrement_Plus_50_Click()
AfficherEnregistrement 50
End Sub
'--------------------------

'La procédure générale
'--------------------------
Sub AfficherEnregistrement(Numero As Long)

Dim A As Long

Select Case Numero

Case Is > 0
If Enr + Numero > Range("toto").Rows.Count Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au dernier enregistrement?", _
vbInformation + vbYesNo, "Dernier enregistrement") = vbYes
Then

Enr = Range("toto").Rows.Count
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If

Case Is < 0
If Enr + Numero < 1 Then
MsgBox "L'enregistrement est à l'extérieur des " & _
"bornes de la plage de données", vbCritical, "Attention"
If MsgBox("Désirez -vous rendre au premier enregistrement?", _
vbInformation + vbYesNo, "Premier enregistrement") = vbYes
Then

Enr = 1
Else
Exit Sub
End If
Else
Enr = Enr + Numero
End If
End Select

For A = 1 To 5
Me.Controls("textbox" & A) = Range("toto")(Enr, A)
Next

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


Salutations!



"Bataille Jean-Paul" a écrit dans le message
de news:3fa38768$0$249$

Bonjour à tous,


Dans les formulaires, en bas à gauche deux boutos enregistrement précédent
ou suivant suivant

Jaimerais faire un bon de 10 ou 50 enregistrements quelle est la macro et
la version VBA de cette commande ?




Merci anticipé,

JPB