VB et ACCESS je patauge

FREDASTER

XLDnaute Nouveau
Bonjour à toutes et tous,

J'ai dernièrement poster pour savoir si excel pouvait charger des données d'une base ACCESS.

Il m'a été répondu que oui avec un renvoi sur ce que michelxld avait fait comme tuto pour l'accès à une base de données.

Mais malheureusement mes piètres connaissances en VB ne me permettent pas de réaliser ce que je veux.

Je me permet donc de joindre un fichier avec mon projet et une partie de ma base simplifiée.

Si une âme charitable veux y jeter un coup d'oeil, cela me dépannerait bien.

Merci par avance. [file name=ESSAI_20051212191524.zip size=13383]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ESSAI_20051212191524.zip[/file]
 

Pièces jointes

  • ESSAI_20051212191524.zip
    13.1 KB · Affichages: 34

FREDASTER

XLDnaute Nouveau
Je m'en doutais,

mais alors est-il possible de réaliser la même chose mais avec excel alors comme sur la feuille jointe au post ?

Merci à toutes et tous.

Ah oui le mot de passe de la base de données est : TOTO [file name=bd.zip size=15333]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/bd.zip[/file]
 

Pièces jointes

  • bd.zip
    41.9 KB · Affichages: 41
  • bd.zip
    41.9 KB · Affichages: 40
  • bd.zip
    41.9 KB · Affichages: 45

anuky

XLDnaute Occasionnel
Bonjour Fredaster, salim, le forum,

va voir su ce poste :


Ce lien n'existe plus


il ya deux techniques de présentées l'impot du résultats d'une requête ACCESS dans Excel. C'est très simple a faire depuis EXcel, mais ça ne marche pas avec toutes les version d'Excel et il faut avoir fait la reqête au préalable dans Access.

L'autre solution est l'expot du résultat d'une requête Access depuis Access vers Excel. Par contre là il faut toujours faire la requête, mais en plus ça nécessite du code a ajouter dans Access.

Si tu as besoin d'explications ou d'aide, demande dans ce fil.

Bon courrage et a bientôt.

Guillaume
 

MichelXld

XLDnaute Barbatruc
bonjour Fredaster , Salim et Anuky

j'espere que cette adaptation pourra t'aider

remarque
attention aux types de données que tu definis dans tes tables Access :
dans certaines tables le champ 'IDFACTURE' etait de type numerique et dans une autre table de type texte
de meme pour une raison de bon sens j'ai redéfinis le 'numero de devis' en type numerique au lien de texte


bonne journée
MichelXld [file name=import_conditionnel_base_access.zip size=25345]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/import_conditionnel_base_access.zip[/file]

Message édité par: michelxld, à: 13/12/2005 16:41
 

Pièces jointes

  • import_conditionnel_base_access.zip
    24.8 KB · Affichages: 122

FREDASTER

XLDnaute Nouveau
Bonjour à toutes et tous,


OUUUUUUUUUIIIIIIIIIII merciiiiiiiiiiiiiiii Michel.

Désolé pour cet enthousiasme mais là je suis aux anges.

Je ne croyais pas cela possible. Je reste persuadé que cete exemple va servir à d'autres personnes débutantes comme moi. Car le code rest compréhensible.

Michel tu es un dieu.

Euhhhh :whistle: quand à faire si Dieu pouvait une dernière foi se pencher sur mon cas pour paufiner la chose :

- Serait-il possible de faire mettre dans la cellule du mode de paiement : CB quand c'est 2 et CHQ quand c'est 1 ??

- Et enfin je pourrai passer un super Noël sans me retourner l'esprit :
J'ai besoin de faire cette recherche sur 10 lignes. là il en reste 9 donc à faire.
Le principe étant que si j'entre le devis n° 6, il me mette en 1ère ligne le 6, puis le 7, le 8, le 9 .... jusqu'au 15. avec toujours les données sur les factures et le reste se rapportant au devis.
Je pense que la modification à apporter est au niveau du
Range('A5:F5').ClearContents et du Range('A5') = numDevis
For i = 0 To rsT.Fields.Count - 1
Cells(5, i + 2) = rsT.Fields(i).Value
Next i
mais suis pas très sur encore.

Voilà ma dernière exigeance pour ce travail Mr. PERE MICHEL (ehhhh oui depuis ce matin le père Noël ne s'appelle plus père Noël mais père Michel, ah au fait pour la statue que je vais ériger en ton honneur dans mon salon tu l'as veux en quoi comme matière !!!! ;)
 

FREDASTER

XLDnaute Nouveau
Michel je viens de tenter de modifier le code pour les raisons que j'ai donné le post plus haut.

J'ai réussi à faire que cela se reporduit sur 10 lignes mais le hic c'est que cela me met toujours le résultat du devis n°6 si j'entre celui ci en B2 et non les renseignements sur les autres devis ??

Je te joins le fichier avec mes modifications.

Merci encore.
 

anuky

XLDnaute Occasionnel
Rebonjour tout le monde,

Pour ton problème de remplacement de 1 par CHQ et 2 par CB, a ta place je le ferais directment dans Access et j'ajouterai une liste déroulante contenant CHQ et CB pour simplifier la saisie.

pour ce faire, tu ouvre la table 2 en mode création, tu séléctionne ton champ MODE PAIEMENT et tu va dans l'onglet Liste de choix.
Dans afficher le contrôle, tu séléctionne : Zone de liste déroulante
Dans Origine Source, tu séléctionne : Liste valeurs
Et dans Contenu tu tappe 'CHQ';'CB'

