Copier des colonnes d'un fichier excel à l autre

Résolu
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 31 mai 2012 à 14:59
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 14 juin 2012 à 16:55
Salut !

je suis sous excel

J'aimerai en fait copier coller des colonnes d un fichier excel vers un autre
En fait dans le fichier excel de départ, il y a des colonnes qui ne sont aps interessantes et il faudrait changer des titres etc ... enfin bref voila une partie de mon code:

 nbLignes = Range("A1").End(xlDown).Row
    nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column

    ReDim SaveColonnes(nbLignes, nbColonnes)
    
    For i = 1 To nbColonnes
        If Cells(1, i) "Learner Area" Or Cells(1, i) "Learner Country" Then
            nbColonnesAfter = nbColonnesAfter + 1
            For j = 1 To nbLignes
                SaveColonnes(j, nbColonnesAfter) = Cells(j, i)
                Print #2, SaveColonnes(j, nbColonnesAfter)
            Next j
        End If
    Next i
    
      
    
    'Ferme le fichier où sont maintenant enregistrés les champs
    Close #2


Donc ca marche mais pas vraiment ^^

parce que normaelemnt la j ai donc deux colonne, mais quand je fais le print il met tous l'un en dessous de l autre donc il y a deux colonnes dans une .....

Donc j'aimerai savoir si on peut régler le print ou utiliser autre chose qui permet de sélectionner la lettre de la colonne afin que je puisse dire que je veux la premeire colonne dans la colonne A, la deuxieme dans la colonne B ......

J'ai pas trouvé sur google, a chaque fois c'est des fonction pour imprimer .... ^^

Donc svp aidez moi =)

32 réponses

InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 12:22
DESOLE j etais plus en entreprise (alternance, donc j ai pas vu).

c'est vrai qu au niveau des boucles, c plus lisible ^^

Sinon pour ton premier message oui j avais pas fait attention au "à copier".
et donc je récupère par exemple la pour le moment les colonnes : A, B, D, F, K, L ...... que je met dans l'autre fichier excel et qui deviennent donc: A, B, C, D, E, F ....

Pour ton messaeg, je vais regarder la et essayer de comprendre

merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 13:06
Oui : c'est cela : essaye de comprendre. Mais pas en "survol" et en "diagonale", hein ... ===>> avec concentration et application.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 14:47
Le premier morceau de code j ai compris c'est juste une amélioration visuelle du code, c vrai que c plus compréhensible comme ca, mais le deuxieme est plus compliqué ^^


tablo = Workbooks("toto").Sheets("Feuil1").Range("A1:" & Workbooks("toto").Sheets("feuil1").Cells.SpecialCells(xlCellTypeLastCell).Address)


donc la tu mets toutes les données du fichier excel de départ dans la variable tablo, right ?

For i = 1 To UBound(tablo, 2)


ici tu fais un for de i = 1 jusqu a la valeur max de la deuxieme dimensions du teableau: tablo, c'est a dire le nombre de colonnes, right ?


Ensuite tu écrase les valeurs de tablo avec les nouvelles valeur, pour la premiere ligne (les titres des colonnes)


Workbooks("titi").Sheets("Feuil2").Range("A1:" & Workbooks("toto").Sheets("Feuil1").Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo

Puis tu mets tablo dans le nouveau fichier

Donc ca veut dire que la variable tablo, a la premiere ligne avec les titres, et toutes les bonnes colonnes car on ne garde de la variable tablo que les colonnes qui correspondent aux case.

Ensuite tu delete toutes les colonnes qui ont pas de premiere lignes, enfin tout du moins ou leur premieres ligne est = à "" car avec le "case else", on a décidé de les vider
Workbooks("titi").Sheets("Feuil2").Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete


Il ne reste donc que les colonnes qui sont recherchées.

Ai je raison ?
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 14:54
je me suis relu et c pas toujours compréhensible j avoue, je mettais juste ce que je pensais avoir compris au fur et a mesure et vu que ce site ne permet pas de modifier un message déja envoyé ....





Donc ca veut dire que la variable tablo, a la premiere ligne avec les titres, et toutes les bonnes colonnes car on ne garde de la variable tablo que les colonnes qui correspondent aux case.



a oublier, ca veut rien dire et c'est faux, au début j avais compris autre chose
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 14:57
sinon a la palce de :

Workbooks("titi").Sheets("Feuil2").Range("A1:" & Workbooks("toto").Sheets("Feuil1").Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo


faut pas mettre :

Workbooks("titi").Sheets("Feuil2").Range("A1:" & Workbooks("titi").Sheets("Feuil2").Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo


?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 15:00
Désolé, mais ton dernier message est la preuve on ne peut plus criante de ce que tu n'as rien compris !
La réponse ? NON ! Ne pas toucher à cette ligne de code


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 15:04
j arrive pas a lui faire reconnaitre les lignes précédentes car je crois qu il faut que le nouveau fichier soit enregistré pour qu il le reconnaisse ?

Workbooks(file).Sheets(Parametres.FileName).Range("A1:" & Workbooks(file).Sheets(Parametres.FileName).Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo
Workbooks(file).Sheets(Parametres.FileName).Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete



file contient l adresse complete du fichier
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 15:11
marche pas:

Workbooks(Parametres.FileName.Text & extension).Sheets(Parametres.FileName.Text).Range("A1:" & Workbooks("Trainingcheck_update2_macro.xlsm").Sheets("training").Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo
Workbooks(Parametres.FileName.Text & extension).Sheets(Parametres.FileName.Text).Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 17:34
ok j ai fait ca:

  Dim wb As Workbook
    Dim ws As Worksheet
    Set wb = Workbooks.Open(file)
    Set ws = wb.Worksheets(1)
  
  
Workbooks(Parametres.FileName.Text & extension).Sheets(Parametres.FileName.Text).Range("A1:" & Workbooks("Trainingcheck_update2_macro.xlsm").Sheets("training").Cells.SpecialCells(xlCellTypeLastCell).Address) = tablo
Workbooks(Parametres.FileName.Text & extension).Sheets(Parametres.FileName.Text).Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete



j ai un autre probleme maitnenant, enfin je l avais deja avant mais bon ....

Le truc c que je voudrais permettre a l utilisateur, de voir le fichier créé ou non, et donc de pouvoir l enregistrer et fermer s il souhaite pas l afficher, le probleme est qu il l ouvre en lecture seule et ca casse tout ......

j ai essayé un truc du genre:
    If Parametres.AffTexte.Value = False Then
        ActiveWorkbook.SaveAs FileName:=file, FileFormat:=xlCSV
        ActiveWorkbook.Close
    End If


mais ca marche pas ... car il me parle de la lecture seule et tout ....
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 17:39
C'est là un problème différent, n'ayant plus rien rien à voir avec la question traitée dans cette discussion .


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
7 juin 2012 à 17:41
ok ok =) bah merci pour ton aide en tt cas, ca marche et c'est vrai que c'est plus rapide et "plus beau"

je vais donc créer un autre sujet pour mon autre question


a+
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
14 juin 2012 à 16:55
ha .... y a un probleme ..... c'est vraiment ... bizarre ^^

Mais enfin voila au départ j ai des dates sous cette forme :
2010-11-18

et je fais donc les copier coller et tout comme tu m as montré et après ca devient:
11/18/2010

Donc les - deviennent des / .... donc deja ca, ca m embete ^^ et ensuite les année moi et jours s inversent ....

C'est une option auto pour passer les dates en francais ? comment régler ca en vba svp ?
0
Rejoignez-nous