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

Excel Discussion :

Copier les colonnes d'une feuille dans une certaine ordre


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Points : 48
    Points
    48
    Par défaut Copier les colonnes d'une feuille dans une certaine ordre
    Bonjour,
    je voudrais faire une copie des colonnes d'une feuille dans un certain ordre dans une autre feuille.
    Voici la macro que j'ai fais :
    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
     
     
     
     
    Sub Table_AS_IS()
    '
    ' Table_AS_IS Macro
    ' Création de la table AS_IS
    '
     
    '
     
        'Si la feuille table AS_IS n'existe pas, elle est créée et est nommée "table AS_IS"
        If Not (FeuilleExiste("table AS_IS")) Then
            Sheets.Add
            ActiveSheet.Name = "table AS_IS"
        End If
        Worksheets("table AS_IS").Select
        'Sinon(si elle existe déjà),on efface tous ce qui est dans les colonnes A jusqu\'à Q'
        Worksheets("table AS_IS").Range("A:Z").Clear
        Worksheets("Eric_Output_opti_AS_IS_TO_BE").Range("B:B,C:C,D:D,N:N,O:O,P:P,A:A,E:E,F:F,G:G,H:H,I:I,J:J,K:K,L:L,M:M").Copy Destination:=Worksheets("table AS_IS").Range("A1")
     
    End Sub
    Function FeuilleExiste(Nom As String) As Boolean
        On Error GoTo Err_FeuilleExiste
        FeuilleExiste = False
        FeuilleExiste = Not Worksheets(Nom) Is Nothing
    Err_FeuilleExiste:
    End Function
    Le problème c'est que les colonnes se remettent automatiquement dans l'ordre. J'aurais aimé avoir cette ordre : b,c,,d,n,o,p,a,e,f,g,etc

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    La routine CopyEntireColumnsTo ci-dessous fera l'opération de copie de l'ensemble des cellules d'une liste de colonne, vers une plage cible.

    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
    Sub Table_AS_IS()
        'Si la feuille table AS_IS n'existe pas, elle est créée et est nommée "table AS_IS"
        If Not (FeuilleExiste("table AS_IS")) Then
            Sheets.Add
            ActiveSheet.Name = "table AS_IS"
        End If
        Worksheets("table AS_IS").Select
        'Sinon(si elle existe déjà),on efface tous ce qui est dans les colonnes A jusqu\'à Q'
        Worksheets("table AS_IS").Range("A:Z").Clear
        Call CopyEntireColumnsTo(Worksheets("Eric_Output_opti_AS_IS_TO_BE"), _
                                 "B;D;N;O;P;A;E;F;G;H;I;J;K;L;M", _
                                 Worksheets("table AS_IS").Range("A1"))
     
    End Sub
    Function FeuilleExiste(Nom As String) As Boolean
        On Error GoTo Err_FeuilleExiste
        FeuilleExiste = False
        FeuilleExiste = Not Worksheets(Nom) Is Nothing
    Err_FeuilleExiste:
    End Function
     
    'Copie l'ensemble de donnée contenu dans une liste de colonne séparées par des ';' dans une plage cible <target> 
    Sub CopyEntireColumnsTo(wsSource, ByVal colslist As String, target As Range)
        If Right(colslist, 1) = ";" Then colslist = Left(colslist, Len(colslist) - 1)
        Dim cols() As String
        cols = Split(colslist, ";")
        Dim i As Integer
        For i = 0 To UBound(cols)
            wsSource.Range(wsSource.Cells(1, cols(i)), wsSource.Cells(Rows.Count, cols(i)).End(xlUp)).Copy destination:=target.Offset(0, i)
        Next i
    End Sub
    A+

  3. #3
    Membre du Club
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Points : 48
    Points
    48
    Par défaut
    Bonjour BlueMonkey,
    je vous remercie du temps que vous me consacrez.
    J'ai une erreur d'indice quand je tente d'executer votre macro.

    Pourriez-vous m'aider.

    bien à vous

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Il faut remplacer le nom de la feuille Eric_Output_opti_AS_IS_TO_BE par Feuil1 sur la ligne 10 du bout de code posté précédemment.

    A+.

    PS. : Pour info, le forum Excel contient un sous forum Macros et VBA.
    Les sujets discutant de problème de Macros ont d'avantage de chance de trouver une réponse dans ce sous-forum.

  5. #5
    Membre du Club
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    je m'étais tromper de feuille, votre mzacro marche super bien merci.
    Encore une fois merci

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Content que ça fonctionne comme souhaité
    A+

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  4. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  5. Insérer une feuille dans une feuille
    Par PsychedeChed dans le forum Excel
    Réponses: 2
    Dernier message: 07/02/2008, 14h01

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