Compil 4 fichiers excel en un avec données ciblées

Abrah

Habitué
Bonjour à tous,

Etant nouveau sur ce forum, je remercie par avance tous ceux qui participent à aider les novices comme moi dans l'univers du VBA.
J'espère aussi ne pas ouvrir un post déjà résolu mais j'ai fais des recherches sur le forum et je n'ai rien trouvé.

Voici mon problème : Je dispose de quatre (4) fichiers excel de formes et tailles différentes (voire fichiers joints en exemple). Les fichiers n'ont pas le même nombre de colonne, ni le même nombre de ligne.

Je souhaite compiler ces quatre (4) fichiers en un (1) seul fichier de type CSV.

Les données à restituer dans le fichier CSV sont celles dont les entêtes de colonnes sont les suivantes :

- Accounting date (donnée disponible dans les 4 fichiers)
- Account (donnée disponible dans les 4 fichiers)
- Amount (donnée disponible dans les 4 fichiers)
- Contract identifier (donnée disponible dans les 4 fichiers)
- Entry Number (donnée disponible dans les 4 fichiers)
- Country code (donnée disponible seulement dans 3 fichiers)

Je souhaite garder dans l'ordre défini ci-dessus les entêtes de colonnes dans le fichier CSV.
Est-ce qu'il serait également possible d'avoir une première colonne (nommé Journal dans laquelle je peux véhiculer un code spécifique pour chacun des quatre (4) fichiers) ? (Par exemple toutes les lignes restituées du fichier Mnout_Ss commenceront par *AM).

La régle générale serait de renseigner à vide une donnée dès qu'elle n'est pas disponible dans le fichier source. Par exemple mettre à vide la colonne "Country code" les lignes du fichier qui ne comporte pas cette colonne.

Pensez-vous qu'un code pour éxécuter ces action existe ? et dans l'idéal je vous serais infiniment reconnaissant de m'aider .

Si le code permet aussi de ne pas obligatoirement ouvrir les diférents fichiers ça serait le must.
Merci d'avance à tous.

PS : Je viens de me rendre compte que je ne pas joindre mes fichiers en exemple (enfin je ne sais pas ou c'est pour les rajouter ... je me sens con du coup)
 

drul

Obscur pro du hardware
Staff
Salut, pas de fichier excel plein de macro pour véroler nos pc en pièce jointe ici, désolé.
Tu peux faire des prints screens et les poster sur un hébergeur comme casimage, ensuite une ébauche de code serait un bon début. (en utilisant la balise code=vb)
 

Abrah

Habitué


Bonjour drul,

Merci pour ce premier retour, je vais voir pour les prints screen via casimage (Je ne connaissais pas du tout). Pour un début de code je suis (très) novice dans l'univers VBA et mis à part des macros pré-enregistrées je suis incapable d'écrire une macro même pour commencer j'ai du mal.

Je comptais sur une âme généreuse mais je conçois que ça soit embêtant pour les personnes qui aident les novices comme moi et c'est la première fois que je demande de l'aide sur les forums donc pardonnez à l'avance mes maladresses.

 

Abrah

Habitué
Re :

J'ai pu uploader les 4 fichiers sur casimage (merci encore pour l'info @drul). Ci-dessous les liens vers les fichiers sources.
// moderation pas de fichiers excel PJ, svp !!! //

En espérant que quelqu'un puisse m'aider please. merci d'avance.
 

drul

