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 :

Importer des données dans un classeur [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut Importer des données dans un classeur
    Citation Envoyé par Daniel.C Voir le message
    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
    Sub Import()
        Dim Chemin As String, Fich As String, Plage As String, NomFeuille As String
        Dim Teste As Boolean, Sh As Worksheet
        Chemin = "c:\temp"     '*** à modifier
        Plage = "A3:G57"     '*** à modifier
        NomFeuille = "Emissions (g)"     '*** à modifier
        Fich = Dir(Chemin & "\*.xls*")
        Do While Fich <> ""
            Teste = False
            For Each Sh In ThisWorkbook.Worksheets
                If Sh.Name = Left(Fich, 31) Then
                    Teste = True
                    Exit For
                End If
            Next Sh
            If Teste = False Then
                Sheets.Add.Name = Left(Fich, 31)
                Workbooks.Open Chemin & "\" & Fich
                Sheets(NomFeuille).Range(Plage).Copy
                ThisWorkbook.Sheets(Fich).[A1].PasteSpecial xlPasteValues
                ActiveWorkbook.Close False
            End If
        Fich = Dir
        Loop
    End Sub

    salut,je viens just d'essayer le code,il est bon mais il me renvoie un erreur(erreur 9, l'indice n'appartient pas à la sélection)
    en lieu et place de copier une plage de cellule,comment pourrait on copier toute la feuille.
    j'attends avec impatience vos suggestion à mes difficultés,merci d'avance
    cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Non testée :

    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
    Sub Import()
        'Réf.120209.xlsm
        Dim Chemin As String, Fich As String, Plage As String, NomFeuille As String
        Dim Teste As Boolean, Sh As Worksheet
        Chemin = "c:\temp"     '*** à modifier
        NomFeuille = "Emissions (g)"     '*** à modifier
        Fich = Dir(Chemin & "\*.xls*")
        Do While Fich <> ""
            Teste = False
            For Each Sh In ThisWorkbook.Worksheets
                If Sh.Name = Left(Fich, 31) Then
                    Teste = True
                    Exit For
                End If
            Next Sh
            If Teste = False Then
                Workbooks.Open Chemin & "\" & Fich
                Sheets(NomFeuille).Copy before:=ThisWorkbook.Sheets(1)
                ThisWorkbook.Sheets(1).Name = Left(Fich, 31)
                ActiveWorkbook.Close False
            End If
        Fich = Dir
        Loop
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    [dommage,c'est la même chose.je crois que mon problème vient de la feuille sage que je veux copier qui est le resultat de l'importation d'une balance sage comptabilité.dans le code quand je mets le curseur sur le nom de la feuille,il indique qu'elle est vide,ce qui n'est pas le cas.
    merci bien pour votre intervention,si vous avez d'autre chose je suis preneur
    cordialement

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Comme ça, non, mais si tu peux mettre un classeur exemple sans données confidentielles en pièce jointe...

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    salut,comment dois je m'y prendre pour attacher un fichier
    pourriez vous commenter les ligne de votre code précédent concernant la copie des feuilles svp,peut être en comprenant mieux le code je pourrais l'adapter à mon cas

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par sigma17 Voir le message
    il me renvoie un erreur(erreur 9, l'indice n'appartient pas à la sélection)
    Tu ne nous dis pas sur quelle ligne tu as cette erreur.

    Tu ne nous montres pas non plus ton code à toi mais bien celui repris d'une autre discussion.
    As-tu adapté les noms tel que mentionné dans le code exemple?

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    bonsoir,j'espère que je serais beaucoup plus claire maintenant,bien voici mon code sus-mentionné,l'erreur est ramenée à la ligne 21.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Workbook_Open()
    Dim Chemin As String, Fich As String, Plage As String, nomfeuille As String
    Dim Teste As Boolean, Sh As Worksheet
    Chemin = "C:\Documents and Settings\Administrateur\Bureau\nani"
    'Plage = "A1:F181"
    nomfeuille = "Sage"
    Fich = Dir(Chemin & "\*.xls*")
       Do While Fich <> ""
                Test = False
                For Each Sh In ThisWorkbook.Worksheets
                    If Sh.Name = Left(Fich, 31) Then
     
                         Teste = True
     
                       Exit For
     
                     End If
                 Next Sh
                 If Teste = False Then
                     Workbooks.Open Chemin & "\" & Fich
                     Sheets(Sage).Copy before:=ThisWorkbook.Sheets(1)
                     ThisWorkbook.Sheets(1).Name = Left(Fich, 31)
                     Sheets.Add.Name = Fich
                     'Workbooks.Open Chemin & "\" & Fich
                     'Sheets(Sage).Copy
                     'ThisWorkbook.Sheets(Fich).[A1].PasteSpecial xlPasteValues
                     ActiveWorkbook.Close False
     
                 End If
              Fich = Dir
        Loop
     
     
     
     
     End Sub
    au fait j’extraie des balances mensuelles depuis SAGE COMPTABILITÉ V13 sur excel(2007) dans un répertoire bien précis nommé nani et je veux que chaque feuille extraite soit copiée automatiquement dans un même classeur à part situé aussi dans nani,et que la copie soit dans des feuilles différentes.
    cordialement

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Si tu avais mis Option Explicit en tête de module, tu te serais rendu compte que tu n'as pas de variable nommée Sage.

    Par contre tu en as une nommée nomfeuille...

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Et, pour expliciter davantage, soit tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(nomfeuille).Copy
    soit :

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    salut,merci bien,je crois que c'est les griffes autour du nom de la feuille qui me manquaient.
    malheureusement le problème que je craignais vient d'apparaitre lors de l'exécution,il s'agit du format de mon fichier.
    le fichier que je veux copier est au format 2003 puiqu'il est le resultat d'une exportation de sage vers excel
    lors de l'exécution j'ai une erreur qui dit que le format du fichier est différent de celui spécifié par l'extention du fichier
    j'espère que y'a quelque chose à faire
    cordialement

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Il faut que tu enregistres le classeur recevant les feuilles et contenant la macro au format xls. Si tu ne le peux pas, pour une raison quelconque, il faudra modifier la macro.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par sigma17 Voir le message
    je crois que c'est les griffes autour du nom de la feuille qui me manquaient.
    Si tu as modifié le nom de la feuille dans Ta variable nomfeuille ne sert plus à rien.

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Il faut que tu enregistres le classeur recevant les feuilles et contenant la macro au format xls. Si tu ne le peux pas, pour une raison quelconque, il faudra modifier la macro.
    j'ai bien enregistré le classeur contenant la feuille avec la macro au format xls,dans ses conditions il n'arrive pas à ouvrir mes balances exportées au format 2003,il envoi un erreur "incompatibilité du type,le format du fichier est différent de celui spécifié par l'extension" par contre il arrive à ouvrir les fichiers quand je les enregistrent au format 2007 mais il affiche également "erreur '9',l'indice n'appartient pas à la sélection"
    comment pourrais je donc modifier la macro pour gérer ses messages d'erreurs?
    cordialement

    Citation Envoyé par AlainTech Voir le message
    Si tu as modifié le nom de la feuille dans Ta variable nomfeuille ne sert plus à rien.
    salut,c'est juste puisque je passe directement par le nom de ma feuille,mais ma difficulté concernant la compatibilité des classeurs demeure et quand ils sont compatible j'ai une erreur d'exécution '9' "l'indice n'appartient pas à la sélection".
    pourtant quand j'utilise le clic droit sur la feuille pour faire la copie j'ai pas de problème et la copie s'effectue correctement
    cordialement

  14. #14
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Si ton fichier cible (contenant la macro) est au format 2003 et que les fichiers et que les balances sont également au format 2003, je ne vois pas comment il peut y avoir une compatibilité... Peux-tu mettre une balance, même sans données en pièce jointe ?

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    bonjour,bien voici une balance extraie de sage 13.1,le fichier est au format excel 2003,il est à noté que la première colonne lors de l'extraction est a le type texte or ce sont des numéro de comptes donc après l'extraction j'ai changé le type texte en type numérique pour éviter les messages d'erreurs et avoir la possibilité de faire des recherches sur cette colonne.
    Cordialement
    Fichiers attachés Fichiers attachés

  16. #16
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Ton problème vient du fait que les classeurs Sage ont l'extension ".xls" alors que ce sont des classeurs au format 2007 (1 Mo lignes). Du coup le classeur cible doit être au format 2007. J'ai ajouté du code pour supprimer l'apparition du message. Remplace ton code par celui-ci :

    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
    Dim Chemin As String, Fich As String, Plage As String, nomfeuille As String
    Dim Teste As Boolean, Sh As Worksheet
    Chemin = "C:\Documents and Settings\Administrateur\Bureau\nani"
    'Plage = "A1:F181"
    nomfeuille = "Sage"
    Fich = Dir(Chemin & "\sig*.xls*")
       Do While Fich <> ""
                Test = False
                For Each Sh In ThisWorkbook.Worksheets
                    If Sh.Name = Left(Fich, 31) Then
     
                         Teste = True
     
                       Exit For
     
                     End If
                 Next Sh
                 If Teste = False Then
                     Application.DisplayAlerts = False
                     Workbooks.Open Chemin & "\" & Fich
                     Application.DisplayAlerts = True
                     Sheets(nomfeuille).Copy before:=ThisWorkbook.Sheets(1)
                     ThisWorkbook.Sheets(1).Name = Left(Fich, 31)
                     Workbooks(Fich).Close False
                 End If
              Fich = Dir
        Loop

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    Merci encore pour votre intérêt et votre promptitude.je viens de tester le code et malheureusement il ne marche pas,je l'ai repassé en revu et j'ai constaté qu'à la ligne 6 vous avez marquez"Fich=Dir(Chemin & "\sig*.xls*"),quand j'exécute rien ne se passe,je ne comprends pas le sig avant l'extension xls.en effet quand je le supprime et que j'exécute,alors le message d'erreur disant" l'indice n'appartient pas à la sélection" apparait et au débogage il met en évidence la linge 22
    Cordialement

  18. #18
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Oups, au temps pour moi. C'était une façon de tester uniquement avec ton fichier. La ligne correcte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fich = Dir(Chemin & "\*.xls*")

  19. #19
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Points : 63
    Points
    63
    Par défaut
    ok,sauf que j'ai toujours l'erreur d'exécution'9' l'indice n'appartient pas à la sélection à la ligne 22, malgré la correction

    Cordialement

  20. #20
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Poste ta macro.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2013] Importer des données dans un autre classeur
    Par titoupoulpe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2014, 14h11
  2. importer des données dans Hyperfile
    Par krak70 dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 13/04/2007, 17h19
  3. [VBA-E]Récupérer des données dans différents classeurs
    Par christellec20 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/03/2007, 18h32
  4. Importer des données dans Excel
    Par denis finch dans le forum Excel
    Réponses: 2
    Dernier message: 28/09/2006, 18h27
  5. Importer des données dans sql server avec DELPHI ???
    Par moutanakid dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2004, 17h22

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