Vba copie de données selon différents critères sql

creal69360

XLDnaute Junior
Bonjour,

Dans le cadre de mon stage, je dois réaliser une analyse qui me permettrait grâce à une BDD contenant des données RH ( retards ....) de réaliser une requete. cette requete me créeraient une nouvelle BDD que je copierai dans une nouvelle feuille. je pourrais alors faire des statistiques selon différents critères ( date, unité ....). pour se faire j'ai écrit ce code qui doit normalement copier les données selon les critères dans un onglet de ma feuille.
Voici le code :
Public Sub analyse()

End Sub
Dim Cn As ADODB.Connection

Dim nomfeuille As String, SQL_analyseunite As String
Dim RST As ADODB.Recordset
Dim fichier1 As String


nomfeuille = "Feuil1"
fichier1 = "C:\Mathieu\2011-ANOMS TOUTES UNITES maj.xlsx"
Set Cn = New ADODB.Connection

Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & fichier1 & ";Extended Properties=Excel 8.0;"

SQL_analyseunite = "Select * from [" & nomfeuille & "$] "where " & date messa & "> #dtmin.value# and & date
' dtmin. value et dtmax.value sont tirés du formulaire qui permettrait de réaliser cette analyse
messa & " < #dtmax.value# " and "& Libellé US & " =unite.value;"



Set RST = New ADODB.Recordset
Set RST = Cn.Execute(SQL_analyseunite)
For i = 0 To RST.Fields.Count - 1
Cells(1, i + 1) = RST.Fields(i).Name
Next i
Sheets("analyse unite").Select
' c'est la feuille dans laquelle je veux que mes données issues de la requete se copient
Range("a2").CopyFromRecordset RST




Cn.Close
Set Cn = Nothing

End Sub

c'est a partir de la requete sql que l'erreur se presente. je tiens a preciser que les données que je gere sont confidentielles donc je pourrais pas vous envoyez lintegralité de la BDD.
Merci de m'aider ^^
 

david84

XLDnaute Barbatruc
Re : Vba copie de données selon différents critères sql

