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 :

Souci récupération d'information (excel - access)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 19
    Par défaut Souci récupération d'information (excel - access)
    Bonjour,
    je cherche à récupérer des informations contenues dans une base access et afficher les informations récupérées dans les colonnes d'un tableau excel.
    Pour le moment je n'arrive même pas à enregistrer les informations dans une collection, j'obtiens une erreur du type "Argument non facultatif" que je ne comprends pas.

    Voici mon code pour le moment:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Public mycnx As ADODB.Connection
    Public myrs As ADODB.Recordset
    Dim save As Variant
    Dim ouChercher As String
    Dim valeur As Variant
    Dim ouChercherInterm As String
    Dim ValeurInterm As Variant
    Dim ouChercherInterm2 As String
    Dim ValeurInterm2 As Variant
    Dim tabelements() As Variant
    '---------------------------
     
    Private Sub BoutonAffichage_QuandClic()
    Set mycnx = New ADODB.Connection
        mycnx.Provider = "Microsoft.Jet.Oledb.4.0"
        'Définition de la chaîne de connexion
        mycnx.ConnectionString = "U:\bdSuiviDevis.mdb"
        'Ouverture de la base de données
    Dim i As Integer
    Dim strSql As String
    Dim critere As String
     
    critere = Cells(1, 2).Value
    Range(A7, AM900).Clear
    For i = 7 To 900
        strSql = "SELECT '" & quoiChercher & "' FROM '" & ouChercher & "' WHERE '" & critere & "' = " & save & ";"
        Debug.Print strSql
     
        'strSql = "SELECT '" & quoiChercher & "' FROM '" & ouChercher & "' WHERE '" & ouChercher& "'.'" & valeurInterm & "' = '"& ouChercherInterm& "'.'" & valeurInterm2 & ";"
        Set myrs = New ADODB.Recordset
        myrs.Open strSql, mycnx, adOpenDynamic, adLockReadOnly, adCmdText
     
        tabelements() = tabelements() + myrs()
     
    Next i
    End Sub
    le debug.print n'affiche rien, et l'erreur m'apparait dès que j'appuis sur mon bouton, sans explication de ce qu'il manque / ce qu'il faut changer

    Merci d'avance à ceux qui pourrait m'aider.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Il y a plusieurs pb dans ton code.
    • ouchercher est déclarée mais pas initialisée,
    • quoichercher n'est ni déclarée ni initialisée
    • la connexions n'est pas ouverte
    • un jeu d'enregistrement n'est pas un tableau
    • ...


    L'exécution s'arrête sur quelle ligne?
    En tête du module, écris et commande une compilation. Tu devrais récupérer déjà plusieurs fautes.

    PGZ

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 19
    Par défaut
    Bonjour pgz,

    Effectivement, je devais pas être dans mon assiette, j'avais oublié d'initialiser mes variables.

    Mon code ressemble maintenant plus à ceci:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Option Explicit
    Public mycnx As ADODB.Connection
    Public myrs As ADODB.Recordset
    Dim save As Variant
    Dim ouChercher As String
    Dim valeur As Variant
    Dim ouChercherInterm As String
    Dim ValeurInterm As Variant
    Dim ouChercherInterm2 As String
    Dim ValeurInterm2 As Variant
    Dim tabelements() As Variant
    '----------------------------
    Private Sub BoutonAffichage_QuandClic()
    Set mycnx = New ADODB.Connection
        mycnx.Provider = "Microsoft.Jet.Oledb.4.0"
        'Définition de la chaîne de connexion
        mycnx.ConnectionString = "U:\bdSuiviDevis.mdb"
        'Ouverture de la base de données
    Dim i As Integer
    Dim j As Integer
    Dim strSql As String
    Dim critere As String
    Dim quoiChercher As String
    Dim complement As String
    mycnx.Open
    critere = Cells(1, 2).Value
    Range("A7:AM900").Clear
    For i = 7 To 900
        For j = 1 To 39
            Select Case (j)
            Case 1
            quoiChercher = "noDevis"
            Case 2
            quoiChercher = "dateEnvoiDev"
            Case 3
            quoiChercher = "noDossierSavoir"
            Case 4
            quoiChercher = "departement_client"
            Case 5
            quoiChercher = "commune_client"
            Case 6
            quoiChercher = "nomcli" 'peut être en 4
            Case 7
            quoiChercher = "telephone_client"
            Case 8
            quoiChercher = "origine"
            Case 9
            quoiChercher = "noAS"
            Case 10
            quoiChercher = "noPOI"
            Case 11
            quoiChercher = "chargedaff"
            '[...]
     
            Case Else
            quoiChercher = "*"
            End Select
     
            strSql = "SELECT '" & quoiChercher & "' FROM '" & ouChercher & "' WHERE '" & critere & "' = " & save & ";"
            Debug.Print strSql
     
            'strSql = "SELECT '" & quoiChercher & "' FROM '" & ouChercher & "' WHERE '" & ouChercher& "'.'" & valeurInterm & "' = '"& ouChercherInterm& "'.'" & valeurInterm2 & ";"
            Set myrs = New ADODB.Recordset
            myrs.Open strSql, mycnx, adOpenDynamic, adLockReadOnly, adCmdText
     
            tabelements() = tabelements() + myrs()
        Next j
     
    Next i
    mycnx.Close
    End Sub
    ça ne marche toujours pas sans doute parce que je ne sais pas bien comment récupérer les données de mon jeu d'enregistrement.
    Pour le moment, le programme s'arrête sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabelements() = tabelements() + myrs()
    en surlignant myrs() et comme erreur argument non facultatif.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu devrais commencer par vérifier ce que tu as dans le jeu d'enregistrements.
    Pour cela, tu choisis une feuille, par exemple "Feuil1" et tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabelements() = tabelements() + myrs()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("Feuil1").Range("A1").CopyFromRecordset myrs
    en neutralisant les boucles, car là tu fais 900 x 39 requêtes et cela va prendre du temps. Tu fais donc pour un seul i et un seul j.

    ET tu dis ce que cela donnes.
    Après il faudra voir pourquoi tu fais 2 boucles et si c'est indispensable.
    Ensuite, il faudra que tu expliques ce qu'est tabelements().

    Cdlt,

    PGZ

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 19
    Par défaut
    J'ai bien fait tout ce que tu m'as dit, neutralisé les boucles, remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabelements() = tabelements() + myrs()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("Feuil1").Range("A1").CopyFromRecordset myrs
    j'ai même créé une feuille "Feuil1" pour être sur, et j'ai fixé "j" à 1 pour n'avoir que les numéros de dossiers correspondants au critère choisi.

    Mais quand j'appuis sur le bouton j'obtiens le message d'erreur suivant:

    Erreur système &H80040E14 (-2147217900)

    J'ai fait une recherche google à ce sujet, et on dirait une erreur en cas de double insertion dans une base de donnée, ce qui ne correspond pas à ce que je fais, je sèche.

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Redonne le code au complet tel que tu l'as essayé, l'erreur levée et indique bien quelle ligne provoque l'erreur.

    A+

    PGZ

Discussions similaires

  1. Récupération d'informations dans Excel
    Par a02halo dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/07/2015, 10h36
  2. Réponses: 1
    Dernier message: 06/10/2008, 16h38
  3. Réponses: 9
    Dernier message: 17/08/2004, 16h16
  4. Réponses: 5
    Dernier message: 26/05/2004, 10h42
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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