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 26/04/2011, 14h24   #1
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Par défaut vérifier si une valeur est présente avant de copier

Bonjour à tous,
Je rencontre un soucis dans la construction d'une base de données sous accès.
Mon problème est que je voudrai vérifier la présence d'une valeur dans une table avant l'insertion de cette même valeur, afin d'éviter des doublons, en language Vba.

Est-ce que quelqu'un peut m'aider?

Je vous remercie
maximilien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 15h20   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
plusieurs solutions:
- index sans doublons, ce qui interdit à la requête d'ajout de travailler
- fonction dlookup utilisée en VBA
- requête supression avant la requête ajout
- requête de non correspondance
- ....
donne un peu plus de précisions pour une aide plus adaptée
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/04/2011, 07h38   #3
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Merci pour ta réponse.
En fait dans la base,j'importe des données différentes
qui se trouvent sur des fichiers excel,ces valeurs peut aller de 200 à 6000 lignes pour pouvoir faire des comparaisons.Lors de chaques importations,j'ai créer une requête qui permet de rajouter une donnée dans une colonne afin d'identifier quelle est le fichier importé.cette donnée est demandé à chaque fois à l'utilisateur.
Ce que je voudrai est dès que l'utilisateur entre la donnée dans la fenêtre "veuillez entrer la référence" une macro vérifie si cette valeur est présente dans la colonne si oui refuser l'importation,sinon effectuer l'importation.

Je vous remercie de votre aide
maximilien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h02   #4
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
alors c'est dlookup qui va te permettre de trouver si la valeur existe
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 11h07   #5
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Merci
Cette information,je l'ai déjà aperçu sur d'autre personne qui ont déjà eu ce genre de soucis. Mais je n'arrive pas à le mettre en place.
maximilien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 15h42   #6
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
est tu déjà touché un peu à VBA?
si oui, sur sortie de la zone de texte un petit programme
si isnull(dlookup("le nom du champ","la table","la bonne colonne = " & la valeur de la zone de texte)) alors
exécuter requête ajout
sinon
msgbox "blabla"

pour te donner la vraie programmation, il me faudrait beaucoup plus de renseignements
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 16h09   #7
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Salut merci pour ton aide, pour répondre à ta question oui j'ai déjà touché au VBA mais ça remonte à plusieurs années.

Concernant la formule que tu m'a indiqué ceci est bonne si on recherche une valeur dans une même table.
Ce n'est pas mon cas,J'explique en quelques mots le fonctionnement de ma base.

J'importe un classeur excel dans une table tampon sur celle-ci j’exécute une requête "mise à jour" afin de rajouter une valeur à la première colonne (identification pour les nombreuses importations)dès la requête fini,je lance une requête ajout dans une table "rapport" et je recommence des que j'ai un nouveau document excel.

cette table "rapport" permet de faire des analyse comparaison,par rapport aux nombreuses importations.

suite à ça,je voudrai pour chaque importation qu'une macro "recherche" se lance après l’exécution de la requête "mise à jour" par rapport à la valeur attribuer et qui me dise si cette valeur est présente dans la première colonne de la table "rapport" si oui, ne rien faire sinon exécuter requête ajout.


quelqu'un peux m'aider?
maximilien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 23h16   #8
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Bonjour,

A la lecture de ton dernier message, il me semble qu'il te faut créer une requête de non correspondance entre ta table tampon mise à jour (Table1) et ta table Rapport, table de destination pour l'ajout de tes données.

La requête de non-correspondance entre Table1 et Rapport peut-être obtenu facilement à l'aide de l'assistant du même nom.

Tu devrais aboutir à 1 sql du genre:

Code sql :
1
2
3
SELECT Table1.champ1, Table1.champ2, Table1.champ3
FROM Table1 LEFT JOIN Rapport ON Table1.champ1 = Rapport.champ1
WHERE (Rapport.champ1 IS NULL);

Ensuite, supposons que cette requête se nomme Requete1, tu ajoute les données de cette requête dans la table Rapport au moyen d'une requête Ajout, qui devrait ressembler à cela au niveau sql:

Code sql :
1
2
3
INSERT INTO Rapport
SELECT *
FROM Requete1;

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 08h25   #9
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Merci pour ton aide.
Peux tu me dire comment rajouter suite à cette requête(non correspondance), un message disant donnée déjà existant si cela est le cas et non existant si absent?
Merci
maximilien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h17   #10
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

Si ta requête Ajout (qui copie les données dans la table Rapport) se nomme "Ajout", alors tu peux mettre le code suivant sur clic d'un bouton "Commande1" (dans un formulaire) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Commande1_Click()
 
   ' S'il y a au moins un enregistrement non présent dans rapport
   If DCount("Champ1", "Requete1") > 0 Then
 
      CurrentDb.Execute "Ajout"
 
   Else ' sinon affiche le message.
 
      MsgBox ("Données déja présentes !")
 
   End If
 
End Sub
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h49   #11
Futur Membre du Club
 
Homme Maximilien
Consultant en technologies
Inscription : avril 2011
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Maximilien
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : Transports

Informations forums :
Inscription : avril 2011
Messages : 109
Points : 18
Points : 18
Je viens d'essayer ça marche parfaitement. J'étais sur le point d'abandonner.

Je te remercie fortement
maximilien59 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 07h04.


 
 
 
 
Partenaires

Hébergement Web