IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

requête de mise à jour avec code VBA


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 51
    Points
    51
    Par défaut requête de mise à jour avec code VBA
    Bonjour à tous,

    j´aimerais savoir comment écrire du code VBA pour actualiser une de mes tables. Le problème est ceci: J´ai une table qui a l´air ainsi
    Film_ID Personne_ID NomFilm
    1 33 vvv
    2 33 nnn
    3 32 xxx
    ... ... ...
    400 366 yyy

    J´aimerais changer complètement toutes les données de la colonne Personne_ID selon un certain critère (par ex. Personne_ID commence par 6, puis graduellement jusqu´à 350, peu importe Film_ID et NomFilm).
    Quelqu´un pourrait-il please please me dire comment procéder avec VBA ou SQL? MERCIIIIIIII.

    Sylvie

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Voici une ebauche de solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call CurrentDb.Execute("UPDATE MaTable SET Personne_Id = xx WHERE Personne_Id = yy")
    Je pense qu'a partir de ce code, vous devriez trouver votre bonheur

    Attention cependant que Personne_Id ne soit pas une cle unique...

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Merci SSJConsult pour ta réponse. Si je peux remplacer xx par la variable i de ma boucle For, alors c´est gagné.
    Maintenant je constate quelque chose de singulier dans une de mes tables: Il y a 2 jours j´ai rempli ma table "Personne" jusqu´à l´ID 50, et aujourd´hui j´ai continué le remplissage jusqu´à l´ID 150. Quand avec du code vba, je fais "MaTableRecordset.MoveFirst" puis avec MsgBox j´affiche la valeur de l´ID correspondant à la première rangée de données, j´obtiens 50. Que se passe-t-il? Comment faire pour que la donnée actuelle pointe vraiment sur la première rangée de donnée?

    Merci encore.
    Sylvie

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Vous pouvez remplacer xx et yy par ce que tu vous voulez. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 to 100
    	Call CurrentDb.Execute("UPDATE MaTable SET Personne_Id = " & i & " WHERE Personne_Id = " & i + 150)
    Next i
    Si vous ne devez executer ce code qu'une seule fois, pas de probleme.
    En revanche si c'est repetitif, il serait mieux d'utiliser un recordset car ce sera bien plus performant.

    Pour ce qui est du deuxieme point : MoveFirst pointe vers le premier enregistrements de la table, en fonction du tri ou, en absence de tri, en fonction de la cle primaire. S'il n'y a ni tri ni cle primaire (ici, personne_id), on ne peut s'attendre a aucun resultat logique...

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Merci SSjconsult pour tes réponses qui m´ont bien aidé.
    Je me demandais tout juste à quoi est ce qu´une pareille requête aurait-elle donc l´air en utilisant un recordset, vu que j´aimerais utiliser cela plusieurs fois pour des tableaux différents.
    J´aimerais aussi savoir comment le faire en utilisant Access --> Requête (en mode Design). Jusqu´ici pour une requête de mise à jour par mode Design, je n´ai réussi qu´à n´insérer que des valeurs identiques. Je m´explique: j´ai du insérer un nouveau champ à un tableau existant qui comportait déjà des données. Naturellement ce champ est vide pour toutes les données du tableau. J´aimerais néanmoins actualiser ce tableau en ajoutant les valeurs du nouveau champ qui vont respectivement de la première donnée du tableau à la dernière de 1 à 124. Est-ce possible de réaliser ceci sous mode design d´une requête Access ou bien seulement en utilisant du vba? Exemple en vba?

    Merci beaucoup.

    Sylvie

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Seulement possible en VBA. SQL ne permet pas de "boucler" sur des valeurs.

    http://warin.developpez.com/access/dao/?page=partie_5

Discussions similaires

  1. [AC-2007] Code VBA d'une requête de mise à jour
    Par Crachover dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/03/2010, 20h09
  2. [VBA]Requête de Mise à jour de BDD qui ne s'exécute pas
    Par Playerz dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/06/2008, 10h48
  3. Requête mise à jour avec jointure interne
    Par joquetino dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/01/2008, 18h41
  4. [Requête/SQL]Mise à jour avec condition
    Par atlantideD dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 23/04/2007, 00h14
  5. Problème avec une requête de mise à jour
    Par Le Pharaon dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2006, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo