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 deux colonnes distinctes d'une feuille et les coller l'une à côté de l'autre


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Copier deux colonnes distinctes d'une feuille et les coller l'une à côté de l'autre
    Bonjour,

    Je suis totalement novice en VBA et je m'y comprends donc pas vraiment. J'ai testé avec les macros mais cela ne fonctionnait pas comme je le veux. En effet je voulais que les colonnes A et B et C d'une feuile2 soit copié que la colonne A soit collé en colonne A de feuille 2 mais que la colonne B et C soit collé dans la feuille 3 dans la colonne 2 (le texte de C soit en dessous (mais meme cellule) du texte de B

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par walido78 Voir le message
    je voulais que les colonnes A et B et C d'une feuile2 soit copié que la colonne A soit collé en colonne A de feuille 2
    Un simple Copy suffira.
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)

    que la colonne B et C soit collé dans la feuille 3 dans la colonne 2 (le texte de C soit en dessous (mais meme cellule) du texte de B
    Il faudra faire une boucle For To ou While pour scruter toutes tes lignes sources.
    http://silkyroad.developpez.com/vba/boucles/

    Pour chaque ligne, tu fais une concaténation des valeurs des valeurs des deux colonnes avec l'opérateur & et tu places le résultat dans la cellule destination de la même ligne dans l'autre feuille avec un simple "Value =".
    https://docs.microsoft.com/fr-fr/off...rsand-operator

    Si tu veux que les deux éléments soient l'un sous l'autre dans la même cellule, il faut mettre entre eux un Chr(10).
    https://docs.microsoft.com/fr-fr/off...p/chr-function
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je te remercie pour ta réponse clair et précise mais j'aivais juste une question pour copié A dans A j'ai copié ce code du coup en l'adaptant
    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
    Sub Macro2()
        Sheets("Retenue").Select
        ' Find the last row of data
        FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
        ' Loop through each row
        For x = 3 To FinalRow
            ' Decide if to copy based on column D
            ThisValue = Cells(x, 1).Value
                Cells(x, 1).Resize(1, 33).Copy
                Sheets("AMT").Select
                NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                Cells(NextRow, 1).Select
                ActiveSheet.Paste
                Sheets("Retenue").Select
        Next x
     
    End Sub
    Mais cela me copie toute la ligne et non pas uniquement la colonne A
    Dernière modification par Invité ; 21/05/2019 à 20h01. Motif: Ajout des balises [CODE] mon code [/CODE] (bouton #)

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonjour walid la forum
    merci de baliser ton code (mettre entre # )
    essayer en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(x, 1).Resize(1, 33).Copy
    par
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci c'est super sympa,

    Je sais vous en avez marre :p; mais en fait dans la feuille de destination j'ai A3 jusqu'a A7 qu'est fusionné , A8 jusqu'a A12 Etc (parce qu'en fait 'ai besoin de place pour inscrire des infos du coup)

    Donc en fait ca me copie uniquement le dernier

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Je ne suis qu'un autodidacte donc mais connaissance sont limités mais j'ai vu les experts de ce super site conseillent fortement d'éviter les cellules fusionnées... Pour voir si je peux t'aider merci de joindre un fichier test de quelques lignes de données non confidentielles et sans macro et on verra ce qu'on peut faire ensemble
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par walido78 Voir le message
    j'ai copié ce code du coup en l'adaptant
    Tu es sûr que ce code a un rapport avec ta demande ???
    Parce que je ne vois pas l'intérêt de faire un Find pour copier l'intégralité d'une colonne identifiée vers une autre localisation fixe...

    Est-ce que tu as lu le lien que j'ai fourni pour la méthode Copy ?

    Citation Envoyé par walido78 Voir le message
    mais en fait dans la feuille de destination j'ai A3 jusqu'a A7 qu'est fusionné
    Mauvaise idée

    (parce qu'en fait 'ai besoin de place pour inscrire des infos du coup)
    Il n'est pas nécessaire de fusionner pour que le texte d'une cellule se poursuive sur les suivantes.
    Donc je persiste : mauvaise idée.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je vous met ci-joint le fichier.
    @Menhir, justement j'ai copié le deuxième code mais je pesne que faut adapter du coup le Premier code non ?
    Fichiertest.xlsm

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par walido78 Voir le message
    @Menhir, justement j'ai copié le deuxième code mais je pesne que faut adapter du coup le Premier code non ?
    Si tu penses qu'on peut faire du développement avec uniquement des copier/coller, c'est sûr que tu n'es pas rendu.

    Il faut essayer de comprendre les explications, éventuellement aidé par les exemples, pour développer son propre code.

    Je vous met ci-joint le fichier.
    Beaucoup de participants à ce forum n'ouvrent pas les fichiers joints.
    https://www.developpez.net/forums/d8...s-discussions/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Rebonour,

    Oui je sais justement en l'occurence j'avais enlever les Boucle if .
    Mais du coup qu'est ce que t'entends pas scruter les sources ?

    Cordialement

  11. #11
    Invité
    Invité(e)
    Par défaut
    J'ai testé avec mon propre code mais ca me dit erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Concat()
    Dim x As Integer
    Dim RET As Worksheet
    Dim AMT As Worksheet
     
    Set RET = Worksheets("Retenue")
    Set AMT = Worksheets("AMT")
    For x = 3 To 100000
    AMT.Cells(x, 2).Value = (RET.Cells(x, 2) & RET.Cells(x, 3))
     
    Next x
    End Sub
    Dernière modification par Invité ; 21/05/2019 à 20h01. Motif: Ajout des balises [CODE] mon code [/CODE] (bouton #)

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par walido78 Voir le message
    Oui je sais justement en l'occurence j'avais enlever les Boucle if .
    If n'est pas une boucle, c'est un test.

    Mais du coup qu'est ce que t'entends pas scruter les sources ?[/QUOTE]
    Une boucle permet de répéter une partie du code.
    Si tu fais une boucle en incrémentant une variable, cette variable prendra à chaque tour une valeur différente.
    Dans ton cas, il faudrait qu'elle prenne la valeur de tes lignes, ce qui te permettrait, à chaque tour de boucle, de traiter la ligne suivante.

    Citation Envoyé par walido78 Voir le message
    J'ai testé avec mon propre code mais ca me dit erreur:
    Petit détail liminaire : quand tu annonces que ton code renvoie une erreur, indique le message de cette erreur et la ligne de code désignée par le débugage. Ca facilite l'analyse du problème et la recherche de la solution.

    Tu déclares "x" comme un Integer et tu lui demandes d'aller jusqu'à 100000.
    Or les Integer ne peuvent pas dépasser 32000.
    Il faudrait le mettre de type Long.

    A part ça, ton code semble correct.

    Pour l'améliorer, il faudrait que tu adaptes la limite supérieure de ta boucle (le "100000").
    Regarde dans le second code du lien que j'ai donné pour "Copy", il y a une ligne de code qui montre comment rechercher la dernière ligne utilisée.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/02/2016, 10h59
  2. Réponses: 1
    Dernier message: 20/08/2015, 22h53
  3. Réponses: 4
    Dernier message: 28/12/2010, 16h40
  4. Réponses: 2
    Dernier message: 08/03/2010, 17h33
  5. Réponses: 1
    Dernier message: 24/05/2006, 15h25

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