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 :

Copier plusieurs onglets XLS vers un seul onglet XLSX [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Par défaut Copier plusieurs onglets XLS vers un seul onglet XLSX
    Bonjour

    Je rencontre un petit dilemme sur Excel.
    J'ai un export AS400 au format xls (pas de possibilité d'écrire en xlsx).
    Le nombre de lignes étant assez conséquent, il me créé dans ce fichier plusieurs onglets de 65536 lignes avec en première ligne les libellés propre à mon export (titre des colonnes)

    Je cherche une possibilité via VBA de :
    - Analyser ce fichier d'export XLS afin de savoir combien d'onglets sont créés
    - de copier le contenu de chaque onglet du fichier XLS
    - de coller ce contenu dans un fichier XLSX en ne mettant que la ligne de libellés 1 fois tout en haut (sans reprendre à chaque copie la ligne de libellé des onglets suivants sinon il y aura dans l'onglet du fichier xlsx en 65537 une ligne de libellé et ainsi de suite)

    Est-ce possible ?
    J'espère avoir été clair, pas évident d'expliquer mon besoin

    Merci par avance pour vos réponses

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai pas testé avec 65536 lignes mais ci-joint code
    (Code à mettre dans un fichier tiers qui permet d'ouvrir le fichier issu d'AS400 et de créer un nouveau fichier xlsx nommé BD)
    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
    Sub Transfert()
    Dim LastLig As Long, NewLig As Long
    Dim Suivants As Boolean
    Dim Fichier As Variant
    Dim Wbks As Workbook
    Dim Ws As Worksheet
     
    Application.ScreenUpdating = False
    Fichier = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Ouvrir le fichier xls issu de l'AS400")
    If Fichier <> False Then
        Set Wbks = Workbooks.Open(Fichier)
        With Workbooks.Add(1)
            With .Worksheets(1)
                For Each Ws In Wbks.Worksheets
                    If Not Suivants Then
                        Ws.Rows(1).Copy .Range("A1")
                        NewLig = 2
                    Else
                        NewLig = NewLig + LastLig - 1
                    End If
                    If NewLig <= .Rows.Count Then
                        LastLig = Ws.Cells(Ws.Rows.Count, "A").End(xlUp).Row
                        If LastLig = 1 Then LastLig = Ws.Rows.Count
                        Ws.Rows("2:" & LastLig).Copy .Range("A" & NewLig)
                        Suivants = True
                    Else
                        Suivants = False             'réutilisée pour savoir si le feuille xlsx a inclue toutes les données
                    End If
                Next Ws
            End With
            Application.DisplayAlerts = False
            .SaveAs Filename:=Wbks.Path & "\BD", FileFormat:=xlOpenXMLWorkbook
            Application.DisplayAlerts = False
            .Close
        End With
        Wbks.Close False
        Set Wbks = Nothing
        MsgBox "Traitement terminé " & IIf(Suivants, "avec succès", "partiellement")
    End If
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Par défaut
    Super cela fonctionne.

    Merci beaucoup

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

Discussions similaires

  1. [XL-2010] Regrouper ou copier plusieurs fichiers xls ou xlsx en un seul fichier
    Par janakka-horus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2015, 06h38
  2. [XL-2007] Copier plusieurs fichiers Excel dans un nouvel onglet à chaque fois
    Par OptionExplicitSu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2012, 17h48
  3. copier coller de ligne vers un autre onglet
    Par dinettes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2010, 17h43
  4. [PPT-2000] Excel->PPT-Copier données multiples XLS vers 1 seule diapositive PPT
    Par Nads21 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 09/06/2009, 20h24
  5. Copier plusieurs fichier txt dans un seul fichier
    Par vieri31 dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/05/2008, 13h57

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