Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 09/12/2011, 10h13   #1
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Par défaut Vidage VBA bizarre > un moyen de mettre en ordre rapidement?

Bonjour tous!
Voilà j'ai eu droit à un bizarre vidage de tous mes codes vba, ce qui fait que maintenant je dois tout remettre en ordre, pour mes boutons. Je l'ai fait mais le problème c'est que je doive faire ca pour chaque formulaire. Il y a bien un code général mais également des codes qui se trouvent un peu partout

Je fais régulièrement des backups de ma base. Y a t'il un moyen rapide pour dire "je veux copier tous les codes vba de telle base à telle base (sans rien copier d'autre, ni les tables, ni les formulaires, etc... ?

J'ai bien essayé la fonction Exporter du menu fichier mais à l'importation il me dit que ce n'est pas possible. Du coup en attendant je vais faire du copier/coller manuellement pour tous les boutons, mais j'aimerais bien que si cela m'arrive encore je puisse trouver une solution plus rapide, car tout remettre en ordre prend du temps

Merci à vous pour votre aide
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 14h58   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Qu'appèles-tu 'remettre en ordre' ?

Tes fonctions et procédures se sont déplacées dans les modules qui les contiennent ?

Regarde les MZ-Tools. Je ne sais pas s'ils marchent pour 2010 mais grâce à eux, il est possible de déplacer ou trier des procédures dans un module.

Un bon outils aussi est Smart Identer, génial pour rendre le code plus lisible dans une appli où l'indentation est toute croche.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h16   #3
Membre à l'essai
 
Inscription : février 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 54
Points : 24
Points : 24
Bonjour,

J'ai exactement le même problème. J'ai le message suivant : "le nom du module est mal orthographié ou fait référence à un module qui n'existe pas".

Quelqu'un d'autre a-t-il déjà eu le même problème ?

Merci d'avance
Martin_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 16h47   #4
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Je crois que j'ai eu aussi ce message, mais c'est parce que le code lié au clic du bouton avait disparu des modules. Je ne sais pas du tout comment ca se fait que tout mon code VBA associé à des boutons (procédure d'événements) a disparu. J'ai mis 1h30 à tout remettre en ordre. Je suis pas encore à l'aise avec la version 2010 mais je me souviens qu'avec Access 97 on pouvait voir les modules dans le panneau module. Ce serait tellement simple si je pouvais copier coller ce genre de contenu entre 2 bases de données, pour le cas où le "vidage VBA" inexpliqué se reproduise à nouveau.

Je me souviens juste que mon collègue m'avait interpellé car il n'arrivait pas à ouvrir la BD, car il y avait un message d'erreur lié au VBA (me demandez pas l'entièreté du message, je sais plus). Mais du reste, si on sait copier des tables, des requêtes, des formulaires ou des états d'une BD à une autre, je n'ai pas encore réussi à copier TOUT le code des modules d'une BD à l'autre, vu que je me suis rendu compte que le VBA "partitionnait" les codes selon les formulaires, d'après ce que j'ai compris. D'où m'a question de savoir si on pouvait copier tout facilement, histoire que je doive pas 36 fois faire un copier coller du code dans tel ou tel bouton auquel un événement est associé :p
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 21h27   #5
Membre à l'essai
 
Inscription : février 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 54
Points : 24
Points : 24
Bonjour,

Dans un autre post, quelqu'un m'a proposé une solution.

http://www.developpez.net/forums/d96...ition-modules/

Malheureusement, dans mon cas, elle n'a pas fonctionné.
Martin_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 22h22   #6
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut ZoliveR, marot_r et Martin_77,

ZoliveR, chaque formulaire peuvent avoir un module associé (propriété/autre/avec module) où se trouve l'ensemble des codes événementiels. il n'est pas besoin de faire l'association événement/code via la feuille de propriété (si je ne me trompe cela remonte à de très vieille version cette obligation).
le respect des règles de nommage des fonctions dans le module suffit au formulaire, dont le module lui est associé, à retrouver les événements associés aux contrôles.
il n'est donc pas utile de faire des copies/coller pour chaque code de tes boutons. le copie/coller de l'intégralité module où est contenu le code vers le nouveau est suffisant.

Martin_77, je n'ai pas eu ce genre de pb mais si tu accèdes bien au contenu du module je préconise, peut être par excès de prudence, de faire un copie/coller du module via le bloc note.
si tu n'accèdes pas au code du module et que la réparation ne fonctionne pas, fait comme moi : trouve de belles injures et fait toi plaisir...

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 22h56   #7
Membre à l'essai
 
Inscription : février 2008
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 54
Points : 24
Points : 24
Bonjour vodiem,

Le problème est qu'il est impossible d'accéder au code de chaque formulaire.

Heureusement, ma dernière sauvegarde datait de 3 heures.

Bien cordialement
Martin_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 15h32   #8
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Y a t'il un moyen de copier coller tous les codes, d'une BD à une autre, sans devoir le faire pour chaque formulaire, voilà ma question
Je me suis aperçu que je n'avais pas tout copié, car quand j'en avais fini par un formulaire, dans un autre formulaire le bouton ne fonctionnait pas, je devais donc ouvrir pour copier coller le code pour chaque formulaire... En fait j'ai essentiellement un seul et même code pour pas mal de formulaires, c'est un code qui permet d'activer la modification de ceux-ci (par défaut il est juste consultable, avec le clic du bouton je permets à l'utilisateur de faire des modifications. Ceci afin qu'il n'y ait pas de modifications malencontreuses

Edit: pour satisfaire votre curiosité, voilà le code que j'ai employé
Code :
1
2
3
4
5
6
7
Private Sub Commande73_Click()
Me.AllowEdits = True 'pour autoriser la modification
Me.Commande73.FontBold = True
Me.Commande73.Caption = "En mode modification"
Me.Détail.BackColor = vbYellow
Me.Étiquette76.Visible = True
End Sub
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 16h20   #9
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
normalement quand tu importes un formulaire tu importes aussi son module.

tu pourrais dupliquer l'ensemble des codes via les objets:
Code :
1
2
Application.CurrentProject.AllModules
Application.Modules
mais si tu as souvent les mêmes fonctions dans tes formulaires, pourquoi ne fais tu donc pas des fonctions globales? tu n'aurais qu'un module à importer.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 14h58   #10
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 80
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 80
Points : 10
Points : 10
Je ne sais pas vraiment comment faire des fonctions globales. J'ai fait du copier coller de boutons mais à chaque fois je dois mettre un code pour chaque bouton et ca se fait pour chaque formulaire

Je suis un peu nouveau dans Access, j'ai déjà fait de nets et fulgurants progrès mais je n'ai pas la science infuse
ZoliveR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 18h54   #11
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 479
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 479
Points : 7 568
Points : 7 568
Pour faire une fonction ou une procédure globale c'est très simple.

Crée un nouveau module ou utlise un module existant

puis tu écrit quelque chose comme :

Code :
public function NomTaFunction() as ....
ou
Code :
public sub NomTaSub() as ....
Le mot public rend la fonction visible à l'extérieur du module.

Pour l'utiliser tu as juste à l'appleler :

Code :
1
2
call NomTaSub()
toNresultat=NomTaFunction()
Tu peux faire cela de n'importe où dans l'application.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web