Obscur pro du hardware
Staff
L'idée n'est pas d'envoyer les fichiers xls, trop dangereux pour nous.
Mais juste une image pour que l'on puisse se rendre compte de se que tu veux faire.
Personne ne fera ici le code a ta place, nous aidons, expliquons les erreurs, mais la base doit venir de toi (l'enregistreur de macro est un excellent point de départ)
 

Abrah

Habitué
Ok très bien j'ai compris le principe. merci de m'avoir répondu.

Pour rentrer dans le détail là où je bloque c'est la selection de la premiere ligne vide de mon fichier récap. Je m'explique, lorsque je copie mon premier fichier fait 28 lignes par exemple je ne sais pas dire à macro de commencer la copie du deuxième fichier à la fin des données du premier fichier.
En langage plus clair je ne sais pas lui dire commence par la première cellule vide que tu trouves et ainsi de suite pour les quatre fichiers ... je ne sais si je me fais comprendre.
 

Abrah

Habitué
Je peux éventuellement transmettre la macro préenregistrée mais elle fait plus de quatre pages ....
 

Abrah

Habitué
Ci-dessous le code partiel en espérant pouvoir le peaufiner avec votre aide

' J’ai créé en amont un fichier recap avec les entêtes de colonnes désirées en cible en format csv.
' Ensuite j’ouvre tous les fichiers
' Puis j’ai copié colonne par colonne les informations que je souhaite récupérer dans mon fichier récap.
@drul je ne sais pas si c'est ce que tu me demandais de faire, en gros j'ai numéroté les différentes actions. Sinon je le reprend.

Pour mon problème il s'agit de copier/compiler des données issues de mes 4 fichiers sources (voire liens).
Lorsque des données attendu en cible ne sont pas disponible en source remplir à blanc.

Ci-dessous les liens vers les fichiers sources :
1) <ahref="http://www.casimages.com/f.php?f=130806025339586476.xls" target="_blank">Lien vers mon fichier</a>
2) <ahref="http://www.casimages.com/f.php?f=130806025823250232.xls" target="_blank">Lien vers mon fichier</a>
3) <ahref="http://www.casimages.com/f.php?f=130806025943382883.xls" target="_blank">Lien vers mon fichier</a>
4) <ahref="http://www.casimages.com/f.php?f=130806030137398018.xls" target="_blank">Lien vers mon fichier</a>

Ci-dessous le code (affreux en effet :pt1cable:) :

