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 qui copie une colonne selon son entête vers une autre colonne ayant la même [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Macro qui copie une colonne selon son entête vers une autre colonne ayant la même
    Bonjour!

    Je me débrouille plutôt bien en excel mais en VBA, c'est case départ.

    Je veux écrire une macro qui copie une colonne selon son entête (données créées par formule et variables) dans une autre colonne du fichier portant la même entête (si l'entête est "1", je veux que la sélection de données se recopie sous l'autre entête "1", une seule fois et en valeurs).

    La partie copier-coller.valeurs, ça va (merci enregistreur), c'est le volet test identifier la variable au haut de la colonne "données" et trouver la bonne entête dans mon range de destination qui ne jazz pas.

    Quelqu'un a une piste de solution?

    Merci!

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    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 : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après tes explications, il semble que tu auras une réponse dans cette contribution LookupLabelRange - Ajouter une colonne à une liste de données
    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

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    une solution est d'utiliser une collection pour mémoriser les entêtes de ta feuille résultat .. :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Explicit
    Dim cColDest As Collection
    Dim shDest As Worksheet
     
    '
    ' Mémorisation numéro de colonne
    '
    Sub InitCollection()
        Dim i As Integer
     
     
        Set shDest = ThisWorkbook.Worksheets("Feuil3") ' A ADAPTER
     
        Set cColDest = New Collection
     
        i = 1
        While shDest.Cells(1, i) <> ""
            On Error Resume Next
                cColDest.Add i, shDest.Cells(1, i)
                If Err.Number <> 0 Then 'On considére qu'il n'y as pas de doublon dans colone dest
                    Debug.Print "Doublon colonne " & i & " : " & shDest.Cells(1, i)
                End If
                i = i + 1
         Wend
     
    End Sub
    '
    ' Dépose valeur dans feuille destination
    '
    Function PoseValeur(stEntete As String, MaValeur) As Boolean
     Dim iC As Integer
     Dim iDerLigne As Long
        On Error Resume Next
        iC = cColDest(stEntete)
     
        If iC = 0 Or Err.Number <> 0 Then
            Debug.Print "Erreur Entête " & stEntete & " Introuvable"
            PoseValeur = False
            Exit Function
        End If
        On Error GoTo 0
     
        iDerLigne = shDest.Cells(shDest.Rows.Count, iC).End(xlUp).Row + 1
        shDest.Cells(iDerLigne, iC).Value = MaValeur
         PoseValeur = True
    End Function
     
     
    '
    ' FONCTION DE TEST ....
    '
    Sub MaMAcro()
        InitCollection
        Debug.Print PoseValeur("Nom", "AjoutDansColNOM")
        Debug.Print PoseValeur("Adresse", "AjoutDansColonne  Adresse")
     
     
    End Sub

  4. #4
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci!

    J'ai regardé les deux solutions, mais cela me semble bien complexe pour une opération semblable (et pour mon niveau, mettons l'orgueil de côté).

    Ma colonne avec les données est toujours la même (disons P), avec une entête numérotée 1 à 12 (nombre généré par une autre feuille) et selon ce nombre, je dois aller la recoller dans une des 12 colonnes destinations, elles aussi numérotées 1 à 12 (disons de C à N).

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste à adapter :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Entete As Integer
     
        'pour le test
        Entete = 3
     
        'la plage d'entêtes en définie dans la première ligne de la feuille "Feuil2"
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
     
        End With
     
        'recherche l'entête de colonne
        Set Cel = Plage.Find(Entete, , xlValues, xlWhole)
     
        'si trouvée, copie
        If Not Cel Is Nothing Then
     
            Worksheets("Feuil1").Columns(Entete).Copy Cel
     
        End If
     
    End Sub
    Hervé.

  6. #6
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bon, en étudiant tout ça, je devrais pouvoir bricoler quelque chose!

    Je vous remercie tous! :-)

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

Discussions similaires

  1. [XL-2010] Convertir le contenu d'une colonne et le déplacer vers d'autres colonnes
    Par CaroBibb dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/02/2015, 20h33
  2. [WD-2007] macro qui copie une cellule dans une autre cellule d'un autre tableau
    Par jmperieras dans le forum VBA Word
    Réponses: 2
    Dernier message: 17/05/2013, 21h05
  3. Réponses: 0
    Dernier message: 25/03/2013, 15h39
  4. [XL-2000] Modifier une macro qui copie/colle vers une autre feuille
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/05/2010, 00h02
  5. Macro qui copie une page et la modifie
    Par craac dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/10/2007, 11h14

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