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

Passage de paramètres

5 réponses
Avatar
Ryo
Salut !

J'ai la fonction suivante qui me permet de renuméroter un champ d'une
table.
Pour l'instant j'execute ce code depuis la fenêtre VBA, et je saisie le
nom du champ et de la table via des InputBox.
Ce qui m'intéresserait ce serrait de pouvoir aussi l'éxécuter depuis un
formulaire et donc de lui passer en paramètre le champ et la table,
l'ennui c'est que si je fait Public Sub ReNum(Dim Table As String, Dim
Champ As String), ben je peux plus l'éxécuter depuis la fenêtre VBA.
Comment faut il faire ?
Merci d'avance.

Public Sub ReNum()
'Fonction de renumérotation d'un champ d'une table
Dim RS As Recordset
Dim I As Long
Dim Table As String
Dim Champ As String
On Error GoTo message

While Table = ""
Table = InputBox("Veuillez entrer le nom de la table à
renumétoter:", "Table ?")
Wend

While Champ = ""
Champ = InputBox("Veuillez entrer le nom du champ clé de la
table", "Champ ?")
Wend

Set RS = CurrentDb.OpenRecordset(Table)
RS.MoveFirst

For I = 1 To DCount("[" & Champ & "]", Table)
Call MAJ(Table, Champ, Str(I), Champ, RS.Fields(Champ).Value)
RS.MoveNext
Next I

message:
Select Case Err.Number
Case 0: MsgBox "Champ renuméroté !", vbInformation, "Finit..."
Case 3078: MsgBox "La table spécifié n'existe pas", vbCritical,
"Erreur..."
Case 2001: MsgBox "Le champ spécifié n'existe pas", vbCritical,
"Erreur..."
Case Else: MsgBox Err.Number & " " & Error, vbCritical,
"Erreur..."
End Select
End Sub

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

5 réponses

Avatar
Eric
Bonjour Ryo

Ou as tu ecrit ton code?
Car si c'est dans un module "global" (onglet Modules dans la fenêtre de
la base de données)et non de formulaire, ta proc est globale donc Public
même sans la faire précédée du mot réservé Public, et tu peux l'exécuter
sans prob sous VB dans la fenetre Exécution.
Par contre si la proc est définie dans un module de formulaire, je ne
suis pas sur qu'en la déclarant Public, tu y as accés de partout.

Je peux pas tester ta proc car tu n'as pas joint la procédure appelée par
Call (MAJ(...))

A+
Eric



Ryo écrivait
news::

Salut !

J'ai la fonction suivante qui me permet de renuméroter un champ d'une
table.
Pour l'instant j'execute ce code depuis la fenêtre VBA, et je saisie le
nom du champ et de la table via des InputBox.
Ce qui m'intéresserait ce serrait de pouvoir aussi l'éxécuter depuis un
formulaire et donc de lui passer en paramètre le champ et la table,
l'ennui c'est que si je fait Public Sub ReNum(Dim Table As String, Dim
Champ As String), ben je peux plus l'éxécuter depuis la fenêtre VBA.
Comment faut il faire ?
Merci d'avance.

Public Sub ReNum()
'Fonction de renumérotation d'un champ d'une table
Dim RS As Recordset
Dim I As Long
Dim Table As String
Dim Champ As String
On Error GoTo message

While Table = ""
Table = InputBox("Veuillez entrer le nom de la table à
renumétoter:", "Table ?")
Wend

While Champ = ""
Champ = InputBox("Veuillez entrer le nom du champ clé de la
table", "Champ ?")
Wend

Set RS = CurrentDb.OpenRecordset(Table)
RS.MoveFirst

For I = 1 To DCount("[" & Champ & "]", Table)
Call MAJ(Table, Champ, Str(I), Champ, RS.Fields(Champ).Value)
RS.MoveNext
Next I

message:
Select Case Err.Number
Case 0: MsgBox "Champ renuméroté !", vbInformation, "Finit..."
Case 3078: MsgBox "La table spécifié n'existe pas", vbCritical,
"Erreur..."
Case 2001: MsgBox "Le champ spécifié n'existe pas", vbCritical,
"Erreur..."
Case Else: MsgBox Err.Number & " " & Error, vbCritical,
"Erreur..."
End Select
End Sub



Avatar
Eric
re

Ya erreur dans la définition de ta proc
Public Sub ReNum(Dim Table As String, Dim Champ As String) ca marche pas
faut remplacer par :
Public Sub ReNum(Table As String, Champ As String), on ne déclare pas les
variables mais on ne fait que les typer.
Pour appeler ta proc dans la fenetre vba, c'est du genre
Renum "NomTable", "NomChamp"
et vire tes declarations Dim table as String et Dim Champ as String dans
la procédure

A+
Eric

PS: j'ai pas tout lu donc possible d'autres erreurs, notamment vers le
rs.Movefirst et rs.movenext compte tenu que tu testes pas le rs.eof


Ryo écrivait
news::

Salut !

J'ai la fonction suivante qui me permet de renuméroter un champ d'une
table.
Pour l'instant j'execute ce code depuis la fenêtre VBA, et je saisie le
nom du champ et de la table via des InputBox.
Ce qui m'intéresserait ce serrait de pouvoir aussi l'éxécuter depuis un
formulaire et donc de lui passer en paramètre le champ et la table,
l'ennui c'est que si je fait Public Sub ReNum(Dim Table As String, Dim
Champ As String), ben je peux plus l'éxécuter depuis la fenêtre VBA.
Comment faut il faire ?
Merci d'avance.

Public Sub ReNum()
'Fonction de renumérotation d'un champ d'une table
Dim RS As Recordset
Dim I As Long
Dim Table As String
Dim Champ As String
On Error GoTo message

While Table = ""
Table = InputBox("Veuillez entrer le nom de la table à
renumétoter:", "Table ?")
Wend

While Champ = ""
Champ = InputBox("Veuillez entrer le nom du champ clé de la
table", "Champ ?")
Wend

Set RS = CurrentDb.OpenRecordset(Table)
RS.MoveFirst

For I = 1 To DCount("[" & Champ & "]", Table)
Call MAJ(Table, Champ, Str(I), Champ, RS.Fields(Champ).Value)
RS.MoveNext
Next I

message:
Select Case Err.Number
Case 0: MsgBox "Champ renuméroté !", vbInformation, "Finit..."
Case 3078: MsgBox "La table spécifié n'existe pas", vbCritical,
"Erreur..."
Case 2001: MsgBox "Le champ spécifié n'existe pas", vbCritical,
"Erreur..."
Case Else: MsgBox Err.Number & " " & Error, vbCritical,
"Erreur..."
End Select
End Sub



Avatar
Ryo
ReNum(Table As String, Champ As String) <- exact c'est une erreur de
copier/coller...
Effectivement ma procédure est dans un module global.
Le problème est que quand je fait ca ReNum(Table As String, Champ As
String) je peux l'executer depuis un formulaire mais je ne peux plus
l'éxécuter depuis la fenêtre VBA (F5 ou la fleche). Moi je voudrais
pouvoir faire les 2.


Eric a formulé la demande :
Ya erreur dans la définition de ta proc
Public Sub ReNum(Dim Table As String, Dim Champ As String) ca marche pas
faut remplacer par :
Public Sub ReNum(Table As String, Champ As String), on ne déclare pas les


--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Avatar
Patatrac92
bonjour,

dans le principe, je ferais comme ça :

public sub ReNum(optional Table As String, optional Champ As String)

While Table = ""
Table = InputBox("Veuillez entrer le nom de la table à
renumétoter:", "Table ?")
Wend

While Champ = ""
Champ = InputBox("Veuillez entrer le nom du champ clé de la
table", "Champ ?")
Wend
......
end sub

1) l'appel par le formulaire marchera sans passer par les While

2) Il faut créer une nouvelle procédure qui appel le renum (pour l'utiliser
en VBA)

sub New_Proc ()
call ReNum
end sub

Patrice

"Ryo" a écrit dans le message de
news:
ReNum(Table As String, Champ As String) <- exact c'est une erreur de
copier/coller...
Effectivement ma procédure est dans un module global.
Le problème est que quand je fait ca ReNum(Table As String, Champ As
String) je peux l'executer depuis un formulaire mais je ne peux plus
l'éxécuter depuis la fenêtre VBA (F5 ou la fleche). Moi je voudrais
pouvoir faire les 2.


Eric a formulé la demande :
Ya erreur dans la définition de ta proc
Public Sub ReNum(Dim Table As String, Dim Champ As String) ca marche pas
faut remplacer par :
Public Sub ReNum(Table As String, Champ As String), on ne déclare pas
les



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




Avatar
Eric
re, Ryo
La raison est simple.
Cette proc a besoin de 2 arguments et donc en faisant F5 ou la fleche tui
ne lui donnes pas les arguments.
Si tu veux l'exécuter en VBA dans le module, il te faut taper en bas dans
la fenêtre Exécution : Renum "NomTable","NomChamp"

A+
Eric

Ryo écrivait
news::

ReNum(Table As String, Champ As String) <- exact c'est une erreur de
copier/coller...
Effectivement ma procédure est dans un module global.
Le problème est que quand je fait ca ReNum(Table As String, Champ As
String) je peux l'executer depuis un formulaire mais je ne peux plus
l'éxécuter depuis la fenêtre VBA (F5 ou la fleche). Moi je voudrais
pouvoir faire les 2.


Eric a formulé la demande :
Ya erreur dans la définition de ta proc
Public Sub ReNum(Dim Table As String, Dim Champ As String) ca marche
pas faut remplacer par :
Public Sub ReNum(Table As String, Champ As String), on ne déclare pas
les