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 :

Importation de données issues d'un fichier en TDC vers un autre document excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut Importation de données issues d'un fichier en TDC vers un autre document excel
    Je souhaite importer des données d'un tableau croisé dynamique vers un autre document excel.

    J'utilise ce code (qui marche lorsque les données ne sont pas issues d'un TCD) :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    Sub Importer()
     
        Dim Chemin As String, Fichier As String, Fichier2 As String
     
        '
        Dim wkb As Workbook
        Dim shFrom As Worksheet
        Dim shTo As Worksheet
        Dim varTab As Variant
        '
        '
        Chemin = ThisWorkbook.Path & Application.PathSeparator
        Fichier = Dir("C:\Users\fetcheberry\Desktop\Répartition actifs.xlsx")
     
        ' pointeurs
        Set wkb = Workbooks.Open(Chemin & Fichier)
        Set shFrom = wkb.Worksheets("TCD Actifs")
        Set shTo = ThisWorkbook.Worksheets("Répartition")
     
        Application.ScreenUpdating = False
     
    '    With Workbooks.Open(Chemin & Fichier)
    '    Range("A2").Select
    '    Range(Selection, Selection.End(xlDown)).Select
    '    Range(Selection, Selection.End(xlToRight)).Select
    '    Selection.Copy
    '    ThisWorkbook.ActiveSheet.Range("K1").PasteSpecial Paste:=xlPasteValues
    '    .Close savechanges:=False
    '    End With
     
        varTab = shFrom.Range(shFrom.Range("A2"), shFrom.Range("A2").End(xlDown))
        shTo.Range("A1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("B2"), shFrom.Range("B2").End(xlDown))
        shTo.Range("B1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("C2"), shFrom.Range("C2").End(xlDown))
        shTo.Range("C1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
    varTab = shFrom.Range(shFrom.Range("D2"), shFrom.Range("D2").End(xlDown))
        shTo.Range("D1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
       varTab = shFrom.Range(shFrom.Range("E2"), shFrom.Range("E2").End(xlDown))
        shTo.Range("E1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("F2"), shFrom.Range("F2").End(xlDown))
        shTo.Range("F1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("G2"), shFrom.Range("G2").End(xlDown))
        shTo.Range("G1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("H2"), shFrom.Range("H2").End(xlDown))
        shTo.Range("H1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("I2"), shFrom.Range("I2").End(xlDown))
        shTo.Range("I1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("J2"), shFrom.Range("J2").End(xlDown))
        shTo.Range("J1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("K2"), shFrom.Range("K2").End(xlDown))
        shTo.Range("K1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("L2"), shFrom.Range("L2").End(xlDown))
        shTo.Range("L1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("M2"), shFrom.Range("M2").End(xlDown))
        shTo.Range("M1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("N2"), shFrom.Range("N2").End(xlDown))
        shTo.Range("N1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
       varTab = shFrom.Range(shFrom.Range("O2"), shFrom.Range("O2").End(xlDown))
        shTo.Range("O1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
       varTab = shFrom.Range(shFrom.Range("P2"), shFrom.Range("P2").End(xlDown))
        shTo.Range("P1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("Q2"), shFrom.Range("Q2").End(xlDown))
        shTo.Range("Q1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("R2"), shFrom.Range("R2").End(xlDown))
        shTo.Range("R1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
        varTab = shFrom.Range(shFrom.Range("S2"), shFrom.Range("S2").End(xlDown))
        shTo.Range("S1").Resize(UBound(varTab), UBound(varTab, 2)) = varTab
     
     
     
     
    End Sub
    Cependant, même s'il n'y a pas de message d'erreur qui apparaît lors de l'exécution du code ci-dessus, je ne parviens pas à ramener ces données issues du TCD. Quel code devrais-je utiliser selon vous ?

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    Ton code me semble inutilement compliqué : on peut copier une plage en une fois...

    Pour copier un TCD
    TCD lui-même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shFrom.PivotTables("Nom du TCD").TableRange2.Copy Destination:=shTo.Range("A1")
    Son contenu seulement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    shFrom.PivotTables("Nom du TCD").TableRange2.Copy
    shTo.Range("A1").PasteSpecial Paste:=xlPasteValues

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Merci de ta réponse, 78chris

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    J'utilise ce code pour supprimer certaines colonnes. Cependant que faut-il que je rajoute pour supprimer les colonnes dont est présent sur la 2ème ligne de ma feuille le mot "PEA" ?

    Exemple :

    Colonne A..., B..., C.., D....,E..
    Ligne 1 :
    Ligne 2 : xxx..,xx..,PEA,xxx.,PEA

    Ce code me permettrait de suprimer les colonnes C et E dans cet exemple.

    J'ai pensé à utiliser l'enregistreur de macro, mais mes données peuvent changer d'un jour sur l'autre lorsque je vais les importer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro2()
     
        Range("O2").Select
        Selection.EntireColumn.Delete
        Range("S2").Select
        Selection.EntireColumn.Delete
        Range("J23").Select
    End Sub

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    Sur le TCD tu ne peux supprimer de ligne : il faut filtrer.

    Sur une plage standard il faut faire une boucle ou un find. Mettre le calcul sur manuel au début et rétablir ensuite car les suppression provoquent souvent des recalculs.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Du coup j'ai utilisé ce code comme tu m'as dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set shFrom = wkb.Worksheets("TCD Actifs")
        Set shTo = ThisWorkbook.Worksheets("Répartition")
    Ainsi, tu m'as permis d'importer le contenu seulement du TCD.

    Donc il m'est possible de supprimer des colonnes. Mais je souhaiterai avoir un code qui me permette de faire ceci :

    "J'utilise ce code pour supprimer certaines colonnes. Cependant que faut-il que je rajoute pour supprimer les colonnes dont est présent sur la 2ème ligne de ma feuille le mot "PEA" ?

    Exemple :

    Colonne A..., B..., C.., D....,E..
    Ligne 1 :
    Ligne 2 : xxx..,xx..,PEA,xxx.,PEA

    Ce code me permettrait de suprimer les colonnes C et E dans cet exemple.

    J'ai pensé à utiliser l'enregistreur de macro, mais mes données peuvent changer d'un jour sur l'autre lorsque je vais les importer"

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

Discussions similaires

  1. importer des données d'un document excel vers un autre document excel
    Par curieuseInformatique dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2011, 14h43
  2. Réponses: 0
    Dernier message: 22/01/2008, 10h33
  3. Réponses: 8
    Dernier message: 22/08/2006, 12h51
  4. Réponses: 2
    Dernier message: 07/03/2006, 00h31
  5. Import de données issues d'une base Paradox
    Par fgo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/03/2006, 08h33

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