Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 13h45   #1
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Par défaut Excel et le SQL

Bonjour à tous, pour un projet sous Excel, j'ai deux listes déroulantes qui vont s'alimenter dans une base de données, et lorsque je désire utiliser un ORDER BY pour trier par ordre alphabétique une des deux listes j'ai un message d'erreur me disant "Erreur de syntaxe (opérateur absent) dans l'expression "Numéro=9ORDERBY"

Donc si quelqu'un sait quelle erreur je fais, pourriez vous me montrer pourquoi ?
Voici le code pour vous donner une idée.
Code :
1
2
3
4
 
set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) & "ORDER BY" & Nom & DESC, dbReadOnly)
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h07   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 807
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 807
Points : 3 005
Points : 3 005
Bonjour,

Et en ajoutant un espace avant le order ?

Code :
1
2
3
4
 
set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) & " ORDER BY" & Nom & DESC, dbReadOnly)
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h19   #3
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
ça ne change rien, et ça commence à m'enquiquiner ce probleme ><
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 14h57   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 878
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 878
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Salut,
peux-tu nous montrer le code avec la modification effectuée stp ?

à noter que le DESC n'est pas intégré dans la chaine de caracteres.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h21   #5
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
ok je vous donne le code dans son entier avant modification
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
Private Sub cbPart_Change() 
    Dim db As DAO.Database
    Dim dbPath As String
    Dim rs As DAO.Recordset, Champ As String, Num As Integer, Num1 As Integer
    If CbPart.ListIndex = -1 Then Exit Sub
    Application.EnableEvents = False
    Set db = OpenDatabase(Chemin & NomBase, False, False, "MS Access;PWD=" & MotdePasse)
    Champ = "Numéro"
    Set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) , dbReadOnly)
 
    With rs
        If .NoMatch Then
            MsgBox ("Pas de correspondance")
            Set rs = Nothing
            db.Close
            Set db = Nothing
            Exit Sub
        Else
            Sheets("Devis DPE Neuf 2005").Range("D15").Value = .Fields("Adresse")
            Sheets("Devis DPE Neuf 2005").Range("D18").Value = .Fields("Téléphone")
            Sheets("Devis DPE Neuf 2005").Range("B3").Value = .Fields("Fax")
            Sheets("Devis DPE Neuf 2005").Range("D19").Value = .Fields("Email")
            Sheets("Devis DPE Neuf 2005").Range("D14").Value = .Fields("Prénom")
            Sheets("Devis DPE Neuf 2005").Range("D17").Value = .Fields("CP")
            Sheets("Devis DPE Neuf 2005").Range("G17").Value = .Fields("Ville")
            Sheets("Devis DPE Neuf 2005").Range("G18").Value = .Fields("GSM")
            .MoveNext
        End If
    End With
    Set rs = Nothing
    db.Close
    Set db = Nothing
    Application.EnableEvents = True
End Sub
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h48   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 878
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 878
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Très bien, maintenant il faut nous dire à quelle ligne tu as une erreur et quelle est-elle.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 15h52   #7
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Comme je l'ai indiqué plus haut, lorsque je veux trier les noms par ordre alphabétique, je crée dans la requete de select situé a ligne 11 je rajoute un ORDER BY, ce qui donne avant la modification
Code :
1
2
3
4
 
Set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) , dbReadOnly)
et apres la modification
Code :
1
2
3
4
 
set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) & " ORDER BY" & Nom & DESC, dbReadOnly)
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 16h03   #8
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 878
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 878
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
J'ai indiqué que le DESC n'était pas dans la chaine, et les espaces ont été aussi déjà évoqués

Code :
1
2
3
set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) & " ORDER BY " & Nom & " DESC", dbReadOnly)
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 17h13   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Désolé, le problème n'est pas que dans la syntaxe SQL. En fait tu ne dois pas tester cbPart dans la macro WorkBook_Open car cette valeur n'est pas renseignée. La syntaxe suivante fonctionne :

Code :
1
2
    Set rs = db.OpenRecordset("SELECT " & "Numéro, Nom, Prénom, Entreprise" & " FROM " & _
        NomTable & " ORDER BY " & "Nom" & " ASC", dbReadOnly)
Mes excuses aux spécialistes SQL. Je n'avais pas vu ce qui aurait dû me crever les yeux.
Pour colapsus : tu dois conserver ce "where" dans la macro "cbPart_Change". Tu dois conserver "*" pour avoir tous les champs ou énumérer les champs dont tu as besoin.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 15h50   #10
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
et c'est censé donner quoi comme code alors dans Cbpart_change ?
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 16h36   #11
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Ça sélectionne les champs "Numéro", "Nom", "Prénom", et "Entreprise", les enregistrements étant triés sur le champ "Nom".
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h02   #12
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Je pense trouver un élément de réponse, vu que dans la BDD il y a une numérotation automatique, et lorsqu'il affiche meme si je mets un order by nom, ou modifie l'ordre des numéros, c'est à dire mettre le numéro 3 au dessus du 2, il fait un order by automatique
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h05   #13
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Je ne vois pas ton problème; les enregistrements sont bien triés par nom.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h09   #14
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Pour particulier non, c'est juste une idée je te le confirme, à certains endroits tu verras que ce n'est pas trié

