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 coller colonne en fonction d'un condition en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut Copier coller colonne en fonction d'un condition en vba
    Bonjour,

    Ca fait un petit moment que je cherche une solution à mon problème peut être que vous pourrez me donner des solutions/ des idées?

    Alors voila :

    J'ai un tableau cf ci joint Classeur1.xls

    et je voudrais que la macro me crée 4 fichiers/classeurs pour les groupes : 2, 7, 9 et 12 (ce sont les chiffres de la première ligne) qui contient :
    - pour le 1er fichier : les colonnes A, B et C
    - pour le 2eme fichier : les colonnes A, B et D
    - pour le 3eme fichier : les colonnes A, B et E
    - pour le 4eme fichier : les colonnes A, B et F

    Merci par avance de vos idées, de votre aide =)

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    à adapter, je n'ai pas ouvert ton fichier

    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
    Sub ioi()
    Dim Wb As Workbook
    Dim Sh As Worksheet
     
    Sh = ThisWorkbook.Worksheets("MaFeuilleSource")
    Set Wb = Workbooks.Add
     
    With Wb
        Sh.Columns(1).Resize(Rows.Count, 3).Copy .Worksheets(1).Range("A1")
        .SaveAs ("CheminComplet+Nom de Fichier + extension") ' fichier avec colonne A,B,C
        Sh.Columns(4).Copy .Worksheets(1).Range("C1")
        .SaveAs ("CheminComplet+Nom de Fichier + extension") ' fichier avec colonne A,B,D
        Sh.Columns(5).Copy .Worksheets(1).Range("C1")
        .SaveAs ("CheminComplet+Nom de Fichier + extension") ' fichier avec colonne A,B,E
        Sh.Columns(6).Copy .Worksheets(1).Range("C1")
        .SaveAs ("CheminComplet+Nom de Fichier + extension") ' fichier avec colonne A,B,F
        .Close
    End With
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Tout d'abord un grand merci d'avoir répondu à ma question ça me donne un code, des idées...

    Cepandant, j'ai plus de 40 fichiers à faire de cette façon...

    Est ce que vous auriez pas une méthode un plus automatique avec une boucle ?

    Merci encore de votre aide...

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans pattern, pas possible de faire une boucle sans passer par des tableaux de repérage des colonnes

    au vu de ton exemple, tu prend toujours la colonne A et B, et tu y colles une autre colonne ? ( premier fichier = colonne C, second fichier = colonne D etc...)

    si tel est le cas, 40 fichiers sur ce pattern :

    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
    Sub ioi()
    Dim Wb As Workbook
    Dim Sh As Worksheet
     
    Sh = ThisWorkbook.Worksheets("MaFeuilleSource")
    Set Wb = Workbooks.Add
     
    With Wb
     
        ' premier fichier
        Sh.Columns(1).Resize(Rows.Count, 3).Copy .Worksheets(1).Range("A1")
        .SaveAs ("CheminComplet+Nom de Fichier + extension")
     
        ' les 40 suivants
        For i = 4 To 43
            Sh.Columns(i).Copy .Worksheets(1).Range("C1")
            .SaveAs ("CheminComplet+Nom de Fichier + extension") ' fichier avec colonne A,B,D
        Next i
     
        .Close
    End With
     
    End Sub
    il reste à gérer le nom des classeurs maintenant (tu peux utiliser l'indice i de la boucle pour avoir des noms différents par exemple)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Merci encore pour ton aide !!!

    J'ai commencé à faire un tableau de ce style :

    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
    Global tablo(39) As Variant
    Global i As Integer
     
    Sub Creation ()
     
          Dim x As Integer
    ....
     
    Range("C2").Select
        i = 0
     
        Do While ActiveCell.Value <> ""
            If ActiveCell.Value <> ActiveCell.Offset(0, 1).Value Then
                tablo(i) = ActiveCell.Value
                i = i + 1
            End If
            ActiveCell.Offset(0, 1).Select
        Loop
    ...end sub
    Donc la je récupère les valeurs des groupes 2, 7, 9 et 12

    et je me demandais si on peux pas lui dire si à chaque fois que tu vois ces chiffres dans la 3ème ligne tu me crées un fichier différent qui copie/colle les chiffres relatif aux groupes 2,7,9 et 12...Classeur1.xls

    Mon fichier de départ à un peu changer...

    donc en faite, le résultat souhaité est 4 fichiers avec 2 onglets ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Personne ne voit comment on peut faire (peut c'est pas possible) où vous ne comprennez pas mon problème?

    Merci de votre réponse,

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme beaucoup je n'ouvre pas les classeurs donc si tu n'expliques pas l'organisation de tes données avec éventuellement une image accompagnant tes explications, tu limites en effet le nombre de réponses.
    Au vu de ta question, j'aurais proposé une solution avec filtre élaborés d'excel mais sans explications complémentaires difficile de répondre.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Ok merci de ta réponse,

    Je vais essayer d'être plus compréhensible...

    J'ai un fichier avec 2 onglets.
    - Dans le 1er onglet : j'ai 6 colonnes qui ont pour nom : Date, Total, 2, 7, 9 et 12
    - Dans le 2eme onglet, j'ai 11 colonnes quit ont pour nom : Date max min 2max 2min 7max 7min 9max 9min 12max 12min

    Je voudrais créer 4 fichiers : fichiers_2, fichiers_7, fichiers_9 et fichiers_12.

    Dans le fichier_2 , dans le 1er onglet il y aurait comme colonnes Date Total 2
    dans le 2eme onglet il y aurait comme colonnes Date max min 2max 2min

    Dans le fichier_7 , dans le 1er onglet il y aurait comme colonnes Date Total 7
    dans le 2eme onglet il y aurait comme colonnes Date max min 7max 7min


    J'ai réussi a crée mes 4fichiers mais je n'arrive pas à récupere les colonnes ...

    Merci de votre aide

Discussions similaires

  1. [XL-2003] Copier/Coller colonnes classeur 1 à 6 vers classeur 7
    Par webdo87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/08/2012, 21h27
  2. copier/coller colonne excel vers colonne table sql
    Par jalalnet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/09/2011, 01h44
  3. copier-coller colonne sans mise en forme
    Par dandy87 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/12/2010, 15h43
  4. Copier/coller colonnes
    Par discretos39 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2009, 15h10
  5. Macro copier/coller colonne- insérer nouvelle colonne
    Par rembliec dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/11/2007, 17h32

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