A voir également:
- VBA : pbm import champ access (avec formule)
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Récupérer valeur cellule vba ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
7 réponses
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 janv. 2012 à 12:12
31 janv. 2012 à 12:12
Bonjour,
oCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin\P_" &
chemin\P_: ne doit pas convenir, c'est du texte pas une variable qui indique un chemin
A voir
Bonne suite
oCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin\P_" &
chemin\P_: ne doit pas convenir, c'est du texte pas une variable qui indique un chemin
A voir
Bonne suite
Merci pour ta réponse, en fait j'ai remplacé le vrai chemin "C:\ etc." par le mot chemin uniquement ici, histoire de le garder confidentiel...:p Desolée pour la confusion. C'est la seule manip de ce genre que j'ai faite.
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 janv. 2012 à 13:49
31 janv. 2012 à 13:49
Re,
Merci de nous le preciser. Pourquoi vous avez :
nom_tab = nom_tab_access & indic
J'ai teste la ligne ou vous avez l'erreur en remplacent nom_tab par une table d'une de mes bases, je n'ai pas d'erreur.
A+
Merci de nous le preciser. Pourquoi vous avez :
nom_tab = nom_tab_access & indic
J'ai teste la ligne ou vous avez l'erreur en remplacent nom_tab par une table d'une de mes bases, je n'ai pas d'erreur.
A+
Oui, cette macro marche très bien "en général" avec les tables Access. Là où ça ne fonctionne plus c'est pour importer une requête Access qui fait appel à une fonction (fMediane en l'occurence) créée par moi-même dans un module...
(nom_tab = nom_tab_access & indic est là seulement parce que je fais en réalité appel à la sub Import_tab_access dans une autre sub, avec des boucles sur plusieurs macros variables.)
(nom_tab = nom_tab_access & indic est là seulement parce que je fais en réalité appel à la sub Import_tab_access dans une autre sub, avec des boucles sur plusieurs macros variables.)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 janv. 2012 à 14:14
31 janv. 2012 à 14:14
Re,
Je viens de retester la ligne d'erreur en mettant un nom de table bidon par rapport a ma base de donnees, la j'ai votre erreur.
Il faudrait mettre le pointeur de la souris sur la ligne d'erreur quand elle se produit pour voir le nom de la table que vous avez ou mettez le pointeur sur nom_table au debut de la subroutine.
A+
Je viens de retester la ligne d'erreur en mettant un nom de table bidon par rapport a ma base de donnees, la j'ai votre erreur.
Il faudrait mettre le pointeur de la souris sur la ligne d'erreur quand elle se produit pour voir le nom de la table que vous avez ou mettez le pointeur sur nom_table au debut de la subroutine.
A+
Re bonjour et merci pour toute l'attention que vous portez à ma question. Mon souci est que ma requête existe bien...
Je pense que je ne suis pas assez claire. Pour l'être, je me permets de remettre mon code, mais débarrassé de tous les paramètres qui pourraient porter à confusion.
Quand je lance la fonction test() avec une requête Access lambda, cela fonctionne. Mais dans la requête R_stat_descriprives_dec, il y a le calcul de la médiane des valeurs d'une table, calcul qui se fait par l'appel de la fonction fMediane(), qui se trouve dans Module1 d'Access. Et c'est cette fonction que vb ne trouve pas... :p
L'erreur se produit à la ligne
" oRs.Open "select * from R_stat_descriptives_dec ;", oCnn, adOpenKeyset, adLockReadOnly, adCmdText"
La table R_stat_descriptives_dec existe bien dans P_test_en_cours.mdb...
Merci d'avance pour toute idée!
Je pense que je ne suis pas assez claire. Pour l'être, je me permets de remettre mon code, mais débarrassé de tous les paramètres qui pourraient porter à confusion.
Sub test() Dim oRs As ADODB.Recordset Dim oCnn As ADODB.Connection Set oCnn = New ADODB.Connection oCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\toto\Bureau\P_test_en_cours.mdb;" oCnn.Open Set oRs = New ADODB.Recordset oRs.Open "select * from R_stat_descriptives_dec ;", oCnn, adOpenKeyset, adLockReadOnly, adCmdText For i = 0 To oRs.Fields.Count - 1 Workbooks("Sorties_resultats").Sheets("toto").Cells(1, i + 2).Value = oRs.Fields(i).Name Next Workbooks("Sorties_resultats").Sheets("toto").Cells(2, 2).CopyFromRecordset oRs oRs.Close Set oRs = Nothing oCnn.Close Set oCnn = Nothing End Sub
Quand je lance la fonction test() avec une requête Access lambda, cela fonctionne. Mais dans la requête R_stat_descriprives_dec, il y a le calcul de la médiane des valeurs d'une table, calcul qui se fait par l'appel de la fonction fMediane(), qui se trouve dans Module1 d'Access. Et c'est cette fonction que vb ne trouve pas... :p
L'erreur se produit à la ligne
" oRs.Open "select * from R_stat_descriptives_dec ;", oCnn, adOpenKeyset, adLockReadOnly, adCmdText"
La table R_stat_descriptives_dec existe bien dans P_test_en_cours.mdb...
Merci d'avance pour toute idée!
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 janv. 2012 à 15:40
31 janv. 2012 à 15:40
Re,
Mon souci est que ma requête existe bien...
La table R_stat_descriptives_dec existe bien dans P_test_en_cours.mdb...
Juste une info pour moi : R_stat_descriptives_dec c'est une table ou une requete??????
Mon souci est que ma requête existe bien...
La table R_stat_descriptives_dec existe bien dans P_test_en_cours.mdb...
Juste une info pour moi : R_stat_descriptives_dec c'est une table ou une requete??????
Euh... les deux? ;) En fait c'est une requête sur une table X, mais j'ai gardé plusieurs colonnes, ce qui en fait une table, à moins que je n'utilise pas le bon vocabulaire.
En gros, j'ai une table X de base, sur laquelle je fais des statistiques descriptives, c'est à dire que je récupère la moyenne, le min, le max (toutes des fonctions prédéfinies dans Access) d'une variable dec, et enfin la médiane. Toutes ces infos sont dans R_stat_descriptives_dec. Je réponds à ta question?
En gros, j'ai une table X de base, sur laquelle je fais des statistiques descriptives, c'est à dire que je récupère la moyenne, le min, le max (toutes des fonctions prédéfinies dans Access) d'une variable dec, et enfin la médiane. Toutes ces infos sont dans R_stat_descriptives_dec. Je réponds à ta question?
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 janv. 2012 à 15:53
31 janv. 2012 à 15:53
Re,
Oui, vous faites une requete sur une le resultat d'une requete.
Oui, vous faites une requete sur une le resultat d'une requete.
Coucou,
Merci pour tous ceux qui ont lu mon sujet. J'ai trouvé une façon détournée de régler mon problème:) (même si je pense qu'il doit exister quelque part une option à cocher pour qu'Excel et vba se parlent mieux...)
Pour info donc, j'ai créé ma table R_stat_descriptives_dec qui contient toutes les stat descriptives dont j'avais besoin mais pas la médiane.
J'ai mis la fonction fMediane dans vba Excel, et je l'ai adaptée pour que la médiane se calcule sur la base Access à partir d'Excel. Je fais donc une requête sur une table Access à partir d'Excel en fait. Et j'importe le résultat de la requête dans une cellule de ma feuille Excel de résultats.
Merci à tous, à bientôt! :)
Merci pour tous ceux qui ont lu mon sujet. J'ai trouvé une façon détournée de régler mon problème:) (même si je pense qu'il doit exister quelque part une option à cocher pour qu'Excel et vba se parlent mieux...)
Pour info donc, j'ai créé ma table R_stat_descriptives_dec qui contient toutes les stat descriptives dont j'avais besoin mais pas la médiane.
J'ai mis la fonction fMediane dans vba Excel, et je l'ai adaptée pour que la médiane se calcule sur la base Access à partir d'Excel. Je fais donc une requête sur une table Access à partir d'Excel en fait. Et j'importe le résultat de la requête dans une cellule de ma feuille Excel de résultats.
Merci à tous, à bientôt! :)
Public Function fMediane(strTable As String, Strfield As String) As Variant Dim oDBS As DAO.Database Dim oRST As DAO.Recordset Dim blnEven As Boolean Dim vntMedian As Variant Set oDBS = CurrentDb() Set oRST = oDBS.OpenRecordset("SELECT * FROM " & strTable & " ORDER BY " & Strfield) If oRST.EOF = False Then oRST.MoveLast 'Is there an even number of records in the recordset? blnEven = (oRST.RecordCount Mod 2 = 0) 'Rounds down if there is an even number of records... oRST.PercentPosition = 50 vntMedian = oRST.Fields(Strfield) If blnEven Then oRST.MoveNext '...so take the average of the this and the next value up vntMedian = (vntMedian + oRST.Fields(Strfield)) / 2 End If End If fMediane = vntMedian oRST.Close Set oRST = Nothing Set oDBS = Nothing End Function