Bonjour,
c'est a partir de la requete sql que l'erreur se presente. je tiens a preciser que les données que je gere sont confidentielles donc je pourrais pas vous envoyez l'integralité de la BDD.
quelques données anonymes (une trentaine maximum) reflétant ta demande suffisent pour tester.
Il faudrait aussi expliquer ce que tu cherches vraiment à faire (peut-être qu'il est inutile de passer par une requête de ce type).
A+
 

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

Salut,

Je te remercie déja pour cette réponse si rapide, je vais t'envoyer une partie de mon projet avec le formulaire qui doit gérer cette partie de l'analyse . j'ai fait precedemment un formulaire qui a pour objectif d'aller chercher les données sur un autre fichier excel (maj) pour ensuite actualiser la BDD( je l'ai ajouté en plus pour que tu vois ce que je fais dans la globalité) . on m'a demandé de faire ça car il faut que plusieurs personnes puissent actualiser la BDD au même momment ( j'espere que tu comprends tous ), je veux maintenant grace au formulaire que je t'envoie faire une petite analyse qui me sortira les données en fonction de l'unité et de la date que l'on rentre grace a un calendrier. Je t'envoie donc ce que sa donne. L'onglet donnée me sert juste pour alimenter ma liste. Tu remarqueras aussi que si une donnée etait présente dans la BDD mais ne l'est pas dans la mise a jour je n'arrive pas à le marquer dans ma BDD. En esperant que tu as tous compris et que tu puisses m'aider ^^.
 

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

je tiens a preciser qu'il faut cocher dans reference la librairie microsoft active x. Je n'ai pas non plus envoyer de fichier BDD et Maj. Pour cela crée un fichier excel ou tu rentres les données qui sont présentes dans le fichier envoyé précedemment et tu le nommes maj. pour créer le fichier BDD tu enleves juste une ligne et tu peux alors faire l'experience pour voir si le formulaire permet dacualiser la BDD
 
Dernière édition:

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

mon calendrier ne fonctionnait pas, je vous envoie le fichier avec le calendrier qui fonctionne et en plus je vous envoie le fichier BDD et maj il suffira alor dans le code importation d' ecrire l'acces au fichier ( a coté de fichier2= ). Je ne suis pas un pro encore car la majorité de ce que je fais la je l'ai tout appris avec ce stage ( il a débuté il ya une semaine )
 

david84

XLDnaute Barbatruc
Re : Vba copie de données selon différents critères sql

Re
Désolé mais je ne peux t'aider car je n'ai pas de calendrier disponible sur ma version d'Excel (2010 64 bits).
Il faudrait d'ailleurs que tu précises quel type de contrôle tu utilises (DT Picker, contrôle Calendar).
Enfin, permets-moi un conseil : 3 fichiers, tous enregistrés en .xlsm ou .xlsx, cela décourage les bénévoles et amoindrit tes chances de trouver de l'aide : donc 2 fichier maxi, enregistrés au format .xls.
Présente d'un côté les données actuelles et de l'autre les résultats attendus (quelques données doivent suffire pour comprendre ce que tu veux).
A+
 

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

Re,

Déja merci de consacrer du temps pour m'aider, je trouve que j'ai été trop brouillon dans ma manière de présenter le problème:
Tout d'abbord le calendrier n'est qu'un détail qui permet une meilleur saisi de la date ( j'ai coché date picker ), il est donc possible de l'enlever sans probleme. Ensuite en ce qui concerne l'utilisation de 3 fichiers excel, je souhaite préciser que au départ l'extraction se fait a partir d'une BDD SAS, cela me donne alors le fichier que l'on nomme BDD. Ensuite la BDD sas est actualisé et il manque alors des données dans la BDD excel, c'est pourquoi on refait une extraction qui donne le fichier MAJ et ensuite grâce au code présent dans le 3e fichier je vais extraire les données présentes dans la maj ( et absente dans la bdd) pour actualiser la BDD. Il faut utiliser un 3e fichier car il faut que la BDD puisse etre actualiser par plusieurs personnes en même temps. le code présent dans mon fichier excel le permet, malheuresement je n' arrive s gérer le cas ou une donnée a été supprimer de la base SAs, j'aimerai en effet ajouter une variable date sup qui m'indiquerait à quelle date la ligne a été supprimer. En fait dans mon post j'ai fait l'erreur de montrer le probleme du 2e formulaire qui permettrait seulment de faire une petite analyse statistique ( on peut dire que c'est du bonus ). J'aimerais par contre regler le probleme des lignes qui ont disparu au plus vite car cela m'embete beacoup ( mon maitre de stage revient lundi et j'aimerais que cela fonctionne). je renvoie donc les fichiers sans le 2e userform ( permettant normalement une analyse stat). J'espere vraiment que quelqun pourra m'aider et je remercie d'avance toute personne me suggérant des solutions. Merci^^
 

david84

XLDnaute Barbatruc
Re : Vba copie de données selon différents critères sql

Re
Désolé mais tes explications et tes fichiers (toujours enregistrés au format .xlsm alors que je te l'ai déconseillé dans mon dernier message) ne m'éclairent pas dans la compréhension de ton problème et comme je ne peux tester tes codes (est-ce toi qui en est l'auteur ?)...
Je ne peux donc que tenter de décortiquer ton problème et permettre à un autre forumeur d'y voir plus clair, mais ne peux malheureusement pas faire plus.

Ensuite en ce qui concerne l'utilisation de 3 fichiers excel, je souhaite préciser que au départ l'extraction se fait a partir d'une BDD SAS, cela me donne alors le fichier que l'on nomme BDD.
ok

Ensuite la BDD sas est actualisé et il manque alors des données dans la BDD excel, c'est pourquoi on refait une extraction qui donne le fichier MAJ et ensuite grâce au code présent dans le 3e fichier je vais extraire les données présentes dans la maj (et absente dans la bdd) pour actualiser la BDD.
A priori je n'en vois pas l'intérêt : quand la BDD SAS est actualisée, elle garde bien les anciennes infos non ? Donc si c'est le cas pourquoi ne pas directement actualiser la BDD au lieu de passer par le fichier MAJ ?

Il faut utiliser un 3e fichier car il faut que la BDD puisse etre actualiser par plusieurs personnes en même temps.
C'est cela que je ne comprends pas (ou plutôt je n'en vois pas l'intérêt) : en quoi l'utilisation d'un 3ème fichier t'aide dans l'actualisation de ton fichier BDD ?

J'aimerais par contre regler le probleme des lignes qui ont disparu au plus vite car cela m'embete beacoup
elles ont disparu d'où ces lignes ? Explique toi mieux.

mon maitre de stage revient lundi et j'aimerais que cela fonctionne
Connait-il l'informatique ? Si c'est le cas, il est justement là pour t'aider et lui au moins il aura sous la main tous les tenants et aboutissants de ton problème.

je n' arrive s gérer le cas ou une donnée a été supprimer de la base SAs, j'aimerai en effet ajouter une variable date sup qui m'indiquerait à quelle date la ligne a été supprimer
Et elle se trouve où cette information ?

Sinon, je vois que tu utilise ADO pour effectuer ce travail. Je te communique donc en PJ un tutoriel qui peut peut-être t'aider (qui sait ?).
A+
 

Pièces jointes

  • LireEcrireClasseursFermes_ADO.pdf
    85.2 KB · Affichages: 64
  • LireEcrireClasseursFermes_ADO.pdf
    85.2 KB · Affichages: 72
  • LireEcrireClasseursFermes_ADO.pdf
    85.2 KB · Affichages: 78

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

re daniel,

merci pour le pdf que tu m'as envoyé, en fait pour l'utilisation du 3e fichier, mon maitre de stage veu que la BDD ne soit pas accessible par tous les employés et qu' on ait pas à créer a chaque fois un nouveau fichier ( c'est pas pratique ). On souhaite aussi savoir si des données ont DISPARU ( par exemple il y a eu une ereur de saisi et il faut rectifier le probleme), la solution proposé etait de créer une variable date sup qui permet quand une ligne a disaparu de dire dans la BDD quand est ce qu'elle a disparu. Le probleme c'est que mon maitre de stage m'a proposé ce que j'ai mis en comentaire mais que j'arrive pas a faire fonctionner son idée et j'ai du mal à la comprendre, c'est pourquoi j'aimerai de l'aide pour trouver une solution au probleme " Une ligne était présente dans la BDD mais ne l'est plus dans la MAJ" qu'est ce que je peux faire, pour que cela apparaisse dans la BDD. Mon maitre de stage est très fort en informatique ( c'est dailleur lui qui m'a appris en une semaine a me servir des connection adodb ) mais la je suis tout seul jusqu'a lundi et je ne peux rien faire si je ne resouds pas ce probleme. En esperant avoir été plus clair.
 

david84

XLDnaute Barbatruc
Re : Vba copie de données selon différents critères sql

Re
On souhaite aussi savoir si des données ont DISPARU ( par exemple il y a eu une ereur de saisi et il faut rectifier le probleme), la solution proposé etait de créer une variable date sup qui permet quand une ligne a disaparu de dire dans la BDD quand est ce qu'elle a disparu.
Je te repose la question : elle est où cette information ?
Soit elle existe et dans ce cas tu peux la récupérer, soit elle n'existe pas et il te faut alors confronter la BDD avant actualisation et celle après actualisation pour sélectionner les lignes qui n'existent plus.
Une ligne était présente dans la BDD mais ne l'est plus dans la MAJ" qu'est ce que je peux faire, pour que cela apparaisse dans la BDD.
Ton onglet 1 de ton fichier Excel constitue la dernière BDD récupérée. Tu copies ta nouvelle mise à jour dans ton onglet 2
et il ne reste plus qu'à confronter tes 2 onglets et faire ressortir les lignes absentes (MFC), copier ces lignes absentes où tu veux (macro), etc.
Si tu ne comprends pas ce que ton maître de stage te demande ou si tu penses que ce n'est pas la meilleure solution ou qu'il y a plus simple, propose-lui d'autres idées.
Quel est ton niveau en informatique ?
Es-tu l'auteur des codes présents dans ton fichier (question déjà posée et à laquelle tu n'as toujours pas répondu) ?
A+
 

creal69360

XLDnaute Junior
Re : Vba copie de données selon différents critères sql

re,

mon niveau en vba est moyen, j'en ais fait un peu en début d'année ( boucles , if, userforms ... ) mais les recordset je ne connaisais pas avant la semaine derniere donc on m'a passé un tutoriel et je me suis debrouillé pour que cela fonctionne ( avec de l'aide ). Je pense en effet que lidée de copier le fichier BDD dans le 1er onglet de maj pourrait etre une idée intéressante, en ce qui concerne linformation, elle existe toujours car elle est présente dans le fichier BDD mais le problème c'est que je veux lui ajouter la date de suppression si elle n'est plus présente avec la maj. je comprends ce que mon maitre de stage me demande mais j'ai mal assimilé ce que j'ai mis en commentaire qui doit permettre d'ajouter la varible date sup.
 

david84

XLDnaute Barbatruc
Re : Vba copie de données selon différents critères sql

Re
je comprends ce que mon maitre de stage me demande mais j'ai mal assimilé ce que j'ai mis en commentaire qui doit permettre d'ajouter la varible date sup.
Donc, si elle existe, elle est notée dans ton onglet 1 comportant les données de ta BDD avant la mise à jour.
Dans ce cas quelle est la date de suppression que tu voudrais ajouter ? Elle correspond à quoi cette date ? A la date du jour de ta mise à jour ? A autre chose ?
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote