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 :

Actualiser une connexion de données entre deux classeurs par bouton


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut Actualiser une connexion de données entre deux classeurs par bouton
    Bonjour a tous,

    J'ai un petit problème avec une macro d'actualisation.

    Voila j'explique mon cas:

    J'ai deux classeurs excel à faire connecter, le classeur sur lequel je travail est appelé Base1 (il représente la source de données), et le deuxième est appelé Base2, et c'est lui que je veut faire connecté par le classeur Base1.

    Le nom de la connexion est appelé alors : Base1_connect

    J'ai enregistrer par la suite l'actualisation des données par une macro appelé ActualiserConnect, elle enregistrer dans le classeur Base2, et ça marche bien on l'exécutons depuis Base2

    Mon problème est: j'ai essayé de créer un bouton qui fait exécuter cette macro par un code VBA (Bouton commande Activex) mais depuis mon classeur de travail (c'est a dire Base1) mais ça na pas marcher, voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
      Application.Run "Base2.xls!'ActualiserConnect'"
    End Sub
    J'ai même essayé d'autre expression, mais toujours pas de résultats.

    Alors est-ce qu'il y a quelqu'un qui peut me corriger cette expression.

    Merci d'avance pour toute intervention.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Salut,

    peux tu nous confirmer ceci :

    - tu as 2 classeurs Base1 et Base2
    - tu as un bout de code dans Base2 qui met a jour des infos
    - tu as un bouton et un bout de code dans Base1 qui doit lancer le code de Base2

    C'est bien cela ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Oui, c'est bien cela.

    Deux classeurs, Base1 (source de données) et Base2 (récepteur de données).

    Voici les codes sur Visuel Basic:


    Macro sur Base2 dans Module1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ActualiserConnect()
     '
     ' ActualiserConnect Macro
     '
     
     '
        ActiveWorkbook.RefreshAll
     
    End Sub

    Bouton click sur Base1 (le code est au niveau de Feuil1 (Feuil1) ) qui fait éxecuter la Maro sur Base2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub CommandButton1_Click()
           Application.Run "Base2.xlsm!'ActualiserConnect'"
       End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    OK,

    quelques idees pour commencer :

    - place ta sub en Public dans le module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub ActualiserConnect()
    - il faut t'assurer que le classeur Base2 soit bioen ouvert
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Toujours ça donne rien.

    Remarque :

    En faite, Il y a un réglage sur la propriétés de connexion de excel (dans Données--->Connexion--->Propriété), et sur la boite de dialogue je trouve que c'étais coché par default (Activer la connexion en arrière-plant et Activer cette connexion à la commande de actualiser tout).
    C'est a dire que excel, propose entre temps quelques réglage d'actualisation.

    Est-ce que cela peut poser problème à mon code ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Ce qui me chiffonne c'est "pourquoi base2 doit rafraichir les donnees depuis base1 ?"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    En faite, il y a une base de donnée Access qui est partager et liée en même temps par plusieurs classeurs Excel.

    Dans mon exemple, Base2 est liée vers une base de données Access (et il y auna d'autres classeur aussi sont liées de la même façon), et j'aimerai gardé ce classeur fermé pour éviter la lecture seul.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Je pense que la conception de ton application n'est pas forcement au point, ou alors que tu ne nous donnes que des infos par morceau


    Donc maintenant on a
    1 base Access
    5 fichiers Excel

    c'est tout ou tu as encore d'autres infos ?

    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bon, pour le moment rien ni liée avec Access, l'opération que entame de faire est juste pour tester.

    Il y a seulement 2 classeurs Excel qui sont connecté entre eux, et je veux actualisé les données par un bouton depuis le 1er classeur.

    Voici un extrait de mes classeurs comme exemple sur pièce jointe.

    Peut être il faudra les reconnecté su votre Pc.

    Désolé, j'ai la pièce jointe.

    La voici donc...
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Ça y est je l'ai trouvé..!!

    En faite, Il fallait que je enregistre ma macro au niveau du classeur du départ (Base1.xls).

    Je récapitule, pour actualisé les données du classeur Base2 (Récepteur de données) par un bouton click sur Base1(Source de modification de données), il faut faire comme suite:

    1) Enregistrer une macro dans Base1
    2) Aller vers Base2 est actualiser les données tout simplement par le menu "Actualiser Tout"
    3) Arrêter l'enregistrement dans Base1
    4) Créer un bouton (Contrôle formulaire) en lui affectant la macro enregistré.

    Alors de cette façon le code de la macro deviens comme ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ActualiserBase2()
    '
    ' ActualiserBase2 Macro
    '
     
    '
        Windows("Base2.xlsm").Activate
        ActiveWorkbook.RefreshAll
        Windows("Base1.xlsm").Activate
    End Sub
    Finalement c'étais simple.

    Merci comme même Jean-Philippe, pour ton aide.

  11. #11
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    J'aimerai ajouter une autre question complémentaire a ce sujet.

    Est-ce que c'est possible de faire la même chose mais étant le classeur Base2 fermé (classeur a actualiser) ?

  12. #12
    Membre du Club
    Homme Profil pro
    Chargé d'études statistique
    Inscrit en
    Février 2017
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chargé d'études statistique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Encore je l'ai trouvé, voici la réponse:

    Cette fois si non, pour actualiser un classeur fermé depuis un autre classeur, il faut d'abord enregistré la macro d'actualisation dans le classeur Base2 (récepteur de données) ensuite en fait appel a cette macro par le bouton click sur Base1 comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     
    Run "'C:\Users\ANEM\Desktop\Base2.xlsm'!ActualiserConnect"
    Windows("Base2.xlsm").Close
     
     
    End Sub

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

Discussions similaires

  1. [XL-2010] récupération de données entre deux classeurs
    Par Cap'taineSamSam dans le forum Excel
    Réponses: 5
    Dernier message: 15/05/2017, 15h22
  2. [ VB6 ]Copie de donnée entre deux classeurs Excel
    Par leriderfoudu77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 21/12/2012, 09h52
  3. [XL-2003] transfert de données entre deux classeurs fermés
    Par frihat mohamed dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/09/2011, 21h26
  4. Données externes entre deux classeurs
    Par hkpsyco dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2007, 13h17
  5. selectionner une borne de dates entre deux dates données
    Par itchyjojo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/05/2007, 07h07

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