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 :

Lire et ecrire dans un autre fichier Excel via une macro d'un fichier Excel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut Lire et ecrire dans un autre fichier Excel via une macro d'un fichier Excel
    Bonjour,

    J'ecris ici car en ayant cherche la solution a mon probleme, je trouve des chose mais pas totalement ce que je cherche.

    Je m'explique:

    Dans ma boite nous avons un fichier Excel qui nous sert de "base de donnee" de toutes nos pieces. C'est en realitee un simple tableau a 6 colonnes dont la premiere (deja remplie) comporte les numeros de plans tous a la suite.
    Lorsque l'on decide de faire une nouvelle piece on doit donc aller dans ce fichier Excel et choisir le premier numero de plan qui n'est pas utilise (premiere ligne dont la deuxieme colonne sera vide) et remplir les 5 autre colonnes de cette ligne avec les informations liees a cette nouvelle piece.

    Je developpe un outil Excel qui configure des nouveaux assemblages et avant de generer ce nouvel assemblage je demande a l'utilisateur de remplir des champs d'une userform avec des nouveaux numero de plans.
    Cela voudrait donc dire qu'il devrait prealablement ouvrir de fichier Excel "base de donnee" pour y recuperer les numero de plan dont il a besoin, les copier dans un coin puis lancer mon programme pour les rentrer dans la UserForm ce qui, en pratique, n'est justement pas tres pratique!

    Je voulais donc trouver le code VBA pour que, a l'initialisation de cette userform:
    - le fichier Excel base de donnee s'ouvre (sans etre visible)
    - verifier que celui ci n'est pas en lecture seule (sinon je ne suis pas sur que quelqu'un d'autre n'est pas en train de l'utiliser et donc le dernier numero de plan que je vois disponible n'est peut etre plus disponible)
    - si le fichier Excel n'est pas en lecture seule, je veux chercher la premiere ligne dont la deuxieme colonne est vide (pas de soucis pour coder la boucle)
    - remplir toutes les lignes donc j'ai besoin pour la generation du nouvel assemblage (autant de lignes que de nouvelles pieces)
    - puis fermer se fichier Excel en le sauvegardant bien entendu.

    J'ai deja essaye avec le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Dim appXl As Excel.Application
    'Set appXl = CreateObject("Excel.Application")
    '
    'With appXl
    '    .Workbooks.Open (Cells(4, 2))
    '    .Visible = False
    'End With
    Mais le fichier s'ouvre en lecture seule, donc je pourrais peut etre recuper mes numeros de plans mais jamais remplir les lignes correspondantes dans le fichier Excel...

    Pour information nous sommes sur Office 365 Business et les fichiers Excel sont des *.ods

    Merci d'avance

    Yves

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    Bonjour a tous!

    Personne n'a de pistes pour mon probleme?

    Merci

    Yves

  3. #3
    Expert éminent 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
    Par défaut
    Citation Envoyé par yvespi Voir le message
    - verifier que celui ci n'est pas en lecture seule (sinon je ne suis pas sur que quelqu'un d'autre n'est pas en train de l'utiliser et donc le dernier numero de plan que je vois disponible n'est peut etre plus disponible)
    https://msdn.microsoft.com/fr-fr/vba...property-excel

    - si le fichier Excel n'est pas en lecture seule, je veux chercher la premiere ligne dont la deuxieme colonne est vide (pas de soucis pour coder la boucle)
    https://msdn.microsoft.com/fr-fr/lib.../ff839539.aspx

    - remplir toutes les lignes donc j'ai besoin pour la generation du nouvel assemblage (autant de lignes que de nouvelles pieces)
    Ne sachant pas à quoi ressemblent tes données sources et cibles, je suppose qu'il faudra faire une boucle For To puis copier les cellules ou transférer les valeurs de cellule à cellule avec un simple "=".
    https://msdn.microsoft.com/fr-fr/VBA...next-statement
    https://msdn.microsoft.com/fr-fr/lib.../ff837760.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff839476.aspx

    - puis fermer se fichier Excel en le sauvegardant bien entendu.
    https://msdn.microsoft.com/fr-fr/vba...e-method-excel ou https://msdn.microsoft.com/fr-fr/vba...s-method-excel
    https://msdn.microsoft.com/fr-fr/vba...e-method-excel

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    Super, merci Menhir j'ai toutes mes pistes.

    J'ai un dernier minuscule probleme:
    J'aimerai que le fichier Excel que j'ouvre ne s'affiche pas.
    Pas seulement qu'il soit au second plan mais qu'il ne soit pas visible du tout.

    J'ai teste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim wbMyWb As Workbook
     
    Set wbMyWb = Workbooks.Open(Path & Name)
    Workbooks(Name).Visible = False
    mais j'ai le message d'erreur suivant:

    Run-time error '9':
    Subscript out of range


    pointant sur la ligne Workbooks(Name).Visible = False

    Des idees la dessus?

    merci

    Yves

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par yvespi Voir le message
    J'ai teste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wbMyWb As Workbook
     
    Set wbMyWb = Workbooks.Open(Path & Name)
    Workbooks(Name).Visible = False
    mais j'ai le message d'erreur suivant:

    [B]Run-time error '9':
    Subscript out of range
    C'est sans doute parce que le nom que tu mets dans Workbooks n'est pas bon.
    Je sais bien que c'est celui que tu as donné pour le Open mais en fonction de la config de ton Explorateur Windows, il peut vouloir aussi l'extension.

    Mais ce n'est pas un problème : étant donné que tu as mis la référence au classeur dans une variable, utilise-là. Ce sera bien plus simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wbMyWb As Workbook
     
    Set wbMyWb = Workbooks.Open(Path & Name)
    wbMyWb.Visible = False
    Mais tu vas avoir un autre problème : l'objet Workbook n'a pas de propriété Visible.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    Merci Menhir,

    En effet, j'avais aussi essaye ca avant, mais ca ne marche pas...

    Yves

  7. #7
    Expert éminent 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
    Par défaut
    Citation Envoyé par yvespi Voir le message
    En effet, j'avais aussi essaye ca avant, mais ca ne marche pas...
    Il serait étonnant que ce soit le même message d'erreur, donc ton "ça ne marche pas" ne participe pas beaucoup à la résolution du problème.
    De plus, dans mon message précédent, je t'avais indiqué pourquoi ça n'allait pas fonctionner.

    Il n'est pas possible de masquer un Workbook. Il faut donc contourner le problème.
    Donc soit masquer la/les Worksheet(s) du classeurs, soit (comme le suggère le camarade Marc) ouvrir le classeur dans une autre cession d'Excel et masquer toute la cession au niveau Application ou Windows.
    https://msdn.microsoft.com/fr-fr/vba...w-object-excel

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par yvespi Voir le message
    J'aimerai que le fichier Excel que j'ouvre ne s'affiche pas.
    Deux voies simples :

        •   soit désactiver l'affichage via la propriété   ScreenUpdating   au moins jusqu'à la fermeture du classeur;

        •   soit l'ouvrir via la fonction   GetObject   (consulter l'aide interne au VBA) …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Une base de donner Access me semblerait plus indiqué!

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    Bonjour a tous,

    Marc-L:
    Je n'avais pas poste le message d'erreur car il ne pointait sur rien de la fonction d'initialisation de la UserForm mais sur la commande d'ouverture de la UserForm UserForm1.Show.

    dysorthographie:
    Je suis bien d'accord mais ce fichier Excel est deja implante dans le fonctionnement de l'entreprise et est utilise par d'autre soft de gestion de production, mon fichier Excel est une aide pour configurer des assemblage beaucoup plus rapidement, donc je ne peux pas faire changer le fonctionnement de plusieurs departement uniquement pour que mon fichier Excel soit plus facile ... malheureusement.

    Marc-L:
    Merci!

    tout simplement wbMyWb.Windows(1).Visible = False marche tres bien!

    merci a tous

    Yves

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Autant directement ouvrir caché le classeur via GetObject

    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé …

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

Discussions similaires

  1. Manipuler Excel via une macro dans Powerpoint
    Par mevzéro dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 14/08/2014, 08h37
  2. [OL-2007] Ouvrir fichier Excel via une macro dans Outlook
    Par pepsister dans le forum VBA Outlook
    Réponses: 5
    Dernier message: 30/07/2014, 16h41
  3. Réponses: 1
    Dernier message: 01/12/2012, 09h47
  4. Réponses: 45
    Dernier message: 14/02/2008, 15h41
  5. Réponses: 2
    Dernier message: 04/06/2007, 15h39

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