IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Requete SQL Variable tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par manufer Voir le message
    Je ne comprend pas, la ligne ci-dessous fonctionne très bien habituellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Const base As String = "UID=xxxxx;PWD=xxxxxx;" & "Server=xxxxxx;Database=xxxxxxxx;"
    [...]
    Tiens, au passage, tu as bien Option Explicit au tout début de ton module?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Evite ce genre de code. C'est illisible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With CreateObject("Adodb.connection")
        .Open base
    *
    Sql = "SELECT CONCAT(ville, ' - ', 'departement',) AS clt FROM client, cnx"
    *
    With .Execute(Sql)
            If Not .EOF Then
                vartab = .get.Rows
                For Ligne = 0 To UBound(vartab)
    Travaille avec des objets déclarés, ce sera beaucoup plus simple et plus lisible. Tu pourras beaucoup mieux contrôler que tes objets sont conformes à tes attentes. Perso, je privilégie de loin la lisibilité du code à ces artifices d'écriture.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok alors fais ça!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With CreateObject("Adodb.connection")
         .Open base 

  4. #4
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    J'ai essayé mais ça ne marche pas que ce soit avec "base" ou "GenereCSTRING".

    En le modifiant à chaque fois.

    Le problème reste identique.

    Je ne parviens pas à l'identifier.

    Je suis d'accord, parti d'un problème c'est un autre qui apparait. Mais comme récupérer une requête sql dans une variable tableau passe
    forcément par l'ouverture de la base (dans mon cas, maintenant c'est là que ça bloque), alors que je n'avais aucun problème pour le faire avant. Je suis désolé.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par manufer Voir le message
    J'ai essayé mais ça ne marche pas que ce soit avec "base" ou "GenereCSTRING".[...]
    D'une façon générale, les programmeurs qui manipulent des connexions à des DB utilisent le nom ConnectionString pour définir leur chaine de connexion. Donner des noms parlants (et dans ce cas communément admis, utilisés et compris) aide évidemment à comprendre un code rien qu'en le lisant. Même si chacun utilise bien entendu les noms qu'il veut, et que utiliser base au lieur de ConnectionString ne change rien au fonctionnement du code.

    Cela dit, à ce stade de la discussion, si tu t'entêtes à ne donner que la ligne de code qui bugue sans nous donner un copier-coller de ce qui est réellement utilisé, nous ne pourrons pas t'aider...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Voilà tout le code avec toujours le message d'erreur au niveau de 'Open.base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Sub test()
    Dim vartab
    Dim Sql As String
    Dim base As String
     
    base = "UID=xxxxxx;PWD=xxxxxxx;" & "Server=xxxxxxx;Database=xxxxxxx;"""
     
     
    With CreateObject("Adodb.connection")
        .Open base                                      '  >> message d'erreur
        Sql = "SELECT CONCAT(ville, ' - ', numdepartement) AS art FROM client, cnx"
        With .Execute(Sql)
            If Not .EOF Then
                vartab = .GetRows
                For Lig = 0 To UBound(vartab)
                    For Col = 0 To UBound(vartab, 2)
                        Debug.Print vartab(Lig, Col)
                    Next
                Next
            End If
            .Close
        End With
    End With
    End Sub
    Le message d'erreur dit: [gestionnaire de pilote ODBC] source de données introuvable et nom de pilote non spécifié.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne comprends pas bien pour quoi tu concatènes pour créer ta constante... Pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const base As String = "UID=xxxxx;PWD=xxxxxx;Server=xxxxxx;Database=xxxxxxxx;"
    Pour le reste, si tu travaillais avec ton objet cnx plutôt qu'avec des variables volatiles dans des with... end with imbriqués, tu piloterais bien plus facilement ton appli et tu pourrais débuguer beaucoup plus facilement. (Mais bon, c'est comme pisser dans un violon... )

    Là, on en est à 20 messages pour un truc qui se résout en deux ou trois échanges max, simplement parce qu'à aucun moment on a un code lisible sous les yeux, et qu'au départ ta question était de passer un jeu d'enregistrement dans un tableau et que finalement, les erreurs que tu rencontres n'ont rien à voir avec ça
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il y a trop ou trop peu de " à la fin de ta chaîne... Car avec ceux que tu as, tu ouvres une chaîne à l'intérieur de ta chaine de connexion mais tu ne la referme pas

    Enlèves-en deux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    base = "UID=xxxxxx;PWD=xxxxxxx;" & "Server=xxxxxxx;Database=xxxxxxx;"
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. afficher requet sql dans tableau en java
    Par kabbi dans le forum NetBeans
    Réponses: 1
    Dernier message: 12/02/2010, 20h46
  2. [SQL-Server] Pb affichage requete sql dans tableau manque 1 ligne
    Par danny3107 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/12/2009, 15h58
  3. [MySQL] affichage resultat requete sql dans tableau
    Par fasyr dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/04/2009, 11h18
  4. [SQL] Requete SQL et tableau
    Par ThinKiT dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/11/2007, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo