XL 2010 Connexion d'excel à une base de données SQL importantes

schoum5

XLDnaute Nouveau
Bonjour à vous tous!

Voilà, je me permets de revenir vers vous aujourd'hui, car j'aurai besoin d'une petite aide concernant la "connexion" d'excel avec une grosse base de données SQL contenant plusieurs tables.

Je vais essayer d'être le plus clair possible, mais si vous ne comprenez pas ce que je veux faire ou ce que je dis, surtout n'hésitez pas à me le dire ou à me poser des questions.

Actuellement, j'utilise un progiciel dont la base de données est en SQL. J'alimente donc ma base de données via ce progiciel.
Afin de me permettre de créer des tableaux de bord ou autres tableaux d'analyse sur excel (allant chercher les données sur notre base de données, après avoir lié excel à ma base de données) je voulais savoir s'il était possible, sur un même classeur excel, d’associer plusieurs tables afin d'avoir toutes les informations que je veux sur un même et unique classeur excel.

(exemple: je veux que sur mon classeur il y ait des infos clients (=correspond à la table "client" dans ma base données), ainsi que toutes les factures associées à ce client (=correspond à la table "facturation" dans ma base de données). Ce sont donc deux tables bien distincts dans ma base de données)

Tous les tutos et explications que j'ai pu voir se faisaient à partir d'une toute petite base de données comportant qu'une seule table, donc avant de faire quoi que ce soit, je voulais savoir si cela était possible.

J'espère avoir été clair.
En tous les cas, je vous remercie d'avance pour toutes les réponses que vous pourrez m'apporter à ce sujet.
Bien à vous,
Schoum5
 

schoum5

XLDnaute Nouveau
Bonjour MJ13,

Je te remercie pour ce rapide retour!
Le seul soucis, c'est que pour le moment je ne peux rien faire, car cela demande un développement un peu coûteux, donc si cela n'est pas possible, je ne demanderai pas à faire ce développement. C'est pour ça que je suis un peu embêté...
 

schoum5

XLDnaute Nouveau
Merci encore pour vos réponses. :) (j'adore ce site)

Si je comprends bien, si j'ai pas le niveau en VBA cela risque d'être compliqué pour moi c'est ça?

Autre chose, il me semble avoir vu dans le passé, qu'il y avait la possibilité de passer via une interface (sur excel) me permettant de lier l'information que je veux faire ressortir sur excel avec la table où se trouve l'information dans ma base de données, je dis une bêtise ou pas?
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Autre chose, il me semble avoir vu dans le passé, qu'il y avait la possibilité de passer via une interface (sur excel)
Tu veux parler de l'assistant MSquery, peut-être ?
Microsoft%20Query_2012-10-31_12-51-31.png
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour à tous

A partir du moment où le connecteur ODBC correspondant à ta base (Oracle, SqlServeur, PostgreSQL...) est installé sur ton PC et que tu as les droits d'accès à la base, Excel peut se connecter à une table ou une vue.
C'est mieux si la vue qui croise les données de plusieurs tables est faite dans la base.
Sinon il faut passer par un requêteur, Ms query, pas très convivial mais intégré à Excel, PowerQuery (add on), à partir de la version 2010, PowerPivot éventuellement si le but est l'analyse par TCD également depuis la version 2010 (addon sur 2010, intégré ensuite mais pas utilisable sur toutes les versions)
On peut aussi, quand on l'a, utiliser Access comme requêteur...
 

schoum5

XLDnaute Nouveau
Bonsoir à tous.
Merci encore pour vos retours.

JM, c'est exactement ça :). C'est faisable ou compliqué à mettre en place? Adaptable à tout? Est-ce que MSQuery reconnait toutes les tables dans la bases de données ou il faut paramétrer les choses? Si mes tables de sont pas liées, est-ce que grace à MSQuery, je peux quand même "chercher" des infos depuis différentes tables (non liées)? (désolé pour toutes ces questions supplémentaires mais je suis vraiment intéressé :) )

Chris, sur ma base, les tables sont plus ou moins déjà liées entre elles, je peux toujours faire une demande auprès de notre développeur pour lier d'autres tables si j'en ai besoin. Mais ce que je comprends, c'est que si c'est pas déjà lié dans ma base de données et si j'ai pas t'interface type MSQuery, cela devient donc très compliqué et il faut passer par du code VBA? (désolé si j'ai rien compris...).
Egalement, lorsque tu dis : "A partir du moment où le connecteur ODBC correspondant à ta base (Oracle, SqlServeur, PostgreSQL...) est installé sur ton PC et que tu as les droits d'accès à la base, Excel peut se connecter à une table ou une vue.
C'est mieux si la vue qui croise les données de plusieurs tables est faite dans la base. "
cela signifie que je ne peux avoir qu'une seule table à la fois et que je ne peux pas forcément les croiser si elles ne sont pas liées?

Merci encore, dans l'attente de lire vos réponses :)
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Bonsoir à tous.
Merci encore pour vos retours.
JM, c'est exactement ça :). C'est faisable ou compliqué à mettre en place? Adaptable à tout? Est-ce que MSQuery reconnait toutes les tables dans la bases de données ou il faut paramétrer les choses? Si mes tables de sont pas liées, est-ce que grace à MSQuery, je peux quand même "chercher" des infos depuis différentes tables (non liées)? (désolé pour toutes ces questions supplémentaires mais je suis vraiment intéressé :) )
Un moteur de recherche, un mot-clé : MSQUERY, à toi d'écrire l'histoire, camarade shoum5 :rolleyes:
 

chris

