Excel / Access - Mettre à jour BDD si existe déjà

Hello tout le monde,

Besoin d'un petit coup de pouce,

J'ai un fichier excel et une BDD Access (ci joint).

Dans le fichier excel j'ai la liste des infos contenu dans la Table de ma BDD Access avec

  • un bouton "record" qui enregistre
  • un bouton "refresh" pour mettre a jour l'affichage après enregistrement.

Dans la colonne A, un numéro de matricule qui doit rester unique.

Lorsque le tableau est vide je peu record sans soucis mais apres un refresh , impossible de completer la liste avec des nouvelles infos car la procedure detecte que les numeros de matricule existent déjà.

Ce que je voudrais c'est que si le numero de matricule existe déjà, il mette à jour le nom et le prenom s'ils ont été changés , et si ce n'est pas le cas que cela ne bloque pas la suite de la liste.

En gros :

  • Si numero de matricule existe déja: mise à jour de la BDD (que les infos aient changées ou pas)
  • Si numero n'existe pas , on ajoute a la BDD

Voilà j'espere que je suis assez clair.

Voici les 2 fichiers en question (a mettre dans le meme repertoire).

Mille merci à celui qui saura m'aider.

Nico

18archive.zip (67.51 Ko)

Bonjour

Il faut donc vérifier la présence de l'ID dans la base avec une requête SELECT qui te renverra un recordset vide ou non

Si non vide il faut faire une UPDATE de l'enregistrement et non ajouter un enregistrement ou alors DELETE avant ADD

MERCI pour ta reponse

Par contre je debute en vba est ce que ce serait trop te demander de m ecrire le code ou de le faire sur le fichier exemple ?

En fait j aprend le vba comme ca en dzchifrant les bout de code dont j ai besoin

Bonjour

Ton Excel modifié.

J'ai aussi géré la plage qui est un tableau (listobjet) et non un plage classique.

La méthode manipulation de la base est ancienne mais elle fonctionne donc j'ai laissée

20testaccess.xlsm (26.98 Ko)

Woa super merci ca fonctionne

Derniere petite chose si je peux t'embeter encore :

Comment faire pour qu'a l'enregistrement il ne s'arrete pas à la premiere ligne vide ?

Car des fois je vais avoir des ignes vide entre les enregistrements ... 1 sur 2 à vrai dire.

Et bien sur il faut qu'au recall les lignes vides restent aussi mais ca je pense pas qu'il y ait de probleme avec le code actuel

Je me penche sur l'etude du code de suite pour essayer de tout comprendre

Ou alors à défaut d'accepter les lignes vides (car à mon avis sinon ca va boucler à l'infini) juste faire en sorte que L'Id accepte d'être vide a condition qu'au moins un des 2 autres critères (nom ou prénom) soit remplis ...

Je l'ai déjà paramétré comme tel dans Access mais dans Excel la boucle ne veut pas sauvegarder la ligne si ID est vide.

Si t'as une idée pour ca ce sera definitivement nickel

Merci bcp

RE

Dans une base de données c'est un non sens d'avoir un ID vide.

C'est quoi le fond du problème ?

Edit : déjà c'est assez bizarre de garder un ID pour des personnes différentes.

Peux-tu décrire ton contexte ?

C'est plus un problème de mis en page du fichier excel en fait (question de lisibilité puisque c'est dans ce dernier que tout le monde va travailler).

A chaque occurence de client j'ai une ligne avec les information client et toujours une ligne en dessous qui regroupe l'historique des interactions (coup de telephones, mail envoyé etc).

Donc en gros chaque occurence de client equivaut en fait à 2 lignes conjointes ,sauf que dans la deuxième il n'y a pas d'info en colonne A (pas d'ID donc) les premieres infos se situent colonne en H.

Donc en l'etat le fichier repond à ce que je voudrais mais il numérotera l'intégralité de toutes les lignes du classeur et non pas uniquement les lignes relatives aux informations client (ce que je voudrais ... ).

Voilà je sais pas si c'est clair.

en tout cas j'ai appris un truc grace a ton fichier donc ...

Merci de ton implication

RE

Pas très logique. La règle en base de données et en tableau Excel (qui est en fait une table) c'est de ne pas mélanger des choux et des carottes dans une même colonne.

Si tu as tes données client sur une ligne de A à G et le reste de H à ... ce n'est pas plus lisible sur 2 lignes que sur 1.

De toute évidence ton exemple ne correspond pas à ton cas

Tu vas stocker quels champs dans Access ?

Tu utilises la même table Excel pour lire la table Excel et pour y écrire donc cela doit rester cohérent...

Non en fait dans la premiere ligne les infos clients vont de "A" à "AK".

C'est dans la ligne du dessous ou les données interactions client ne commencent pas avant la ligne H et vont jusqu'a "S" ..

Pour des raison de mise en page et cause de la presence d'autres macro (en gros).

J'ai conscience de l'aspect bricolage de la chose mais c'est juste que j'ai fait ça de façon empirique au fur et à mesure que mes connaissance s'étoffent en VBA.

Jusqu ' à hier je n'avais jamais ouvert Access de ma vie ... lol

Et le fichier etant quasiement finit je veux pas tout repenser/recommencer ...

Je viens de comprendre pourquoi tu dis ca ...

Si je ne met pas d'ID sur les lignes interactoins, lors du refresh ca va tout mélanger ...

Donc du coup normalement j'ai tout ce qu'il me faut pour aller au bout.

Encore 1000 merci de m'avoir aidé.

Rechercher des sujets similaires à "access mettre jour bdd existe deja"