Si tu as beaucoup de mode de paiement (ça m'étonnerai), tu peux passer par une table de liste a laquel tu te réfère.

Si ta base contien déjà beaucoup de donnée tu fait un recherché/remplacer sur ta colonne MODE PAIEMENT ou tu remplace 1 par CHQ puis 2 par CB


A bientôt

Guillaume
 

FREDASTER

XLDnaute Nouveau
Merci Anuky pour l'idée pour le CB - CHQ mais je ne peux pas modifier la base de données qui contient plus de 82 tables et qui est utilisée par d'autres programmes qui alors deviendraient obsolètes.

Par contre quelqu'un saurait-il (MichelXld j'en suis sur, mais bon un peu aux autres aussi ;) sauf si pas de réponse des autres (humour)) comment on spécifie le chemin de recherche d'une sous feuille de données car dans ma base de données prise en exemple je l'ai méchamment apurée pour l'exemple et je viens de m'apercevoir que les données que je cherche sont souvent dans des sous feuilles de données.

Michel me donne l'exemple que pour le chemin à trouver dans une table c'est : rSQL = 'SELECT Table2.[N° FACTURE],...... etc mais comment fait-on pour lui donner le chemin lorsque dans cette table il y a des sous feuilles de données ??? et que les renseignements nécessaires sont dans les sous feuilles de données.

Au fait MichelXLD, j'avance tout doucement du fait qu'il faut que je comprenne le code que tu m'as mis mais aussi à grand pas vu les progrès que je fais grace à toi. 1000 mercis.
(Ah oui je n'ai toujours pas résolu le problème si je veux faire la recherche et l'affichage pour 10 devis comme dans mon dernier post avec exemple. Mais tu as une vie je suppose et peu e temps libre avec des novices comme moi !!!)
 

FREDASTER

XLDnaute Nouveau
Bonsoir à toutes et à tous,

Voilà j'ai modifier ma Base de données afin d'être le plus approchant de ma base réelle.

On y trouve les sous feuilles de données dont je parlais avec en plus les renvois vers des N° de devis et Factures qui ne correspondent pas forcément comme dans le 1er exemple que j'avais reproduit un peu trop simple par rapport à la base réelle.

De la sorte N° de devis et N° de facture ne correspondent pas.

Merci encore pour toute l'aide que vous m'apportez. Aujourd'hui j'aurai fais de grand progrès mais là on m'a parlé de jointure entre les tables et cela je ne sais pas le dire en code. [file name=import_conditionnel_base_access2.zip size=28181]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/import_conditionnel_base_access2.zip[/file]
 

Pièces jointes

  • import_conditionnel_base_access2.zip
    27.5 KB · Affichages: 37

MichelXld

XLDnaute Barbatruc
bonjour

je n'ai pas pris en compte le champ 'DATE PAIEMENT dans la Table3 car il n'y a aucun lien possible entre cette table et les 2 autres ...???...
avant de te lancer plus avant dans les requetes , tu devrais approfondir les liens qui t'ont été proposés hier sur un autre forum ...;o) ...nottament les methodes de construction d'une base : sinon ensuite tu seras obligé de faire des usines à gaz pour extraire tes données


j'ai pris l'hypothese que le champ ID dans la Table1 correspond à l'IDREGISTRE dans la Table2
tu inseres cette macro dans le dernier classeur que tu as placé sur le forum


Code:
Sub ImportTableAccess_V03()
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim Fichier As String, rSQL As String
Dim numDevis As Long

Range('A5:F14').ClearContents
If Not IsNumeric(Range('B2')) Then Exit Sub

Fichier = ThisWorkbook.Path & '\\bd.mdb'
numDevis = Range('B2')

Set Conn = New ADODB.Connection
With Conn
.Provider = 'Microsoft.Jet.OLEDB.4.0'
.Mode = adModeRead
.Properties('Jet OLEDB:Database Password') = 'TOTO'
.Open Fichier
End With

rSQL = 'SELECT Table2.[N° FACTURE],Table2.[DATELIVRAISON],Table2.[DATEFACTURE],' & _
'Table2.[MODE PAIEMENT (1=CHQ, 2=CB)]' & _
' FROM Table1 , Table2' & _
' WHERE Table1.ID=Table2.IDREGISTRE AND Table1.[N°DEVIS]='

Set rsT = New ADODB.Recordset
 
With rsT
.ActiveConnection = Conn
.Open rSQL & numDevis, , adOpenStatic, adLockOptimistic, adCmdText
End With

If rsT.EOF Then
MsgBox 'Le numero de facture ' & numDevis & ' n'a pas été trouvée'
rsT.Close
Conn.Close
Exit Sub
End If
    
Range('A5') = numDevis
Cells(5, 2) = rsT.Fields(0).Value
Cells(5, 3) = rsT.Fields(1).Value
Cells(5, 4) = rsT.Fields(2).Value
Cells(5, 6) = rsT.Fields(3).Value

rsT.Close
Conn.Close
End Sub


bonne journée
MichelXld

Message édité par: michelxld, à: 14/12/2005 09:43
 

Statistiques des forums

Discussions
312 047
Messages
2 084 862
Membres
102 688
dernier inscrit
Biquet78