Copier coller à la suite d'une même colonne

Bonjour à tous ,

Je souhaiterai réaliser un copier-coller d'une colonne d'un classeur vers un autre classeur. Jusque là tout va bien, cependant lors du collage j'aimerais que la colonne copiée qui contient 24 cases se colle sur les 24 première cases d'une colonne du classeur 2 (logique).

Mais après mon programme va chercher les 24 autres cases du 2eme fichiers et j'aimerais qui les collent sur la même colonne à la suite sur le classeur 2 c'est à dire au niveau des cases 25 à 48 et ainsi de suite sachant que j'ai beaucoup de fichiers. Pour l'instant, mon code pas très optimisé récupère la colonne qui m'interesse et la sélectionne mais c'est la partie Coller qui me bloque.

Si une âme charitable pouvait me venir en aide, merci d'avance.

C'est donc dans le fichier 2014... que la colonne va se créer et être sélectionner et dans classeur 1 qu'elle serait coller.

J'espère que l'explication de mon problème est clair sinon je reexplique sans problème.

Sub ouvrir_fichiers()
'l'instruction ChDir permet de se positionner
'sur un répertoire précis
ChDir "C:\Users\t\Desktop\test"
monfichier = Dir("*.xlsm")
While monfichier <> ""
Workbooks.Open monfichier
Dim i As Integer
'Je réalise des opérations pour faire apparaître la colonne que je souhaite copier
Cells(3, 11) = Cells(14, 13)
Cells(4, 11) = Cells(26, 13)
Cells(5, 11) = Cells(38, 13)
Cells(6, 11) = Cells(50, 13)
Cells(7, 11) = Cells(62, 13)
Cells(8, 11) = Cells(74, 13)
Cells(9, 11) = Cells(86, 13)
Cells(10, 11) = Cells(98, 13)
Cells(11, 11) = Cells(110, 13)
Cells(12, 11) = Cells(122, 13)
Cells(13, 11) = Cells(134, 13)
Cells(14, 11) = Cells(146, 13)
Cells(15, 11) = Cells(158, 13)
Cells(16, 11) = Cells(170, 13)
Cells(17, 11) = Cells(182, 13)
Cells(18, 11) = Cells(194, 13)
Cells(19, 11) = Cells(206, 13)
Cells(20, 11) = Cells(218, 13)
Cells(21, 11) = Cells(230, 13)
Cells(22, 11) = Cells(242, 13)
Cells(23, 11) = Cells(254, 13)
Cells(24, 11) = Cells(266, 13)
Cells(25, 11) = Cells(278, 13)
Cells(26, 11) = Cells(290, 13)

For i = 3 To 26
 Cells(i, 12) = Cells(i + 1, 11) - Cells(i, 11)
 Next i
 Cells(26, 12) = 0
 Cells(25, 12) = 0
 ActiveSheet.Range("L3:L26").Select

Range("L3:L26").Select
    Application.CutCopyMode = False
    Selection.Copy
'C'est donc ici que je ne sais plus quoi faire
????????????
???????????
??????????
ActiveWorkbook.Close savechanges:=True
monfichier = Dir()

Wend
End Sub
33test.xlsm (8.70 Ko)

Bonjour

thibowf a écrit :

Mais après mon programme va chercher les 24 autres cases du 2eme fichiers...

Pour moi, à partir de là, ce n'est plus très clair.

Je sais ce qu'est un classeur : c'est un fichier Excel

Alors quand tu parles des 24 autres cases du 2eme fichier...je suis perdu !

Si tu veux parler de feuille, fais-le. C'est équivalent à onglet... Mais là...

Et puis, pour être sûr de bien te faire comprendre, donne un exemple en indiquant, sur tes deux documents, l'orignine et la destination des cellules copiées et collées...

A te relire.

Bye !

Re,

Alors sans soucis je vais essayer d'être plus clair merci pour ta réponse rapide en tt cas:

Je dispose de plusieurs fichiers (=classeur pour moi) qui porte chacun les noms :

2014_01_01.xlsm

2014_01_02.xlsm

2014_01_03 .. etc

et qui sont dans un répertoire

et c'est donc dans ces classeurs que se trouve la colonne (ds la feuil1) que je sélectionne et que je cherche à coller sur un nouveau classeur sur une feuille.

Donc du coup, la macro fait son travail, elle ouvre et ferme successivement chacun des classeurs du répertoire et me sélectionne et copie les 24 cases qui m’intéressent.

Donc si on fait étape par étape: la macro ouvre le classeur 2014_01_01.xlsm , fait des opérations et me sélectionne les 24 cases d'une colonne.

Ensuite, j'aimerais que ces cases se collent dans une feuille d'un nouveau classeur que j'ai nommé test.xlsm pour ce post, (donc jusque la le problème c'est juste copier les cellules d'un classeur pour les coller dans un autre.)

Mais pour la Deuxième etape, ma macro ouvre le classeur 2014_01_02.xlsm sélectionne la colonne avec les 24 cases qui m'interressent jusque là aucun changement MAIS là j'aimerai que ces 24 cases se collent dans le classeur test.xlsm mais pas dans une nouvelle colonne mais dans la même colonne que précédemment donc à la suite .

Et que cette opération se réalise pour chacun des classeurs compris dans mon répertoire.

Ai-je été plus clair ?

Bonjour

Un essai à tester

Pour me simplifier la vie et que ça marche, j'ai mis le fichier test dans le même dossier que les autres : à toi de voir avec les Dir

Cela te convient-il ?

Bye !

97thibowf.zip (93.71 Ko)

Bonjour !