Code:
Sub LastCode()
ChDir "C:\Users\ADiaw\Documents\Backup-Diaw\Test macro\Test 2\Test 3"
Workbooks.Open Filename:= _"C:\Users\Test 3\Com_Fr1.xls"
Workbooks.Open Filename:= _"C:\Users\Test 3\Mnout_Ss.xls"
Workbooks.Open Filename:= _"C:\Test 3\Prime_Fr.xls"
Workbooks.Open Filename:= _  "C:\Users\Test 3\recap.csv"
Workbooks.Open Filename:= _"C:\Test 3\Sasur_Fr.xls"
Windows("recap.csv").Activate
Range("A2").Select
Windows("Com_Fr1.xls").Activate
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Windows("Com_Fr1.xls").Activate
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("B2").Select
ActiveSheet.Paste
Windows("Com_Fr1.xls").Activate
Range("F2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("C2").Select
ActiveSheet.Paste
Windows("Com_Fr1.xls").Activate
Range("J2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("D2").Select
ActiveSheet.Paste
Windows("Com_Fr1.xls").Activate
Range("H2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("E2").Select
ActiveSheet.Paste
Windows("Com_Fr1.xls").Activate
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("F2").Select
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlDown).Select
Range("A24").Select
Windows("Prime_Fr.xls").Activate
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("B1").Select
Selection.End(xlDown).Select
Range("B24").Select
Windows("Prime_Fr.xls").Activate
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("C1").Select
Selection.End(xlDown).Select
Range("C24").Select
Windows("Prime_Fr.xls").Activate
ActiveWindow.LargeScroll Down:=-1
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("D1").Select
Selection.End(xlDown).Select
Range("D24").Select
Windows("Prime_Fr.xls").Activate
ActiveWindow.LargeScroll Down:=-1
Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("E1").Select
Selection.End(xlDown).Select
Range("E24").Select
Windows("Prime_Fr.xls").Activate
ActiveWindow.LargeScroll Down:=-1
Range("I2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("F1").Select
Selection.End(xlDown).Select
Range("F24").Select
Windows("Prime_Fr.xls").Activate
ActiveWindow.LargeScroll Down:=-1
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlDown).Select
Range("A66").Select
Windows("Sasur_Fr.xls").Activate
ActiveWindow.SmallScroll ToRight:=-3
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("B1").Select
Selection.End(xlDown).Select
Range("B66").Select
Windows("Sasur_Fr.xls").Activate
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Selection.End(xlUp).Select
Range("C1").Select
Selection.End(xlDown).Select
Range("C66").Select
Windows("Sasur_Fr.xls").Activate
Range("L2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Windows("Sasur_Fr.xls").Activate
ActiveWindow.SmallScroll ToRight:=3
Range("R2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
Range("D1").Select
Selection.End(xlDown).Select
Range("D66").Select
ActiveSheet.Paste
Range("E1").Select
Selection.End(xlDown).Select
Range("E66").Select
Windows("Sasur_Fr.xls").Activate
Range("N2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("F1").Select
Selection.End(xlDown).Select
Range("F66").Select
Windows("Sasur_Fr.xls").Activate
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlDown).Select
Range("A72").Select
Windows("Mnout_Ss.xls").Activate
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("B72").Select
Windows("Mnout_Ss.xls").Activate
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("C72").Select
Windows("Mnout_Ss.xls").Activate
Range("F2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("D72").Select
Windows("Mnout_Ss.xls").Activate
Range("J2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Range("E72").Select
Windows("Mnout_Ss.xls").Activate
Range("H2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\ADiaw\Documents\Backup-Diaw\Test macro\Test 2\Test 3\recap_integrer.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
End Sub

 

drul

Obscur pro du hardware
Staff
Salut pour une meilleure lisibilité, stp utilise les balises code=vb et /code pour entourer ton code
 

Abrah

Habitué


Salut drul, je ne sais pas comment faire ça, ni même ce qu'est une balise code=vb. Pourrais-tu me dire comment on le fait stp?

Merci encore
 

drul

Obscur pro du hardware
Staff


Te donnera:

Code:
With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    .ColorIndex = xlAutomatic
End With

STP edit le msg précédent de la même manière. Après je jette un coup d'oeil au code (attroce) que t'a pondu l'éditeur de macro
 

Abrah

Habitué
@drul j'ai réédité le post plus haut, dis moi si ça ne convient pas stp et merci de ton aide.
 

drul

Obscur pro du hardware
Staff
Salut, alors on va commencer par élaguer tout ça:

Prenons la première colonne que tu copies:
Code:
Windows("Com_Fr1.xls").Activate
Range("B2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("recap.csv").Activate
ActiveSheet.Paste
Se remplacerait élégament par:
Code:
Workbooks("Com_Fr1.xls").Sheets(1).Range("B2", Workbooks("Com_Fr1.xls").Sheets(1).Range("B2").End(xlDown)).Copy Workbooks("recap.csv").Sheets(1).Range("A2")
Après pour améliorer la lisibilité, je ferais ça:
Code:
Sub demo()
Dim SourceSheet As Worksheet
Dim DestSheet As Worksheet

Set SourceSheet = Workbooks("Com_Fr1.xls").Sheets(1) 'Un pointeur sur la feuille de source (a mettre à jour a chaque changement de source)
Set DestSheet = Workbooks("recap.csv").Sheets(1) 'Un pointeur sur la feuille de destination (dans ton cas une seul destination, donc ne sera jamais changé)

SourceSheet.Range("B2", SourceSheet.Range("B2").End(xlDown)).Copy DestSheet.Range("A2")
'... et ainsi de suite pour toutes les colonnes que tu veux copier
End Sub

Fais en de même pour les colonnes suivantes
 

Abrah

Habitué
@drul merci beaucoup ...

J'ai essayé de retravailler le code et je crois avoir suivi plus ou moins ce que tu me conseilles de faire (à quelques détails près ...) pourrais-tu me dire ce qui ne va pas dans le code ci-dessous stp ? Il me dit que le format n'est pas autorisé à la fin de l'exécution de la macro. Si tu ne vois pas, j'éssaierai d'appliquer ton code à la lettre et puis je ferai un retour. mille mercis de ton aide.
Code:
Sub LastCodeBis()
ChDir "C:\Test 3"
    Workbooks.Open Filename:= _"C:\Test 3\Com_Fr1.xls"
    Workbooks.Open Filename:= _"C:\Test 3\Mnout_Ss.xls"
    Workbooks.Open Filename:= _"C:\Test 3\Prime_Fr.xls"
    Workbooks.Open Filename:= _"C:\Test 3\recap.csv"
    Workbooks.Open Filename:= _"C:\Test 3\Sasur_Fr.xls"
    
Workbooks("Com_Fr1.xls").Range (Range("B2")): Range(B1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("A1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Com_Fr1.xls").Range (Range("C2")): Range(C1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("B1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Com_Fr1.xls").Range (Range("F2")): Range(F1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("C1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Com_Fr1.xls").Range (Range("J2")): Range(J1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("D1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Com_Fr1.xls").Range (Range("H2")): Range(H1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("E1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Com_Fr1.xls").Range (Range("D2")): Range(D1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("F1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("B2")): Range(B1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("A1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("C2")): Range(C1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("B1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("G2")): Range(G1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("C1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("K2")): Range(K1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("D1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("I2")): Range(I1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("E1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Prime_Fr.xls").Range (Range("D2")): Range(D1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("F1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("C2")): Range(C1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("A1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("D2")): Range(D1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("B1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("L2")): Range(L1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("C1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("R2")): Range(R1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("D1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("N2")): Range(N1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("E1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Sasur_Fr.xls").Range (Range("E2")): Range(E1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("F1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Mnout_Ss.xls").Range (Range("C2")): Range(C1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("A1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Mnout_Ss.xls").Range (Range("D2")): Range(D1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("B1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Mnout_Ss.xls").Range (Range("F2")): Range(F1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("C1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Mnout_Ss.xls").Range (Range("J2")): Range(J1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("D1").End(xlDown).Offset(1).EntireRow.Paste

Workbooks("Mnout_Ss.xls").Range (Range("H2")): Range(H1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").Range("E1").End(xlDown).Offset(1).EntireRow.Paste

Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Test 3\recap_integrer.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
ActiveWindow.Close
End Sub
 

drul

Obscur pro du hardware
Staff
pas un expert de special cells, mais je ferais plutôt un truc comme ça, ta syntax me semble fausse.

Code:
Workbooks("Com_Fr1.xls").Sheets(1).Range("B2", Workbooks("Com_Fr1.xls").Sheets(1).Range("B2").SpecialCells(xlCellTypeLastCell)).Copy Workbooks("recap.csv").Sheets(1).Range("A2")
 

Abrah

Habitué

drul, mon problème maintenant se trouve au niveau de la cellule de destination, dans ton code je copie et je range dans la cellule (A2) puis (B2) et ainsi de suite ... sauf que pour le premier fichier à copier je n'aurai pas de problème mais pour le deuxième fichier, étant donné que mon nombre de ligne n'est pas constant je ne peux pas cibler la cellule de destination : Il faudrait que je puisse lui dire d'aller copier en cible à partir de la premiere cellule vide qu'il trouve en partant de la première cellule de la colonne concernée. c'est la raison pour laquelle j'avais mis la commande ci-dessous mais je ne suis pas sûr qu'il ne manque pas quelque chose :
Code:
Workbooks("Com_Fr1.xls").Range (Range("B2")): Range(B1).CurrentRegion.SpecialCells(xlCellTypeLastCell).Cell.Copy Destination = Workbooks("recap.csv").[color=#562512]Range("A1").End(xlDown).Offset(1).EntireRow.Paste[/color]
 

drul

Obscur pro du hardware
Staff
Tu enlèves le ".EntireRow.Paste" et ça devrait jouer ...

Edit: il est préférable de regarder depuis la dernière cellule et de remonter, pour déterminer la cellule de dest (question à 5 points: saura-tu me dire pourquoi ?)
 

Abrah

Habitué
Je ne saurais te dire pourquoi (je suis un peu paumé là ...)
en fait quand je m'inspire de ton code et que j'enlève ".EntireRow.Paste" ce qui donne par exemple :

Code:
Workbooks("Mnout_Ss.xls").Sheet(1).Range("H2", Workbooks("Mnout_Ss.xls").Sheet(1).Range("H2").SpecialCells(xlCellTypeLastCell).CopyWorkbooks("recap.csv").Range("E1").End(xlDown)

Il beugue et me balance : "compil error Expected : list separator or )
 

drul

Obscur pro du hardware
Staff


Manque une parenthèse fermante et un espace:
Code:
Workbooks("Mnout_Ss.xls").Sheet(1).Range("H2", Workbooks("Mnout_Ss.xls").Sheet(1).Range("H2").SpecialCells(xlCellTypeLastCell)).Copy Workbooks("recap.csv").Range("E1").End(xlDown)
 

Abrah

Habitué


Merci pour la correction. j'ai testé à nouveau mais à part m'ouvrir les fichiers il s'arrête et m'envoie ce message => 'Objet doen't support this property or method'
et quand je retourne dans le code ma première ligne est en jaune :
ci-dessous ma commande :

Code:
Workbooks("Com_Fr1.xls").Sheet(1).Range("B2", Workbooks("Com_Fr1.xls").Sheet(1).Range("B2").SpecialCells(xlCellTypeLastCell)).Copy Workbooks("recap.csv").Range("A1").End(xlDown)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 717 998
Membres
1 586 386
Dernier membre
aviateurdesairs
Partager cette page
Haut