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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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,

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, 20h27
  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, 00h44
  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, 14h43
  4. Copier/coller colonnes
    Par discretos39 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2009, 14h10
  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, 16h32

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