Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2011, 20h12   #1
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Par défaut Appliquer un VB script à tous les enregistrements d'une table

Bonsoir,

je voudrais m'excuser d'avance car ma question est peut-être totalement inepte, mais je me vois parfois obligé de bidouiller sans jamais avoir appris la programmation...

Voilà: j'ai, dans une table de mon application, un bouton qui lance un script en visual basic qui va s'appliquer à l'enregistrement en cours. Le script transfère des informations de certains champs dans d'autres.

Comment puis-je faire pour que le script soit lancé pour tous les enregistrements contenus dans la table?

Merci,
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 20h33   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il serait bon de donner plus de détails, entre autre ton code.

Ton code est dans Access ? Car lorsque tu écris VB Script on parle en général d'un code externe à Access.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 20h49   #3
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Bonjour,

merci pour ta réponse. Oui, mon code est dans Access et le voilà en entier:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Private Sub Prenom_Change()
        Dim AdrPr
        If Not IsNull(Me.Titre) Then AdrPr = Me.Titre & " "
        If Not IsNull(Me.Prenom) Then AdrPr = AdrPr & Me.Prenom & " "
        If Not IsNull(Me.Nom) Then AdrPr = AdrPr & Me.Nom & vbCrLf
        If Not IsNull(Me.Organisme) Then AdrPr = AdrPr & Me.Organisme & vbCrLf
        If Not IsNull(Me.Adresse) Then AdrPr = AdrPr & Me.Adresse
        Forms!Client.AdressePrincipale = AdrPr
        Dim AdrFac
        If Not IsNull(Me.Titre) Then AdrFac = Me.Titre & " "
        If Not IsNull(Me.Prenom) Then AdrFac = AdrFac & Me.Prenom & " "
        If Not IsNull(Me.Nom) Then AdrFac = AdrFac & Me.Nom & vbCrLf
        If Not IsNull(Me.Organisme) Then AdrFac = AdrFac & Me.Organisme & vbCrLf
        If Not IsNull(Me.Facturation) Then AdrFac = AdrFac & Me.Facturation
        Forms!Client.AdresseFacturation = AdrFac
        Dim AdrLiv
        If Not IsNull(Me.Titre) Then AdrLiv = Me.Titre & " "
        If Not IsNull(Me.Prenom) Then AdrLiv = AdrLiv & Me.Prenom & " "
        If Not IsNull(Me.Nom) Then AdrLiv = AdrLiv & Me.Nom & vbCrLf
        If Not IsNull(Me.Organisme) Then AdrLiv = AdrLiv & Me.Organisme & vbCrLf
        If Not IsNull(Me.Livraison) Then AdrLiv = AdrLiv & Me.Livraison
        Forms!Client.AdresseLivraison = AdrLiv
 
End Sub
Le but de la manip est de remplir, à partir des adresses contenues dans une table, de nouveaux champs permettant d'éditer des étiquettes. Le code ci-dessus s'exécute àdans un formulaire pour un enregistrement donné mais j'aimerais mettre toute la table à jour avec ces paramètres.

Merci encore pour ton aide,

Julien
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 21h00   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

Tout d'abord attention aux termes que tu utilises.

VB script n'a rien à voir avec VBA.

Ceci dit :

Pour traiter des enregistrements ont utilises généralement SQL.
Maintenant il faut voir exactement ce que fait ta procédure. Si c'est uniquement du transfert de valeur avec quelques applications de fonctions tu peux passer par SQL.

S'il s'agit de plus compliquer utilises quand même SQL mais converti ta procédure en fonction (function au lieu de Sub). Tu dois lui passer un argument unique tel que le champ ID que tu devrais avoir dans cette table. Inutile d'utiliser l'id dans ton code c'est uniquement destiné à lui faire traiter ta fonction sur chaque enregistrement.

Exemple :
Code :
Select mafonction([champID]) FROM matable Where ....;
Note que suivant le traitement il peux y avoir des verrous sur la table ou cela peut prendre énormément de temps pour réaliser l'opération.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 21h01   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Entre temps le post à évoluer.

Pour ce type de traitement SQL suffit largement.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2011, 21h32   #6
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Bonsoir,

d'accord, je ferai attention à la différence entre VBA et VB script.

Je vais tenter ça en SQL suivant tes conseils.

Merci encore pour avoir pris la peine de m'éclairer.


Julien
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 08h44   #7
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Si tu as déjà les informations dans une table c'est inutile d'en créer une autre une simple requête suffit comme source d'un état.

Voici une piste à adapter :

Code :
SELECT NZ(TableSource.Titre,"") & " " & NZ(TableSource.Prenom,"") & " " & ...  & vbcrlf & NZ(TableSource.Organisme,"") AS adrFac FROM TableSource;
Crodialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 21h55   #8
Invité régulier
 
Inscription : mai 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 40
Points : 6
Points : 6
Bonsoir,

je crois que je m'emmêle les pinceaux, je ne comprends pas tout ce que tu m'expliques... je vais prendre un bouquin Access et potasser ça pour voir si je peux m'en sortir.

En attendant, je vais marquer le post résolu en te remerciant pour tes conseils.
torobravo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 08h02   #9
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Lorsque tu as besoin de transformer des informations existantes dans une ou plusieurs tables inutiles d'en créer une supplémentaire. Une requête suffit.

La requete que je te propose dans mon post précédent reproduit ton code VBA.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web