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 :

Remplissage d'un fichier excel annexe via VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Remplissage d'un fichier excel annexe via VBA
    Bonjour à tous,

    j'ai un problème aujourd'hui pour une application d'entreprise, je suis en train de mettre en place une application VBA qui servira d'interface entre un utilisateur lambda et un logiciel de modélisation 3D.
    Pour faire cela, j'ai besoin de faire passer des variables par un fichier Excel indépendant de ma macro VBA (qui n'est pas créé via Excel).
    J'ai donc réussi à créer mon fichier Excel, choisir le nombre d'onglets, l'enregistrer dans le bon dossier,...
    La seule chose que je n'arrive tout simplement pas à faire est, de remplir mes cases de tableur avec mes variables.

    Voici mon code pour la création et l'enregistrement de mon fichier :

    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
     
                'On créer l'objet Excel
               xlApp = CreateObject("Excel.Application")
                'On défini le nombre d'onglets (ici 1)
               xlApp.SheetsInNewWorkbook = 1
                'On ajoute un classeur
                xlBook = xlApp.Workbooks.Add
                'On donne un nom au classeur
               xlBook.SaveAs(path & "\Paramères-usinage-1-" & nom & ".xls")
                'On rend le classeur visible
               xlApp.Visible = False
                'On créer l'objet onglet dans le nouveau classeur créé
               xlSheet = xlBook.Worksheets(1)
                'On affecte un nom aux l'onglets
               xlSheet.Name = "Usinage 1"
                'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
               xlSheet = Nothing
                xlBook.save()

    Si vous avez une idée, n'hésitez pas
    Je ne sais pas si j'ai été assez claire dans mes explications, mais je peux essayer de mieux faire si besoin.

    Je vous remercie d'avance,
    Paul

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    La seule chose que je n'arrive tout simplement pas à faire est, de remplir mes cases de tableur avec mes variables.
    Où sont tes variables?
    Où exactement veux tu les copier?
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut,
    Désolé si je n'ai pas assez précis dans ma demande, je n'ai mis qu'un petit extrais de mon code.
    Mes variables sont déclarées et calculé dans mon application VBA en voici certaines:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim V1DEXT, V1DINT, V1HAPG, V1HAPS, V1DAPG, V1DAPS As Single
        Dim V2DINT, V2DEXT, V2EPBS, V2ESP As Single
        Dim V3DINTS, V3DINTI, V3DEXTI, V3HUSI, V3ESP As Single
        Dim V4DINTS, V4DINTI, V4DEXTI, V4HUSI As Single
    Le but est de copier ces valeurs dans les cases du tableur que j'ai créé et enregistré précédemment.
    Au final, peut importe les variable que je doit mettre dedans, je pense que ce qui me manque, c'est la syntaxe à utiliser car tout ce que j'ai essayé ne fonctionne pas.
    Merci de ton aide,
    Paul

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Voici le fichier VBA si ça peut aider ...
    usinage-avd.vb

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si tu veux mettre le contenu de la variable MaVariable dans la cellule B1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B1").Value = MaVariable
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1,2).Value = MaVariable
    Et réciproquement
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Commencer (déjà) par les bases :
    Les variables objets s'établisse par une instruction Set (ouvre l'aide VBA sur ce mot) et non une simple égalité

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim toto, titi as string
    ne type que titi en string
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci à vous deux,

    Menhir,
    j'ai bien essayé ces solutions, mais ça n'a pas l'air de fonctionner.
    Je pense que cela vient peut-être du fait que le fichier excel est indépendant de l'application VBA.

    unparia,
    Mon entreprise m'impose d'utiliser visual studio prof 2013 (formalisme et autres raisons obligent) et je sais que certaines syntaxes sont simplifiées dans certains logiciels comme visual studio.
    De ce fait mes déclarations de variables fonctionnent très bien, je pense pas que ce soit ça le problème étant donné que le reste de l’application fonctionne.

    Merci quand même,
    Cdlt,

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    unparia,
    Mon entreprise m'impose d'utiliser visual studio prof 2013
    Le code que tu montres est écrit en VBA et non en Visual Studio.
    J'insiste donc.

    Le lien que tu invites à ouvrir, par contre, semble être un fichier Visual Studio, ce qui laisserait entendre que tu "pilotes" VBA/Excel depuis VB.Net (qui n'est pas la présente section de ce forum).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je sais bien qu'il est écrit en visual basic car je ne connais que ce langage-là (ce n'est pas du tout mon métier à la base).
    Mais il n'en reste pas moins que je "pilote" avec visual studio comme tu le dis (je n'ai pas forcément le bon vocabulaire) et que j'ai des souvenirs de codage sur Excel ou autre et que j'ai été surpris par le changement de syntaxe même en codant du VBA.
    Je vais quand même essayer étant donné que je ne prétends pas être un As en codage mais je ne pense pas forcément aller sur la bonne piste.

    Merci beaucoup,

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Le pilotage de EXCEL/VBA nécessite la réunion des deux conditions suivantes :
    1) - connaissance des instructions de l'appli pilotante
    2) - connaissance des instructions de l'appli à piloter, à utiliser dans l'appli pilotante.
    Nul ne saurait piloter sans les connaissances du 2)
    Il te faut donc "sérier" le problème 2) avant de tenter le pîlotage à l'aide des instruction,s du 1)
    Ce qui veut dire : apprendre d'abord à traiter sans pilotage, depuis VBA/Excel directement.
    Nous t'y aiderons bien volontiers, dans la présente section (VBA/Excel) de ce forum, mais sur CES bases (directement depuis VBA).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par p.martinmahieu Voir le message
    Menhir,
    j'ai bien essayé ces solutions, mais ça n'a pas l'air de fonctionner.
    Je pense que cela vient peut-être du fait que le fichier excel est indépendant de l'application VBA.
    "Ca n'a pas l'air de fonctionner", ça n'est pas vraiment précis comme description de dysfonctionnement.

    J'ai l'impression que ton problème n'est pas de transférer le contenu d'une variable vers une cellule mais, plus basiquement, de dédigner la référence d'une cellule.

    Pour ça, il faut déjà que dans le logiciel qui pilote, tu ais chargé la bibliothèque d'objets Excel (Microsoft Excel XX object Library).

    Ensuite, il faut que tu désignes les objets Excel avec l'application.
    Dans ton cas, c'est le contenu de la variable xlApp.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp.Workbooks("MonFichier").Worksheets("MaFeuille").Range("B1") = MaVariable
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup Menhir,

    Il se pourrait bien que ce soit quelque chose comme ça.
    j'essaye demain et je te dit.

    Bonne soirée
    Paul

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Menhir
    L'objet xlSheet ayant été créé (point dont le succès dépend de VB.Net) :
    - il est normalement directement utilisable (pas besoin de passer par ses parents)
    - cette feuille est au départ vide (puisque créée)

    Je pense personnellement qu'en lieu et place de simples variables (variables VB.Net, donc) à insérer sur cette feuille en définissant (fastidieux) le cellule de destination de chacune d'entre elles, il serait beaucoup plus astucieux de leur substituer (dans VB.Net) un tableau bidimensionnel (1 to ..., 1 to ...) contenant les valeurs dont il s'agit et d'en injecter le contenu (par code VBA) d'un seul coup sur la feuille xlSheet.
    La partie création et remplissage du tableau dynamique relève, elle, de VB.Net, que je ne pratique pas et dont j'ignore donc la syntaxe.
    Amitiés
    EDIT : sans préjudice de tout ce que permet d'imaginer :
    mettre en place une application VBA qui servira d'interface entre un utilisateur lambda et un logiciel de modélisation 3D.
    Mécanisme décidé et dont je cerne mal la nécessité (interface VBA). Et si interface (tremplin) VBA vraiment indispensable, il est vraisemblable que l'écriture par VB.Net (puis l'importation) d'un csv ferait l'affaire
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #14
    Candidat au Club
    Homme Profil pro
    Technicien en alternance mécanique
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien en alternance mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    bonjour a vous,
    J'ai essayé ce que vous m'avez dit, et il s'agissait bien d'une erreur de syntaxe.
    En effet j'avais déjà essayé de créer de truc comme des xlrange.value ou des xlcell.value en vains
    finalement, j'ai fait comme m'a dit menhir et en écrivant des lignes comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.range("A1").value = "ma valeur"
    ça à fonctionné

    Merci Beaucoup, c'est résolu!
    Paul

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

Discussions similaires

  1. copier une feuille excel vers un autre fichier excel en access VBA
    Par acbdev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/03/2008, 09h32
  2. remplissage d'un fichier excel avec une table access
    Par lupus83 dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/08/2007, 14h24
  3. Réponses: 1
    Dernier message: 29/01/2007, 19h22
  4. [VBA-E]ouvrir fichier excel + boite dialogue VBA
    Par dananounette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 16h13
  5. [VBA]Lien entre fichiers excel : Update en VBA
    Par criocaps dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2006, 09h07

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