Copier des colonnes d'un fichier excel à l autre

infogeo

XLDnaute Nouveau
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:

Code Visual Basic :
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 =)
 

Nairolf

XLDnaute Accro
Re : Copier des colonnes d'un fichier excel à l autre

Salut infogeo,

En règle générale je n'utilise pas cette fonction print que je ne connais pas bien, mais en regardant l'aide excel, j'ai trouvé une explication (du moins c'est ce que j'en ai compris):

Ton print s'affiche automatiquement dans la première colonne, pour changer ta colonne de destination, il faut que tu utilise l'argument Tab(nbColonnesAfter) avant ton expression savecolonnes(...). Là ça devrait marcher (je n'ai pas testé).
 

infogeo

XLDnaute Nouveau
Re : Copier des colonnes d'un fichier excel à l autre

Merci de ta réponse!

Au final j'ai fait un peu autrement:

Code:
For i = 1 To nbColonnes
If Cells(1, i) = "Learner Area" Or Cells(1, i) = "Learner Sub-Area" Or Cells(1, i) = "Learner Country" Or Cells(1, i) = "Learner Country" Or Cells(1, i) = "Learner Company" Or Cells(1, i) = "Type" Or Cells(1, i) = "Job" Or Cells(1, i) = "Certification Level" Or Cells(1, i) = "Release" Or Cells(1, i) = "Reference" Or Cells(1, i) = "Title" Or Cells(1, i) = "Start Date" Or Cells(1, i) = "Classroom Duration (Trainee Days)" Or Cells(1, i) = "E-learning Duration (Hours)"      Or Cells(1, i) = "Internal/External" Then

                nbColonnesAfter = nbColonnesAfter + 1
                If Cells(1, i) = "Classroom Duration (Trainee Days)" Then
                    SaveColonnes(1, nbColonnesAfter) = "Classroom_Duration_Days"
                    changement = True
                End If
                If Cells(1, i) = "E-learning Duration (Hours)" Then
                    SaveColonnes(1, nbColonnesAfter) = "Elearning_Duration_Hours"
                    changement = True
                End If
                If Cells(1, i) = "Internal/External" Then
                    SaveColonnes(1, nbColonnesAfter) = "Int_Ext"
                    changement = True
                End If

                If changement = False Then                    
                    Champs = Cells(1, i).Text
                    Champs = Replace(Champs, " ", "_")
                    Champs = Replace(Champs, ":", "")
                    Champs = Replace(Champs, "/", "_")
                    SaveColonnes(1, nbColonnesAfter) = Champs
                End If
                changement = False
                
                For j = 2 To nbLignes
                    SaveColonnes(j, nbColonnesAfter) = Cells(j, i)
                Next j
        End If
    Next i
    
    For i = 1 To nbLignes
        
    Next i
    
    Dim wb As Workbook
    Dim ws As Worksheet
    Set wb = Workbooks.Open(file)
    Set ws = wb.Worksheets(1)
    

    For i = 1 To nbColonnesAfter
        For j = 1 To nbLignes
         Workbooks(Parametres.FileName.Text & extension).Sheets(Parametres.FileName.Text).Range(AlphabetColonne(i) & j).Value = SaveColonnes(j, i)
        Next j
    Next i


Et la ca marche =)

par contre je compte l'améliorer en permettant à lutilisateur de choisir d afficher le fichier ou non donc s il veut pas il faut que je sache comment on enregistre et on ferme le fichier =)

S'il veut bah c bon j ai rien a changer car ca l ouvre automatiquement, mais j aimerai bien l enregistrer directement également

J'ai rencontré un probleme cependant car, je demande à l utilisateur sous quel format il veut enregistrer le fichier et en recommandé il y a ".csv" car c'est ce format le plus interessant pour la suite ... bref le probleme c'est que moi je veux l enregistrer sous le csv (points virgules) et j'ai vu qu'il y a plein d extension csv genre DOS, macintosh .... Et la par defaut il met pas le csv (points virgules) que je veux, donc comment on fait ^^

J espere que c clair .... ^^
 

infogeo

XLDnaute Nouveau
Re : Copier des colonnes d'un fichier excel à l autre

Ca a l air d etre l'idée mais y a des soucis: premierement il me dit qu un fichier existe deja a cet emplacement (en fait il existe deja a cet emplacement, donc faudrait un save et pas un save as maybe), deuxiemement, il s ouvre en lecture seule donc quand il essaye de le sauvegarder il y arrive pas =)
 

infogeo

XLDnaute Nouveau
Re : Copier des colonnes d'un fichier excel à l autre

Salut merci de ta réponse et désolé de mon retard, j étais plus en entreprise !

ca m a mis un message d erreur encore a cause de la lecture seule:

"impossible d enregistrer sous ce nom. ce document a été ouvert en lecture seule"
 

Discussions similaires

Statistiques des forums

Discussions
312 484
Messages
2 088 784
Membres
103 963
dernier inscrit
Nathe