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 :

Découper un fichier excel sur une même feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut Découper un fichier excel sur une même feuille
    salut le phorum

    je cherche une solution pour decouper un fichier de x colonnes x fois
    je m'explique, j'ai par exemple un tableau comportant 7 colonnes avec disons 15000 lignes
    je souhaite découper ce tableau en 6 positions
    donc diviser 15000 par 6 ce qui me donne 2500 lignes après découpage (attention le 6 peut varier, c'est une variable tout comme le nombre de colonne ou de ligne, rien n'est figé)
    en résultat je voudrais donc ceci

    col1 col2 col3 col4 col5 col6 puis juste derrière col1_2 col2_2 col3_2 col4_2 col5_2 col6_2 et ainsi de suite jusqu'à col1_6 col2_6 col3_6 col4_6 col_5_6 col6_6

    l'identifiant _x me permet ensuite d'identifier les différentes colonnes pour un traitement dans un outil d'imposition type publipostage

    merci pour une piste car ce que je vois sur le site c'est pour splitter un classeur en plusieurs onglets ou classeurs mais pas ce type d'opération

    merci d'avance

    david

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Points : 634
    Points
    634
    Par défaut
    Bonjour.

    Si tu as trouvé sur ce site de quoi splitter un classeur en plusieurs onglets ou classeurs .

    Tu est à 2 doigts de ce que tu souhaite.

    Commence par calculer le nombre d’Éléments que tu souhaite en sortie
    (feuilles ou classeurs, je n'ai pas compris ce que tu souhaite.

    Regarde un peu, puis indique nous ou tu bloque dans ton code.

    Bonne journée.

  3. #3
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Salut,

    Dans l'hypothèse que toutes tes lignes sont déjà importées dans une feuille unique, je te propose quelque chose comme ça :

    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
    Public Sub DécoupageEnColonnes()
    Dim NbDecoupe As Byte   ' Nombre de découpes désiré
    Dim NbRows As Long      ' Nombre total de lignes du fichier (sans l'entête)
    Dim NbCols As Integer   ' Nombre initial de colonnes du fichier
    Dim lgBloc As Long      ' Nombre de lignes dans le bloc à copier
    Dim StartCell As Range
     
    NbDecoupe = 7           ' A modifier selon ton plaisir !
    Set StartCell = Feuil5.Range("A1")  ' 1ère cellule en haut à gauche du tableau
     
    With StartCell.CurrentRegion
        NbRows = .Rows.Count - 1
        NbCols = .Columns.Count
    End With
    lgBloc = Int(NbRows / NbDecoupe)
    For i% = 1 To NbDecoupe         ' Couper/Coller des blocs de (lgBloc) lignes
        StartCell.Offset(1).Offset(i * lgBloc).Resize(lgBloc, NbCols).Cut StartCell.Offset(1, NbCols * i)
    Next i%
    For i% = 1 To NbDecoupe - 1     ' mise en places des entêtes
        For j% = 1 To NbCols
            StartCell.Offset(, (i% * NbCols) + j% - 1) = StartCell.Offset(, j% - 1) & "_" & i%
        Next j%
    Next i%
     
     
    End Sub
    Je pense que le code est suffisamment commenté pour être compréhensible...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    Merci à tous les deux
    Je teste le code et te fais un retour au plus vite
    Je sais déchiffrer un peu le vba
    C’est juste que je ne savais pas par où commencer
    Merci encore
    David

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    salut le phorum
    bon la macro de phil'oche est tout à fait au point
    j'ai juste modifier certaines données (en rouge) pour mon besoin
    il s'agissait d'arrondir sup sinon le découpage ne prenait pas les dernières lignes du fichier
    et d'ajouter un +1 pour commencer la numérotation des entêtes de colonne à 2
    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
    Public Sub DécoupageEnColonnes()
    Dim NbDecoupe As Byte   ' Nombre de découpes désiré
    Dim NbRows As Long      ' Nombre total de lignes du fichier (sans l'entête)
    Dim NbCols As Integer   ' Nombre initial de colonnes du fichier
    Dim lgBloc As Long      ' Nombre de lignes dans le bloc à copier
    Dim StartCell As Range
     
    NbDecoupe = 18           ' A modifier selon ton plaisir !
    Set StartCell = ActiveSheet.Range("a1") ' 1ère cellule en haut à gauche du tableau
     
    With StartCell.CurrentRegion
        NbRows = .Rows.Count - 1
        NbCols = .Columns.Count
    End With
    lgBloc = Application.WorksheetFunction.RoundUp((NbRows / NbDecoupe), 0)
    For i% = 1 To NbDecoupe         ' Couper/Coller des blocs de (lgBloc) lignes
        StartCell.Offset(1).Offset(i * lgBloc).Resize(lgBloc, NbCols).Cut StartCell.Offset(1, NbCols * i)
    Next i%
    For i% = 1 To NbDecoupe - 1     ' mise en places des entêtes
        For j% = 1 To NbCols
            StartCell.Offset(, (i% * NbCols) + j% - 1) = StartCell.Offset(, j% - 1) & "_" & i% + 1
        Next j%
    Next i%
     
     
    End Sub
    sinon j'aurais juste une petite question, a quoi servent les % derrière les variables i, j ?

    je n'ai plus qu'a ajouté un text box aller récupérer le fichier à decouper et un pour définir le nombre de découpe à réaliser

    encore merci à tous

    et bien évidemment à phil'oche

    david

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par munity Voir le message
    salut le phorum

    sinon j'aurais juste une petite question, a quoi servent les % derrière les variables i, j ?
    Ça, c'est un héritage des tous premiers BASIC. Cela désigne le type Integer.

    i% est équivalent à

    Et il en existe d'autres

Discussions similaires

  1. Compilation des plusieurs fichiers Excel sur une seule feuille
    Par Hamouda7542 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 17/01/2018, 17h39
  2. [XL-2010] Multi tableau sur une même feuille excel
    Par nath753 dans le forum Excel
    Réponses: 1
    Dernier message: 14/11/2016, 14h36
  3. Afficher le contenu d'un fichier Excel sur la même page
    Par AliochaBada dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2006, 17h43
  4. Réponses: 2
    Dernier message: 29/11/2006, 11h52
  5. Imprimer toutes les colonnes sur une même feuille
    Par Soulghard dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 12h10

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