VBA Coller à la suite

Bonjour

Je recois toutes les semaines un classeur comportant X lignes. je souhaiterais donc copier les colonnes de mon choix (pour l'exemple on dira la colone Z, AE et BR) et les coller dans un autre fichier mais à la suite de se qui a été collé la semaine passée. En quelques sorte je vais créer un fichier global.

Je glisse mon début de macro. Je précise tout de suite que ce début de macro ouvre tous les classeurs se trouvant dans un fichier, se qui est du au faite que je ne sais pas le nom qu'aura le fichier à placer dedans et il faut que ça reste comme ca (je ne serais pas le seul utilisateur)

Sub Ouvrir_Fichiers()

' Permet d'ouvrir plusieurs fichiers dans un répertoire

' GC Excel - 2011-11-16

Dim wb As Workbook, wb2 As Workbook

Dim sPath As String, sFilename As String

Dim NbRows As Integer, rg As Range

Set wb = ThisWorkbook

Application.ScreenUpdating = False

sPath = "C:\Users\Utilisateur\Desktop\Suivi Véolia\RT Véolia\" 'Répertoire

sFilename = Dir(sPath & "*.xls*") 'ouvre tous les fichiers .xls*

Do While Len(sFilename) > 0

Set wb2 = Workbooks.Open(sPath & sFilename) 'Ouvre le fichier

'

' Votre code ici

'

'

wb2.Close 'Fermer le fichier

sFilename = Dir

Loop

Application.ScreenUpdating = True

End Sub

POur le code nous dirons que le fichier ou aller coller les colones a pour nom GLOBAL feuille RT et la colone Z va en A , AE va en C et BR va en E. Dans ce début de code il ne parle pas d'ouvrir Se fichier global mais je sais le faire il me faut juste trouver le moyen de coller a la suite

Merci d'avance

Toujours là-dessus ! Les méthodes de travail absurdes et inefficaces ont décidément de l'avenir devant elles...

Malheureusement je fais avec se que jai et j'essaye de trouver des solutions avec se que jai sous la main. Je fais des macro nationalement tout le reste de la boite s'en servira donc jessaye de faire quelque chose qui facilitera la vie de ceux qui l'utilisent... personne pour m'aider du coup???

SVP si quelquuun pourrait me donner une piste ça m'aiderait bien car la je bloque et ne trouve rien sur le net . Je comptais par la même occasion acheter des livres pour apprendre le vba quelqu'un saurez quel livre est le plus complet ça m'évitera de venir demande

Merci à vous

VBA apporte des solutions dans un cadre clairement défini, il peut beaucoup apporter mais n'est d'aucun secours dès lors qu'il s'agit de définir et mettre en place le cadre dans lequel on pourra le faire opérer efficacement...

Merci pour cette réponse que ... je ne comprend pas du tout la vraiment je suis perdu . Je vois que beaucoup de gens font cette manipulation je ne comprend pas pourquoi il n'y a pas de solution il suffit de copier des colonies et les coller à la suite. Je pense prendre un bouquin se sera plus simple car des fois on a plus l'impression d'embêter les gens comme dans se cas dommage venant d'un forum

ce début de macro ouvre tous les classeurs se trouvant dans un fichier

D'abord un classeur Excel est un fichier, il ne peut donc se trouver dans un fichier ! Dès lors qu'il est enregistré sur un support, il se trouve dans un dossier ou répertoire (c'est la même chose, de même que classeur et fichier Excel c'est aussi une même chose).

se qui est du au faite que je ne sais pas le nom qu'aura le fichier à placer dedans

Là on est dans le prototype du problème qui n'existe pas !

Il faut toujours examiner la question à la source. Le fichier est reçu ! Avant il n'est pas là. Et pour l'avoir à traiter il faut le recevoir !

1re question : la réception, sous quelle forme ? par quel canal ? qui reçoit ? etc.

Du moment qu'on le reçoit, le fichier reçu est unique est identifié. S'il y problème à ce niveau, il se règle à ce niveau... soit à un niveau d'organisation interne de l'entreprise, et VBA n'a pas à y être mêlé !

2e question : le traitement dès réception par la personne qui reçoit serait la meilleure configuration, incontestablement...

Mais quelqu'un le reçoit ! Si ce n'est pas le receptionnaire qui le traite, ce dernier doit le mettre à disposition de celui qui traitera à un emplacement prédéfini...

Encore que l'on ne voit pas pourquoi le destinataire du fichier serait autre que la personne chargée de le traiter...

En tout état de cause, il s'agit toujours d'un problème d'organisation dans lequel VBA n'a rien à voir !

3e question : il faut savoir comment le fichier est reçu, par quel moyen ou support, ce qui ramène à la première question...

Par exemple, reçu par mail, on ne l'extrait que lors du traitement et l'on se trouve dans la situation de traitement dès réception ; sur un support quelconque, il peut y rester jusqu'à traitement et on est toujours dans la même situation ; par une voie de mise en disposition interne : un emplacement dédié est nécessaire, on doit pouvoir trouver ce fichier et seulement celui-là dans un emplacement prédéfini pour lui... On est toujours dans une question d'organisation préalable à tout traitement !

4e question : le traitement, il intervient soit à réception (ou réception différée comme on l'a vue) et la situation se présente : ouverture du fichier, il n'y a alors qu'à lancer le traitement sur le fichier qui vient d'être ouvert ! Soit le fichier se trouve à un emplacement, on lance le traitement qui commence par aller le chercher pour l'ouvrir, sans difficulté puisque l'emplacement est connu et qu'il est seul à s'y trouver !!

Si on n'est pas dans une de ces situations, c'est qu'il y a un probléme à régler en amont. Et il convient de le régler où il se pose, sous peine de gaspillage d'énergie dû à une organisation inefficace...

D'accord alors toutes les semaines nous recevons un classeurs Excel d'un client. Se client nomme toutes les semaines son classeur différemment. Cependant chaque classeur contient le même nombre de colonnes avec les même en-tête . Je souhaite donc faciliter au maximum l'opération dans le sens où peut importe l'utilisateur il lui suffirait de placer ce classeur dans un dossier puis d'un autre classeurExcel (qui contiendrais les macros) on actionnerait une action qui copierais les colonne voulues dans un fichier "global" (suite de copies de chaque semaines. Se fichier global me permettra d'alimenter un classeur annexe suivi financier et même temps serait une "sauvegarde" de l'activité sur l'année .

Je souhaiterais donc savoir comment coller ses lignes à la suite au fur et à mesure ...

J'avance donc seul et je me retrouve encore et toujours bloqué au même endroit:

Sub Ouvrir_Fichiers()

' Permet d'ouvrir plusieurs fichiers dans un répertoire

' GC Excel - 2011-11-16

Dim wb As Workbook, wb2 As Workbook, wb3 As Workbook

Dim sPath As String, sFilename As String

Dim NbRows As Integer, rg As Range

Set wb = ThisWorkbook

Application.ScreenUpdating = False

sPath = "C:\Users\Utilisateur\Desktop\Suivi Véolia\RT a traiter\" 'Répertoire

sFilename = Dir(sPath & "*.xls*") 'ouvre tous les fichiers .xls*

Do While Len(sFilename) > 0

Set wb2 = Workbooks.Open(sPath & sFilename) 'Ouvre le fichier

'

' Votre code ici

Set wb3 = Workbooks.Open(ThisWorkbook.Path & "\" & "Global" & "\" & "RT 2017.xlsx")

'Essais avec UNION mais ca ne marche pas

With wb2.Sheets("Feuil2")

Union(Range("A2:A500"), Range("G2:G500"), Range("J2:J500"), Range("K2:K500"), Range("L2:L500"), Range("V2:V500"), Range("X2:X500"), Range("Y2:Y500"), Range("Z2:Z500"), Range("AB2:AB500")).Copy _

wb3.Sheets("RT").Range("A:J").End(xlUp)(2)

End With

'Essais ligne par ligne ca marche mais les lignes pourraient être décalé et ca me l'amene Ligne 2 a chaque fois

wb2.Sheets("Feuil2").Range("A2:A500").Copy wb3.Sheets("RT").Range("A1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("G2:G500").Copy wb3.Sheets("RT").Range("B1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("J2:J500").Copy wb3.Sheets("RT").Range("C1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("K2:K500").Copy wb3.Sheets("RT").Range("D1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("L2:L500").Copy wb3.Sheets("RT").Range("E1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("V2:V500").Copy wb3.Sheets("RT").Range("F1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("X2:X500").Copy wb3.Sheets("RT").Range("G1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("Y2:Y500").Copy wb3.Sheets("RT").Range("H1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("Z2:Z500").Copy wb3.Sheets("RT").Range("I1").End(xlUp)(2)

wb2.Sheets("Feuil2").Range("AB2:AB500").Copy wb3.Sheets("RT").Range("J1").End(xlUp)(2)

wb2.Close 'Fermer le fichier

sFilename = Dir

Loop

Application.ScreenUpdating = True

End Sub

J'ai donc essayé deux méthode:

1ere le with ou je vais essayé de sélectionner toutes mes colonnes en même temps pour montrer que l'ensemble est un bloc à bouger ensemble. Puis je vais le coller a la suite. 2 problème de 1 ca ne marche pas et de deux ca me ramène toujours à la deuxième ligne

2ieme ou je sélectionne et colle colonne par colonne dans se cas les lignes pourraient être décaler lors du collage et çà me colle tout a partir de la ligne 2 aussi

Je bloque quelqu'un pour m'aider?

Rechercher des sujets similaires à "vba coller suite"