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 :

VBA Problème copier-coller colonne dans selection sous forme de tableau [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut VBA Problème copier-coller colonne dans selection sous forme de tableau
    Bonjour à tous,

    Je suis néophyte et grâce à ce forum je progresse sur VBA.
    Malheureusement je n'ai pas trouvé réponse à mon problème c'est pourquoi je me lance sur ce forum.

    Je travail sur une base de donnée conséquente c'est pourquoi j'ai pris un exemple simple pour faciliter votre compréhension.

    D'une feuille F1 je veux sélectionner et copier colonne par colonne vers une feuille F2 en collant la sélection à la suite d'un tableau.
    Résultat la première colonne se colle au bon endroit mais les suivantes se trouvent décalées. Probablement parce que dans mon code je demande la dernière ligne non vide et que je suis en format tableau...

    Ci-joint mon exemple.

    Merci d'avance pour votre aide!

    Mathieu
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    c'est pourquoi je me lance sur ce forum.
    Dans ce cas là il serait bien avant de commencer, de lire les règles du forum, à commencer par celle-ci :
    https://www.developpez.net/forums/d8...s-discussions/

    Le mieux c'est d'expliquer littéralement de façon claire et exhaustive avec tous les tenants et aboutissants ainsi que le but à atteindre.

    là ce n'est pas assez clair …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    Bonjour,

    Désolé pour cette erreur...

    Je vais essayer d'être plus clair:

    Je cherche à copier certaines colonnes d'une feuille (F1) vers une seconde feuille (F2) dans le but d'alimenter une base de donnée au format tableau.
    Pour se faire j'utilise le code suivant:

    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
    Sub Copycolonne()
         Sheets("F1").Select
         Range("A2").Select
         Range(Selection, Selection.End(xlDown)).Select
         Selection.Copy
         Sheets("F2").Select
         dernonvide = Range("B1000").End(xlUp).Row + 1
         Cells(dernonvide, 2).Select
         ActiveSheet.Paste
         Sheets("F1").Select
         Range("B2").Select
         Range(Selection, Selection.End(xlDown)).Select
         Selection.Copy
         Sheets("F2").Select
         dernonvide = Range("E1000").End(xlUp).Row + 1
         Cells(dernonvide, 5).Select
         ActiveSheet.Paste
    End Sub

    Lorsque j’exécute cette macros la sélection range("A2") se place bien à la dernière ligne non vide colonne B de ma base de donnée en F2.
    En revanche la sélection range("B2") se place à la dernière ligne non vide de la colonne E mais en décalé vers le bas par rapport à la dernière ligne non vide de la colonne B.

    Tout fonctionnait jusqu'à ce que je passe ma base de donnée en F2 sous format tableau.

    Je cherche donc à ce que mes colonnes de la F1 se collent en F2 les une à côté des autres sans décalage des lignes.

    J'espère que c'est plus clair.
    Merci
    Mathieu

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    Pour simplement copier une ligne entière voilà une proposition :
    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
    Sub test()
    Dim j As Long
    Dim i As Long
    Dim k As Integer
    Application.ScreenUpdating = False
    With Sheets("F1")
    i = .Range("A" & Rows.Count).End(xlUp).Row
    For k = 2 To i
        If .Cells(k, 1) <> "" Then
        j = Sheets("F2").Range("A" & Rows.Count).End(xlUp).Row + 1
        .Cells(k, 1).EntireRow.Copy
        Sheets("F2").Activate
        Sheets("F2").Range("A" & j).Select
        ActiveSheet.Paste
        End If
    Next k
    End With
    Application.ScreenUpdating = True
    End Sub
    Mais attention deux clic égal à copier deux fois et ainsi de suite donc il faut chercher un clé unique tel que le matricule employé pour éliminer les doublons

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,

    Regardes le Edit dans ce post
    et vois comment c'est utilisé dans la discussion

    EDIT : maj dans le post suivant
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    Bonsoir RyuAutodidacte,

    Pas de place pour les débutants dans ce forum à ce que je vois...

    Au revoir...

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bien sûr que si.
    Je ne sais pas où tu as vu cela ?? Pour l'instant dans les transports en commun, je ne peux pas faire mieux.
    Mais sache que si il y a des choses que tu ne comprends pas, on peux expliquer et donner des exemples, mais je ne donne pas du tout fait.
    Ce que je t'ai donné permet de copier en une seule fois les colonnes voulues et dans l'ordre que tu le souhaites.
    Au lieux de copier coller en plusieurs fois avec des select.
    Est ce bien ce que tu avais en tête ???

    Et jusqu'à preuve du contraire je ne vais pas faire du Excel avec mon téléphone

    Edit : je viens de me rendre compte que je me suis trompé de lien dans mon post précédent, c'était celui-ci plutôt, donnant à des fonctions que j'ai créé :
    https://www.developpez.net/forums/d1...e/#post9746320
    Voilà ce qui peut arriver en écrivant de son téléphone
    Donc se sont les codes dans l'Edit en rouge qui sont à voir

    Exemple :
    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
    Function Index_Tab(VA As Variant, Entete As Byte, ParamArray Arr()) 'Les paramètres : 1-Variable tableau, 2-Entete (afin de la supprimer ou pas), 3-Array (colonne voulu de la variable tableau, ex : 4, 7, 9)
    Dim VB(), i&, j&
        ReDim VB(1 To UBound(VA) - Entete + 1, 1 To UBound(Arr) + 1)
        For i = Entete To UBound(VA)
            For j = 1 To UBound(Arr) + 1:    VB(i - Entete + 1, j) = VA(i, Arr(j - 1)):    Next
        Next
        Index_Tab = VB
    End Function
     
    Sub exemple()
    VA = Sheets(1).Range("A1:C3").Value
    DL = Sheets(1).Cells(Rows.Count, 1).End(xlUp)(2).Row
     
    VA = Index_Tab(VA, 1, 3, 1, 2)
     
    Sheets(1).Range("A" & DL).Resize(UBound(VA), UBound(VA, 2)).Value = VA
    End Sub
    A Adapter bien sûr …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

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

Discussions similaires

  1. Problème Copier Coller Colonne VBA
    Par Thomas A dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2016, 17h56
  2. [WD-2007] Problème copier/coller texte et mise en forme
    Par fubuntu dans le forum Word
    Réponses: 4
    Dernier message: 29/01/2014, 10h09
  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. [Joomla!] Créer une table et l'afficher dans Joomla sous forme de tableau
    Par sago974 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 23/02/2009, 16h34
  5. Réponses: 2
    Dernier message: 31/03/2006, 11h29

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