de meme pour les entreprises, elles apparaissent en fonction de la numérotation quoique je fasse pour les ordonner
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 18h40   #15
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Regarde le classeur joint. J'ai listé la BDD avec le code de Workbook_Open. Les résultats sont sur Feuil2. En colonne C, j'ai mis une formule pour m'assurer qu'il n'y a pas de déclassement sur le nom; il n'y en a pas. Les entreprises ne sont pas triées (pas de clause "order by").
Fichiers attachés
Type de fichier : rar testSQL.rar (44,9 Ko, 3 affichages)
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 18h54   #16
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Alors pourquoi cela ne fonctionne pas quand je veux le mettre dans une listbox ?
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 21h33   #17
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Si tu travailles toujours avec la base que tu m'as envoyée, donne-moi l'exemple de deux noms non triés.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 08h13   #18
Invité régulier
 
Homme Marc Bara
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Marc Bara
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 5
Points : 5
Eh bien tout à la fin de ma listbox je trouve
Wallez
Lazreg
Afchain
Predat
Marquand
Dupuy

Comme tu vois ils ne sont pas rangés dans l'ordre alphabétique lorsque la requete Sql se trouve dans Cbpart change
colapsus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 08h37   #19
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 807
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 807
Points : 3 005
Points : 3 005
Bonjour,

Citation:
Envoyé par colapsus Voir le message
Bonjour à tous, je vous présente mon probleme, je possede une liste déroulante se nommant CbPart, cette liste est liée a une base de données sous access et permet d'afficher tous les noms présents dans la base de données, jusque là pas de problemes, mais je voudrais dans la liste déroulante les trier par ordre alphabétique grace a un order by, voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

Private Sub cbPart_Change()
    Dim db As DAO.Database
    Dim dbPath As String
    Dim rs As DAO.Recordset, Champ As String, Num As Integer, Num1 As Integer
    If CbPart.ListIndex = -1 Then Exit Sub
    Application.EnableEvents = False
    Set db = OpenDatabase(Chemin & NomBase, False, False, "MS Access;PWD=" & MotdePasse)
    Champ = "Numéro"
    Set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " WHERE " & Champ & _
        " = " & CInt(CbPart.Value) & " ORDER BY " & Nom & " ASC", dbReadOnly)

    
    With rs
        If .NoMatch Then
            MsgBox ("Pas de correspondance")
            Set rs = Nothing
            db.Close
            Set db = Nothing
            Exit Sub
        Else
            Sheets("Devis DPE Neuf 2005").Range("D15").Value = .Fields("Adresse")
            Sheets("Devis DPE Neuf 2005").Range("D18").Value = .Fields("Téléphone")
            Sheets("Devis DPE Neuf 2005").Range("B3").Value = .Fields("Fax")
            Sheets("Devis DPE Neuf 2005").Range("D19").Value = .Fields("Email")
            Sheets("Devis DPE Neuf 2005").Range("D14").Value = .Fields("Prénom")
            Sheets("Devis DPE Neuf 2005").Range("D17").Value = .Fields("CP")
            Sheets("Devis DPE Neuf 2005").Range("G17").Value = .Fields("Ville")
            Sheets("Devis DPE Neuf 2005").Range("G18").Value = .Fields("GSM")
            .MoveNext
        End If
    End With
    Set rs = Nothing
    db].Close
    Set db = Nothing
    Application.EnableEvents = True
End Sub
Ainsi dans excel quand on clique sur un des noms dans une liste déroulante il est censé s'afficher dans certaines cellules des infos complémentaires. Dans le cas présent, la liste apparait toujours, je clique sur un nom, ses infos s'affiche, mais ce n'est toujours pas rangé dans l'ordre croissant. Donc en furetant, on me dit que comme Cbpart n'est pas déclaré, il faut enlever le WHERE, ce que je fais et ce qui donne

Code :
1
2
3
 
Set rs = db.OpenRecordset("SELECT * FROM " & _
        NomTable & " ORDER BY " & Nom & " ASC", dbReadOnly)
cette fois ci il m'affiche toujours ma liste de nom et toujours pas dans l'ordre alphabétique et quand je clique sur un nom, aucune info ne s'affiche dans les cellules correspondantes. Savez vous ce qui ne fonctionne pas ?
Elle sort d'où ta variable Nom ?
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 10h24   #20
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Effectivement, "Nom" n'est pas une variable, mais un champ de ta BDD; tu dois le mettre entre guillemets; regarde la syntaxe SQL que j'ai postée plus haut.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h16.


 
 
 
 
Partenaires

Hébergement Web