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 :

Connexion Excel -> Access || Importer la valeur d'une cellule Excel dans une cellule d'une table Access [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut Connexion Excel -> Access || Importer la valeur d'une cellule Excel dans une cellule d'une table Access
    Bonjour à toutes et à tous,

    J'ai déjà opérer plusieurs connexions d'Access à Excel pour récupérer des valeurs dans mon tableau Excel avec succès. "Méthode ADOBD connexion et recordset"
    Mais depuis quelques jours je n'arrive pas à faire de connexion d'Excel vers Access, dans le but de récupérer une certaine valeur contenue dans une certaine cellule et l'intégrer à une certaine cellule de ma table Access.

    Je vous résume mon problème :
    - Je voudrais récupérer la valeur d'une cellule de ma table Excel "en l'occurrence une moyenne"
    - La mettre dans une certaine cellule de ma table Access

    Au final je voudrais savoir :
    - Si je dois utiliser une nouvelle connexion que celle existante "Access -> Excel avec ADOBD"
    - Si je dois utiliser une connexion avec la méthode DoCmd
    - Si je suis sur la bonne voie avec ce code dans lequel l'erreur suivante survient "erreur d'execution '424'/ Objet requis"
    Pour la ligne : "DoCmd.SetWarnings False"

    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
     
    Private Sub "nom_sub"()
     
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
     
    Set oApp = CreateObject("excel.application")
    Set oWkb = oApp.Workbooks.Open("chemin_de_mon_fichier_excel")
    Set oWSht = oWkb.Worksheets("nom_de_ma_feuille_excel")
     
    DoCmd.SetWarnings False
     
    'si la cellule n'est pas vide
    If oWSht.Range("aa" & i).Value <> "" Then
     
        cSQL = "UPDATE "ma_table" SET "ma colonne" = '" & oWSht.Cells("aa", i) & "' WHERE "ma_condition""
     
        'exécution
        DoCmd.RunSQL cSQL
     
    End If
     
     
    DoCmd.SetWarnings True
     
    End Sub
    Voilà pour ma part si j'ai omis de renseigner des éléments n'hésitez pas, demandez moi.
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par v4ss73r Voir le message
    ...
    Mais depuis quelques jours je n'arrive pas à faire de connexion d'Excel vers Access, dans le but de récupérer une certaine valeur contenue dans une certaine cellule et l'intégrer à une certaine cellule de ma table Access...
    Bonjour,

    Ne peux-tu pas lier ta feuille Excel comme une table externe dans Access et faire une Requête mise à jour pour mettre à jour ta table ?

    Tu dis

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Merci de ta réponse

    Alors je viens d'essayer cette solution avec succès dans le fonctionnement mais j'arrive sur un problème.

    C'est à dire que l'intérêt de faire la connexion était de stocker la valeur de ma cellule pour que si justement la valeur de ma cellule Excel venait à changer je puisse garder une vue rétrospective sur mes anciennes valeurs et non qu'elles soit mise à jour à chaque changement "auquel cas je perdrait mon ancienne information".

    Justement pour éclaircir mon raisonnement je cherche à écrire un système qui :
    - à la fin de l'année prenne ma moyenne "valeur de ma cellule Excel" pour la mettre dans ma table Access "colonne moyenne à n-1" pour la stocker.
    - prend cette valeurs "moyenne à n-1" pour la comparer avec la nouvelle moyenne "de la nouvelle année" qui sera renseignée au fur et à mesure que les mois avance.

    J'ai réussi a créer le système permettant la comparaison et le suivi de ces moyennes, sauf que justement je n'arrive pas a stocker la moyenne n-1.

    Ai-je mieux exposé le problème ou cela reste t-il très flou ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si j'avais compris quelques chose, je me serai fait un plaisir!

  5. #5
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Alors je vais essayer d'être le plus précis possible.
    J'ai un fichier Access avec plusieurs tables dont une stockant la moyenne de mon année n-1 "moyenneB",
    ainsi que un fichier Excel avec une feuille de calcules contenant mes données servant à calculer la moyenne de l'année courante "moyenneA", "la moyenne est contenue dans cette même feuille".

    Dans l'idée je voudrais : "admettons que nous sommes en Janvier donc nouvelle année"
    - Faire en sorte que la valeur actuelle de ma cellule moyenne "moyenneA" soit stocker dans ma table Access -> elle deviendra moyenneB
    - Supprimer les anciennes valeurs de mon tableau Excel -> puisque j'ai déjà stocker la nouvelle valeur moyenneB
    - Ensuite mon tableau va être réalimenter au fur et à mesure des mois qui suivent et donc alimenter la nouvelle moyenneA
    - Une fois que nous somme de retour en janvier Excel prendra cette nouvelle moyenneA et la stockera dans ma table access -> elle deviendra moyenneB

    Dans l'idée tout fonctionne mais je vois mal comment récupérer cette fameuse valeur MoyenneA de mon Excel pour l'envoyer sur ma table Access pour qu'elle devienne ma MoyenneB
    "c'est dans l'idée de créer un tableau qui va alimenter un graphique, ce graphique contiendra les valeurs de l'année actuelle et en affichera la Moyenne "moyenneA" ainsi que l'ancienne moyenne "moyenneB"

    J'espère que ca vous permettra de comprendre la démarche.
    Voilà le genre de graphique que je voudrais avoir
    la barre en 2016 = MoyenneB "Contenue dans la table" ... l'ancienne valeur de moyenneA... celle que je n'arrive pas a importer dans ma table Access
    la barre en 2017 = MoyenneA "contenue dans la feuille de calcul Excel"
    Nom : Capture.PNG
Affichages : 576
Taille : 20,7 Ko
    En vous remerciant

  6. #6
    Invité
    Invité(e)
    Par défaut
    tu as "ma_condition" quelle est elle du point de vue Excel?

    DoCmd c'est de Access comment fait tu ta connexion (VBA) {Adodb.conection?}

  7. #7
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    ma_condition serait "WHERE colonne = 'nom_graphique'"
    cette condition se s'applique sur la table Access je ne comprends donc pas vraiment t'as question.
    tu as "ma_condition" quelle est elle du point de vue Excel?
    Alors oui j'ai une connexion ADOBD que j'utilise pour importer des valeurs Access dans ma feuille de données justement.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code ça c'est Access : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.SetWarnings False
    DoCmd.RunSQL cSQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SET "ma colonne" = '" & oWSht.Cells("aa", i) & "'
    le [i] sous entant qu'il y à plusieurs cellules c'est pour cela que j'ais parlé de "ma_condition" !


    Alors oui j'ai une connexion ADOBD que j'utilise pour importer des valeurs Access dans ma feuille de données justement.
    et bien c'est elle qu'il faut utiliser pour faire ta mise à jour et pas ! [DoCmd.RunSQL] Connexion.execute sqlje me disais qu'il était possible d'updater Access en utilisant ton fichier Excel comme lien externe!

    à vrai dire je ne sais pas si on est sur le bon forum Access ou Excel, désolé de t'avoir fait perdre ton temps!

  9. #9
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    Ma question n'a peut être aucun intérêts mais :

    Pourquoi copier la moyenne n-1 dans Access (moyennant tout le mic-mac qui va avec) plutôt que dans une autre feuille/ligne/etc Excel ?
    C'est en creusant qu'on fait des trous

  10. #10
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Alors là je te dirais que je me suis posé la même question que toi, mais c'est une des contraintes qu'y m'a été imposée,
    ce serait pour assurer que l'utilisateur ne la change pas directement dans la feuille Excel auquel cas on perdrait l'information définitivement.

  11. #11
    Membre confirmé
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Points : 584
    Points
    584
    Par défaut
    Dans ce cas la il suffirait de cacher la feuille en mode veryhidden ou/et de lui implanter un mot de passe ?

    Enfin bon si c'est ce qu'on te demande
    Personnellement dans ce cas là je serai passé par un xml tout simple plutôt que par un Access
    C'est en creusant qu'on fait des trous

  12. #12
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Oui pourquoi pas, je vais chercher de ce côté
    Merci pour vos réponses.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ce serait vraiment plus facile si tu consentais a donner des s explication sur ce que ta macro est sensé faire (du point se vue Vba pas Access) et sur ta connexion Odbc!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub test()
    With CreateObject("Adodb.connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=L:\bdmrc.accdb;"
    cSQL = "UPDATE [ma_table] SET [ma colonne] = '" & oWSht.Cells("aa", i) & "' WHERE " & ma_condition
       .Execute(cSQL)
        .Close
    End With

  14. #14
    Membre du Club
    Homme Profil pro
    Etudiant - Toulouse
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant - Toulouse

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Bonjour tout le monde,
    comme l'a suggéré Al__22 j'ai sauvé mes données de moyennes dans une feuille Excel cachée ce n'est pas ce que je cherchais de base, mais cela correspond à mes attentes.
    Merci à tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer des valeurs de table SAS dans des cellules Excel
    Par id301077 dans le forum ODS et reporting
    Réponses: 5
    Dernier message: 25/09/2011, 11h34
  2. Réponses: 4
    Dernier message: 22/09/2011, 14h02
  3. [AC-2010] Lien tables access importé d'excel avec actualisation
    Par gwaheb dans le forum Access
    Réponses: 4
    Dernier message: 08/06/2011, 10h10
  4. Incrémenter l’import de valeurs de page web dans des cellules Excel
    Par stevekho dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2011, 09h32
  5. Réponses: 5
    Dernier message: 10/01/2008, 09h24

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