Merci pour ta réponse, alors effectivement j'ai changé les chemins et les extensions et je crois que dans le code il manquait un petit "End If" avant le "loop". Du coup, je l'ai ajouté et le programme compile mais je l'ai fait plusieurs fois et à chaque fois mon excel plante..

Tu penses que c'est mon ordi qui supporte pas ce traitement ? ou p-e qu'il y a autre chose ?

Merci de ton implication

thibowf a écrit :

Tu penses que c'est mon ordi qui supporte pas ce traitement ? ou p-e qu'il y a autre chose ?

Il y a sûrement quelque chose.

Tu devrais faire tourner la macro pas à pas pour voir où ça ne va pas :

* tu cliques sur le titre de la macro puis tu tapes sur la touche F9

* tu tapes sur la touche F8 autant de fois que nécessaire pour exécuter les instructions une après l'autre.

Et tu devrais trouver.

Dis-moi le résultat...

Bye !

Alors apres quelques modif au niveau des chemins cad en faisant pas à pas cela à l'air de fonctionner.

Néanmoins dès que j'essaye de le lancer tout d'un bloc mon excel plante..

Donc je te remercie grandement pour ton aide, au moins maintenant je vois le principe

Mais étant débutant serait il possible en quelques mots de m'expliquer cette ligne s'il te plait pour que je puisse m'améliorer :

lgn = f.Range("A" & Rows.Count).End(xlUp)(2).Row

Merci

Et pour ceux qui serait intéressé par ce post je vous joins le code final :

  Option Explicit

Dim monfichier, chemin, f As Worksheet, classeur As Workbook, lgn&

Sub ouvrir_fichiers()
    'l'instruction ChDir permet de se positionner
    'sur un répertoire précis
    ChDir "C:\Users\t\Desktop\test"
    'chemin = ThisWorkbook.Path & "\"
    Set f = ActiveSheet
    monfichier = Dir("*.xlsm")
    'monfichier = Dir(chemin & "*.xls*")

    Do While Len(monfichier) > 0
        If monfichier <> ThisWorkbook.Name Then
            Set classeur = Workbooks.Open(monfichier)
            Dim i As Integer
            'Je réalise des opérations pour faire apparaître la colonne que je souhaite copier
            Cells(3, 11) = Cells(14, 13)
            Cells(4, 11) = Cells(26, 13)
            Cells(5, 11) = Cells(38, 13)
            Cells(6, 11) = Cells(50, 13)
            Cells(7, 11) = Cells(62, 13)
            Cells(8, 11) = Cells(74, 13)
            Cells(9, 11) = Cells(86, 13)
            Cells(10, 11) = Cells(98, 13)
            Cells(11, 11) = Cells(110, 13)
            Cells(12, 11) = Cells(122, 13)
            Cells(13, 11) = Cells(134, 13)
            Cells(14, 11) = Cells(146, 13)
            Cells(15, 11) = Cells(158, 13)
            Cells(16, 11) = Cells(170, 13)
            Cells(17, 11) = Cells(182, 13)
            Cells(18, 11) = Cells(194, 13)
            Cells(19, 11) = Cells(206, 13)
            Cells(20, 11) = Cells(218, 13)
            Cells(21, 11) = Cells(230, 13)
            Cells(22, 11) = Cells(242, 13)
            Cells(23, 11) = Cells(254, 13)
            Cells(24, 11) = Cells(266, 13)
            Cells(25, 11) = Cells(278, 13)
            Cells(26, 11) = Cells(290, 13)

            For i = 3 To 26
                Cells(i, 12) = Cells(i + 1, 11) - Cells(i, 11)
            Next i
            Cells(26, 12) = 0
            Cells(25, 12) = 0
'les actions terminées je récupere la colonne qui m'interesse 
            ActiveSheet.Range("L3:L26").Select

            Range("L3:L26").Select
            'Application.CutCopyMode = False
            'C'est donc ici que je ne sais plus quoi faire
            '????????????
            '???????????
            '??????????
            'ActiveWorkbook.Close savechanges:=True
          'la solution donné par gmb ! pour coller à la suite les données sur une même colonne
            lgn = f.Range("A" & Rows.Count).End(xlUp)(2).Row
            Selection.Copy f.Range("A" & lgn)
            classeur.Close True
        monfichier = Dir()
        End If
    Loop
End Sub
thibowf a écrit :

serait il possible en quelques mots de m'expliquer cette ligne

lgn = f.Range("A" & Rows.Count).End(xlUp)(2).Row

f est la variable à qui on a donné le nom de la feuille active au moment où celle-ci était la feuille de départ de la macro

Rows.count est une instruction qui donne le nombre de lignes de la feuille concernée c’est-à dire 1 085 576. Dans les versions Excel de 2013 et d’avant, cette instruction n’existait pas et il fallait mettre 65 536.

f.Range("A" & Rows.Count) donne la cellule de la toute dernière ligne de la colonneA de la feuille f, c’est-à-dire la cellule A1085576

f.Range("A" & Rows.Count).End(xlup) donne la cellule que l’on atteint à partir de la cellule du bas du tableau en colonne A et quel l’on remonte vers le haut comme si l’on faisait ‘’Ctrl’’ et ‘’flèche vers le haut’’

f.Range("A" & Rows.Count).End(xlup)(2) donne la cellule qui est juste au-dessous de la précédente. Elle est donc vide.

f.Range("A" & Rows.Count).End(xlUp)(2).Row donne le numéro de cette ligne vide et que l’on attribue à la variable lgn

OK ?

Bye !

Oui je vois très bien.

Merci beaucoup pour vos explications !

Bonne continuation

Rechercher des sujets similaires à "copier coller suite meme colonne"