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 :

macro copier colonnes en demandant lesquelles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut macro copier colonnes en demandant lesquelles
    Bonjour,

    Je débute en VBA, et je bloque sur une chose.


    je me suis fait une macro pour copier une liste de colonnes d'une feuille vers un autre. Lorsque je précise dans la macro quelles colonnes copié, pas de souci.
    Par contre je souhaiterais pouvoir rendre le choix des colonnes à copier interactif (en demandant lors de l'exécution de la macro quelles colonnes copier).

    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
     
    Sub decla_var()                   ' macro pour demander le workbook, la sheet_source et destination, ainsi que les colonnes que la personne souhaite copier
    wb = InputBox("Sur quel fichier voulez-vous travaillez ? :")
    sh_s = InputBox("quelle est la feuille source ? :")
    sh_d = InputBox("quelle est la feuille destination ? :")
    choix_colonnes = InputBox("quelles colonnes souhaitez-vous copier (séparer chaque colonne par ", "une virgule) ? :")
    End Sub
     
    Sub copie_colonnes()
    Dim col                                                         ' col : colonne source
    Dim i As Integer
     
    Workbooks(wb).Activate                                          ' on se place sur le fichier concerné
    Sheets.Add after:=Sheets(Sheets.Count)                          ' ajouter une nouvelle feuille à la fin
    ActiveSheet.Name = sh_d                                         ' on renomme la nouvelle feuille avec la valeur saisie précédemment
    Sheets(sh_s).Select                                             ' on se place sur la feuille source
    i = 1
     
    For Each col In Array(choix_colonnes)
        Columns(col).Copy Destination:=Sheets(sh_d).Cells(1, i)     ' on copie la colonne vers la nouvelle feuille
        i = i + 1                                                   ' on incrémente i pour que le prochain copier soit fait sur la colonne suivante
    Next
     
    Do While (Workbooks(wb).Sheets(sh_d).Range("A1") = "")          ' tant que A1 est vide, on appel la macro de suppr de ligne
        Call del_line(wb, sh_d, "1")                                ' appel de la macro suppr de ligne
    Loop
     
    End Sub
     
    Sub test_temp()                   ' la macro pour mon test temporaire
    Call decla_var
    Call copie_colonnes
     
    End Sub
    Je vois bien que le souci vient du fait que la variable choix_colonnes ne prend pas une valeur correcte ("AO,B,D" lorsque je saisi dans le champ de saisie AO,B,D)
    Mais je ne vois pas comment je pourrais faire

    Est-ce que quelqu'un pourrait m'aider ?

    Merci,

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    un départ, pour 1ère procédure
    déjà, déclarer les variables, ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Dim Wb As String
    Dim sh_s As String
    Dim sh_d As String
    Dim choix_colonnes As Range
    Sub decla_var()
    ' macro pour demander le workbook, la sheet_source et destination, ainsi que les colonnes que la personne souhaite copier
     
    Wb = InputBox("Sur quel fichier voulez-vous travaillez ? :")' penser à ajouter l'extension
    sh_s = InputBox("quelle est la feuille source ? :")
    sh_d = InputBox("quelle est la feuille destination ? :")
    'ci-dessous, il suffit de sélectionner à la souris
    Set choix_colonnes = Application.InputBox("quelles colonnes souhaitez-vous copier (Appuyer sur Ctrl pour colonnes non adjacentes:", Type:=8)
    End Sub
    après trop imprécis
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    ça ne marche pas car il y a des fusions sur la feuille_source, donc dès que j'essaie de sélectionner une colonne, il me prend tout le tableau.

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Bonjour,

    Et quel doit être le résultat concernant les cellules fusionnées?
    Prendre en compte la valeur ou non? Les recréer dans la feuille de résultat?

    On le répète assez souvent mais...
    Les cellules fusionnées sont la bête noire de VBA.

Discussions similaires

  1. [XL-2007] Macro copier/coller colonnes de dimensions variables
    Par wamkey dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2014, 04h06
  2. [XL-2010] Macro copier des liens hypertexte sur une colonne
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 04/06/2013, 15h30
  3. [XL-2007] Macro Copier Colonne
    Par Coco_O dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2011, 15h42
  4. Réponses: 1
    Dernier message: 11/02/2011, 11h44
  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