Connexion ADODB ... dur !

a-tchittat

XLDnaute Nouveau
Bonjour tout le monde,

J'ai vraiment besoin de vous !!! c'est vital ... je suis bloquée dans mon projet !

J'ai un classeur excel qui contient une feuille avec des données. J'aimerais faire des requête SQL à partir de ces données sur d'autre feuille de ce même classeur.
J'essaie de faire un simple "SELECT * FROM nomDeMaFeuille" et je n'ai pas un report exact de mes données !!!
==> notamment les données de ma première colonne qui sont des dates/heure sous le format "jj/dd/aaaa hh:mm" et au moment de l'exécution de ma requête SQL, certaines données ne sont pas reportées et d'autre sont dans un autre format ... et je ne comprends pas pourquoi ...
Je vous joins mon fichier ... si vous pouviez m'aider ... ce serait formidable !!!
 

Pièces jointes

  • RC_Extractionv2.xls
    30.5 KB · Affichages: 88
  • RC_Extractionv2.xls
    30.5 KB · Affichages: 86
  • RC_Extractionv2.xls
    30.5 KB · Affichages: 91
G

Guest

Guest
Re : Connexion ADODB ... dur !

Bonjour,

chez moi cela semble fonctionner parfaitement.

1 - Toutefois tu peux forcer le format à retourner par la requête sql suivant l'exemple ci-dessous:

"SELECT FORMAT(Ouvert_le,'dd/mm/yyyy hh:mm') AS OUVERTURE FROM [" & nomFeuille & "$];"

Je n'ai mis que le premier champ et te laisse faire le reste.

2- Changer

Code:
With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=""Excel 8.0;HDR=[U][B]No[/B][/U];"";"
        .Open
    End With
par
Code:
   With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=""Excel 8.0;HDR=[B][B][U]Yes[/U][/B][/B];"";"
        .Open
    End With
HDR=HeaDer

Afin de pouvoir traiter les nom de champs.(Entête de colonne)


bon courage.
 

a-tchittat

XLDnaute Nouveau
Re : Connexion ADODB ... dur !

Super, merci pour vos réponses ! Je vais tester, mais avant ... je voulais être sûre de la syntaxe au niveau SQL :
Hasco, tu m'as donné l'exemple suivant : "SELECT FORMAT(Ouvert_le,'dd/mm/yyyy hh:mm') AS OUVERTURE FROM [" & nomFeuille & "$];"
Ma question est : quelle est la syntaxe si on définit plusieurs colonne à la suite ?
Est-ce que c'est :
"SELECT FORMAT(Ouvert_le,'dd/mm/yyyy hh:mm') AS OUVERTURE,
FORMAT(Clos_Le,''dd/mm/yyyy hh:mm') AS CLOTURE
FROM " & nomFeuille & "$];" ???

Et dernière chose, est-ce que je suis obligée de redéfinir toutes mes colonnes (car j'en ai 23) ou puis-je redéfinir que certaines colonne et au moment de recopiage des données, il me recopie bien les colonnes intermédiaires ?

En tout cas merci, vais tester de suite !!!
 

a-tchittat

XLDnaute Nouveau
Re : Connexion ADODB ... dur !

Oui j'ai testé et ça maaaaaaaaarche !!!

Merci Hasco ... par contre, je pensait que en redéfinissant le champ avec "AS", le titre apparaîtrait en première ligne, mais ce n'est pas le cas ... comment faire pour apparaître les titres ? et après promis, j'arrête !!!

Merci encore !
 
G

Guest

Guest
Re : Connexion ADODB ... dur !

Avec les 3 lignes ci-dessous, que tu avais commentées dans la procédures:

For i = 0 To Rst.Fields.Count - 1
sheets("Feuil2").Cells(1, i + 1) = Rst.Fields(i).Name
Next i

A plus
 

a-tchittat

XLDnaute Nouveau
Re : Connexion ADODB ... dur !

Salut Hasco !!!

tout marche ... j'ai testé hier ... j'ai du coup voulu essayé une autre requête SQL pour sélectionner tous les "types" distinct et la requête me renvoie tous les types mais avec un champ vide ... et pourtant, dans mes données, je n'ai pas de champs vides ... du coup, ça fausse mes résultats !!!

Je joins mon fichier où il y a mes données et mes requêtes ... je n'arrive pas à comprendre ...

C'est ma dernière question !! promis ... enfin pour la semaine !!! ;o)

Merci encore et bonne journée !
 

Pièces jointes

  • RC_Extractionv2.xls
    48.5 KB · Affichages: 98
  • RC_Extractionv2.xls
    48.5 KB · Affichages: 87
  • RC_Extractionv2.xls
    48.5 KB · Affichages: 101
G

Guest

Guest
Re : Connexion ADODB ... dur !

Bonjour XlAdotien,

Il n'y a pas de champ 'Type' dans ta feuil1 mais plutôt un champ 'Categorie'.

Cette requête fonctionne:

Code:
    texte_SQL = "SELECT Distinct Categorie FROM [" & nomFeuille & "$];"

Deux petite choses:

Il vaut mieux éviter les mots comme 'Type' en VBA car c'est un des mots réservé du language, même si en l'occurence il s'agit d'une requête SQL. C'est source d'erreur et de confusion eventuelle.

De plus il est préférable d'ajouter un point-virgule final aux requêtes, même si ce n'est pas indispensable. Plus propre;)
 

a-tchittat

XLDnaute Nouveau
Re : Connexion ADODB ... dur !

Oui pardon, j'ai du supprimer la colonne "Type" car mon fichier était trop gros ... mais si tu fais la requête "SELECT Distinct(Categorie) FROM [" & nomFeuille & "$];", normalement, la requête devrait renvoyer :
Colonne A
1
2 Réseaux
3 Windows/Linux

Et elle me renvoie :
Colonne A
1
2
3 Réseaux
4 Windows/Linux

Pourquoi ai-je un champ vide en "A2" ? ;o(
 
G

Guest

Guest
Re : Connexion ADODB ... dur !

Ok j'ai compris le problème.

ADO test les colonnes demandées et s'il rencontre deux lignes vides il considère que c'est la fin de la table mais il renvoie la dernière tout de même, alors pour éviter cela, deux solutions:

1 - faire référence à une plage de cellule dans la requête (A1:A2)

2 - employer une condition:

Code:
texte_SQL = "SELECT Distinct(Categorie) FROM [" & nomFeuille & "$] WHERE Categorie <>'';"

voili, voilà;)
 

Discussions similaires

Réponses
11
Affichages
1 K

Statistiques des forums

Discussions
312 203
Messages
2 086 182
Membres
103 152
dernier inscrit
Karibu