XLDnaute Barbatruc
Bonjour à tous
...
Chris, sur ma base, les tables sont plus ou moins déjà liées entre elles, je peux toujours faire une demande auprès de notre développeur pour lier d'autres tables si j'en ai besoin. Mais ce que je comprends, c'est que si c'est pas déjà lié dans ma base de données et si j'ai pas t'interface type MSQuery, cela devient donc très compliqué et il faut passer par du code VBA? (désolé si j'ai rien compris...).
Egalement, lorsque tu dis : "A partir du moment où le connecteur ODBC correspondant à ta base (Oracle, SqlServeur, PostgreSQL...) est installé sur ton PC et que tu as les droits d'accès à la base, Excel peut se connecter à une table ou une vue.
C'est mieux si la vue qui croise les données de plusieurs tables est faite dans la base. "
cela signifie que je ne peux avoir qu'une seule table à la fois et que je ne peux pas forcément les croiser si elles ne sont pas liées?

Merci encore, dans l'attente de lire vos réponses :)

Si votre développeur peut créer une vue (ou plusieurs si besoin) qui extrait les données dont tu as besoin des diverses tables tu peux récupérer les données depuis Excel sans avoir besoin d'un outil de type requêteur puisque la requête est déjà faite (une vue c'est une requête pré-enregistrée dans la base).
Chaque fois que tu actualises les données dans Excel, la vue te restitue les données à jour. Simple pour toi et efficace.

Tu as forcément Msquery dans Excel mais ce n'est pas un outil hyper convivial et il a pas mal de limites (je l'ai encore constaté il y a peu sur des données d'heures).
 

schoum5

XLDnaute Nouveau
Super!
Merci Chris pour ces infos supplémentaires.
Je vais m'attaquer à tout ça aujourd'hui et faire la demande auprès de mon développeur pour voir s'il peut me créer des vues par rapport à mes besoins, car l'idée est de créer plusieurs classeur excel. J'espère juste qu'il va comprendre ce que je lui demande...
 

chris

XLDnaute Barbatruc
Bonjour

Le plus simple c'est de lister tous les champs dont tu as besoin (infos du client, du produit, de la vente...) avec leur table source si tu la connais.

Ensuite voir si tous ces champs doivent être dans une même liste (donc vue) ou dans plusieurs.

Si tu sais précisément ce dont tu as besoin, le développeur ne passera pas beaucoup de temps à créer les vues...
 

schoum5

XLDnaute Nouveau
Bonjour à tous!!!

Ça y'est j'ai réussi à connecter Excel avec ma base de données!! Je passe par MS QUERY et ODBC.
Après avoir bien fait joujou pendant plusieurs jours, je rencontre un petit soucis.

Je m'explique.
Une fois que j'ai mis en place mes requêtes, les infos dont j'ai besoin et que j'ai passé tout ça sur excel, je m’aperçois que j'ai des lignes qui se répètent.

Exemple : En colonne A j'ai les id_user (info qui se répètent), en colonne B j'ai les numéros de téléphone (fixe + mobile = ici j'ai donc déjà minimum 2 lignes par id_user) et en colonne D (oui en colonne C j'ai une autre info qui n'a pas besoin d'être ajustée) j'ai les commentaires (sachant qu'à chaque nouveau commentaire, j'ai une nouvelle ligne qui apparaît).

Ce que j'aimerai faire, c'est ne plus avoir de doublon en colonne A, mais que toutes les infos de la colonne B (c'est à dire les 2 numéros de tel) soient dans une même cellule et la même chose pour la colonne C en fonction de l'id_user (colonne A).

Est-ce que c'est possible de gérer cela directement dans MS QUERY via une formule ou une manip?

Si ce n'est pas possible, j'ai une macro qui est capable de gérer cela, le seul HIC c'est que ça le fait que pour deux colonnes, or dans mon cas présent j'en ai 3.
Voici la macro:

Sub toto()
Dim l&, s$, v$(), Nof As New Scripting.Dictionary
With Worksheets("BASE").[A1]
Do
l = l + 1
If IsEmpty(.Offset(l).Value) Then Exit Do
s = Nof(.Offset(l).Text)
If s <> Empty Then s = s & vbLf & String(12, ChrW(8213)) & vbLf
Nof(.Offset(l).Text) = s & .Offset(l, 1).Text
Loop
ReDim v(1 To Nof.Count + 1, 1)
v(1, 0) = .Value: v(1, 1) = .Offset(0, 1).Value
For l = 2 To UBound(v)
v(l, 0) = Nof.Keys(l - 2): v(l, 1) = Nof.Items(l - 2)
Next
End With
With Worksheets("RECAP").[A1]
Intersect(.CurrentRegion, Columns(.Column).Resize(, 2)).ClearContents
.Resize(UBound(v), 2).Value = v
End With
End Sub

Les différences, c'est que je ne veux pas que cela se fasse sur une autre feuille ("RECAP" dans la macro ci-dessus), mais directement sur ma feuille où j'ai importé toutes mes infos, et la seconde différence c'est que j'aimerai que cela puisse être applicable à plusieurs colonnes et non seulement deux.
A savoir, l'info qui se répète se trouvera quoi qu'il arrive en colonne A.

Malgré m'être relu maintes fois, je ne sais pas du tout si je suis assez clair, alors n'hésitez pas à me poser la moindre question.
Sinon, comme d'habitude, merci à tous ceux qui auront pris le temps de me lire et surtout à ceux qui pourront m'aider par la suite!!
A très vite j'espère!
 

Discussions similaires

Réponses
27
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
315 124
Messages
2 116 471
Membres
112 753
dernier inscrit
PUARAI29