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 :

Transfert de données d'un fichier dans un autre [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 61
    Points
    61
    Par défaut Transfert de données d'un fichier dans un autre
    Bonjour,
    Je souhaite importer des données d'un fichier Excel FICH1 dans un fichier Excel Fich2 dans lequel j'exécute le code. Ces 2 fichiers se trouvent dans le même répertoire, avec d'autres fichiers que je n'ai pas ouvert. J'ouvre pour cela le fichier Fich1 puis j'exécute le code dont la première partie, reproduite ci-dessous, me permet de vérifier que le fichier Fich1 est bien reconnu.
    Avec l'exécution pas à pas, je constate que le nom du fichier à lire est bien reconnu. Par contre, la variable N, qui est censée indiquer le nombre de fichiers ouverts est égal à 1, alors qu'il devrait être égal à 2 (Fich1 et Fich2).
    Dans la boucle, For, le seul fichier qui apparaît dans la variable Wkb.Name est bien dans le répertoire en cours, mais ce n'est pas le fichier Fich1 que j'ai ouvert.
    Pouvez-vous m'aider à trouver l'erreur.
    Merci

    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
    Sub imporData()
    Dim Fich1 As String
    Dim sNom As String
    Dim Wkb As Workbook
    Dim N As Integer
    Dim WOuvert As Boolean
     
    Fich1 = Sheets("D").Cells(4, 2).Value	'Nom du fichier à lire
    N = Workbooks.Count
    sNom = Fich1
    WOuvert = False
    For Each Wkb In Workbooks
       If Wkb.Name = sNom Then
          WOuvert = True
          Exit For
       End If
    Next Wkb
    ….

  2. #2
    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 Mopige Voir le message
    Avec l'exécution pas à pas, je constate que le nom du fichier à lire est bien reconnu. Par contre, la variable N, qui est censée indiquer le nombre de fichiers ouverts est égal à 1, alors qu'il devrait être égal à 2 (Fich1 et Fich2).
    Dans la boucle, For, le seul fichier qui apparaît dans la variable Wkb.Name est bien dans le répertoire en cours, mais ce n'est pas le fichier Fich1 que j'ai ouvert.
    Je viens de vérifier : même en ouvrant des fichiers dans des cessions différentes d'Excel, Workbooks.Count les reconnait tous.
    Le seule explication logique qui me vient est que tu n'as pas ouvert le bon fichier.

    J'ai beau réfléchir, je ne vois pas comment on pourrait obtenir avec un Workbook.Name le nom d'un fichier qui n'est pas ouvert.
    A moins qu'il y ait un détail important que tu ais omis dans tes explications, du style l'un des fichiers est un xlam ou un modèle.

    Essaye de mettre en début de code MsgBox ThisWorkbook.Name, pour vérifier que le fichier de ta macro est bien vu (il semblerait irréaliste que ce ne soit pas le cas).
    Lorsque tes deux fichiers sont ouverts, essaye aussi de taper dans ta fenêtre d'exécution ? Workbooks.Count pour voir s'il les compte.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par Menhir Voir le message
    Je viens de vérifier : même en ouvrant des fichiers dans des cessions différentes d'Excel, Workbooks.Count les reconnait tous.
    Et bien pas moi et ce depuis toujours avec différentes versions d'Excel !
    A moins qu'il y ait eu une mise à jour dans une version plus récente …

    Donc de mon côté la seule explication est évidemment plusieurs instances sont ouvertes.
    Et comme ouvrir plusieurs instances n'a aucun intérêt à part aggraver le gouffre de mémoire consommée par Excel,
    une des pires application en terme d'occupation de mémoire …

    Je constate dans le code présenté initialement qu'il n'y a pas d'ouverture du second classeur !
    Donc il suffit juste d'ouvrir ce second classeur, source des données, dans cette procédure de copie …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 61
    Points
    61
    Par défaut Précision et solution
    Bonjour,
    Merci à Menhir et Marc-L qui ont pris la peine de faire des suggestions.
    Précision sur mon message initial. Le fichier qui apparaît est celui sur lequel je travaille et à partir duquel je lance le programme de transfert. Lorsque je désactive le pas à pas, le programme se plante avec le message suivant:
    Erreur d'exécution 9; l'indice n'appartient pas à la sélection / L'option débogage conduit à l'instruction suivante. With Application.Workbooks(Fich1).Worksheets(onglet1). Il n'a donc pas reconnu le nom du fichier à lire.

    Solution : En fait le problème n'arrive que lorsque j'ouvre le fichier à lire dans une nouvelle session Excel. Par contre, lorsque j'ouvre le fichier à lire dans la même session, le transfert fonctionne convenablement.
    Cordialement

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

Discussions similaires

  1. utilisation des données d'un fichier dans un autre
    Par étudiant11 dans le forum Excel
    Réponses: 2
    Dernier message: 12/05/2015, 18h12
  2. [XL-2010] Copier des données d'un fichier dans un autre
    Par dozif77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2015, 18h42
  3. [XL-2003] Transcrire des données d'1 fichier dans d'autres fichiers
    Par Blgslb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2011, 18h02
  4. [XL-2003] Transférer des données d'un fichier dans un autre et Renommer le fichier
    Par sylviobarca dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2011, 14h19
  5. [Type de données]Comment sauvegarder fichiers dans une bdd?
    Par splinternabs dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/04/2006, 15h14

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