Coller certaines colonnes d'un tableau dans un autre classeur
serpanthere
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un fichier xls comprenant un tableau avec beaucoup de lignes (mais le nombre de ligne peut varier d'une version à l'autre).
Seule la colonne 5 a toutes ses lignes de remplies
Je souhaite copier dans un autre classeur xls certaines colonnes de ce 1er tableau.
Les 2 fichiers seront présents sur un serveur (et non sur mon disque) et le fichier créé doit être consultable par plein de personnes
J'ai écrit ce 1er programme :
Apparemment il y a une erreur dans mes boucles imbriquées (la boucle for fonctionne seule, mais l'autre non).
D'autre part, 2 points me chiffonnent :
- la mise en page n'est pas conservée
- j'ouvre le fichier sortie (donc je dois crééer un classeur vide et lui donner un nom pour l'ouvrir), j'aurai préféré que la macro le créée et lui donne le nom que je choisis.
- les premières lignes du programme me permettent de faire en sorte que les fichiers que j'ouvre soient dans un répertoire préselectionné. Le hic (qui n'est pas grave mais pas très joli), c'est que ça m'ouvre une fenêtre, je dois sélectionner un fichier dans ce répertoire, puis sélectionner les 2 autres fichiers que je veux ouvrir. J'aurai préféré que cette étape soit transparente.
Quelqu'un peut-il m'aider svp?
J'ai un fichier xls comprenant un tableau avec beaucoup de lignes (mais le nombre de ligne peut varier d'une version à l'autre).
Seule la colonne 5 a toutes ses lignes de remplies
Je souhaite copier dans un autre classeur xls certaines colonnes de ce 1er tableau.
Les 2 fichiers seront présents sur un serveur (et non sur mon disque) et le fichier créé doit être consultable par plein de personnes
J'ai écrit ce 1er programme :
Sub CopierDonnees()
'Pour ouvrir les fichiers suivants dans le serveur désigné ici
Dim fld As FileDialog
Dim strFilePath As String
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = "\\commun.ad.......\Classement \"
.Show
End With
strFilePath = fld.SelectedItems(1)
Dim Entree As Workbook, Sortie As Workbook
'Pour ouvrir le fichier source (là d'où viendront les données copiées)
Nomfichierentree = Application.GetOpenFilename("Fichier Excel (*.xls), *.xsl")
' On verifie que l'on a selectionné un nom de classeur
If Nomfichierentree <> False Then
' On ouvre le classeur
Set Entree = Workbooks.Open(Nomfichierentree)
NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xls), *.xsl")
If NomFichierSortie <> False Then
Set Sortie = Workbooks.Open(NomFichierSortie)
Dim numeroligne As Integer
numeroligne = 14
For numerocolonne = 2 To 5
Do While Not (IsEmpty(ActiveSheet.Cells(numeroligne, 5)))
Sortie.Worksheets("Feuil1").Cells(numeroligne, numerocolonne) = Entree.Worksheets("CLASSEMENT").Cells(numeroligne, numerocolonne)
Sortie.Worksheets("Feuil1").Cells(numeroligne, numerocolonne) = Entree.Worksheets("CLASSEMENT").Cells(numeroligne, numerocolonne)
numeroligne = numeroligne + 1
Loop
Next
' On ferme le classeur
Sortie.Close
End If
' On ferme le second
Entree.Close
End If
End Sub
Apparemment il y a une erreur dans mes boucles imbriquées (la boucle for fonctionne seule, mais l'autre non).
D'autre part, 2 points me chiffonnent :
- la mise en page n'est pas conservée
- j'ouvre le fichier sortie (donc je dois crééer un classeur vide et lui donner un nom pour l'ouvrir), j'aurai préféré que la macro le créée et lui donne le nom que je choisis.
- les premières lignes du programme me permettent de faire en sorte que les fichiers que j'ouvre soient dans un répertoire préselectionné. Le hic (qui n'est pas grave mais pas très joli), c'est que ça m'ouvre une fenêtre, je dois sélectionner un fichier dans ce répertoire, puis sélectionner les 2 autres fichiers que je veux ouvrir. J'aurai préféré que cette étape soit transparente.
Quelqu'un peut-il m'aider svp?
A voir également:
- Coller certaines colonnes d'un tableau dans un autre classeur
- Tableau word - Guide
- Trier un tableau excel - Guide
- Dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. - Guide
- Imprimer un tableau excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
1 réponse
Bonjour,
Pour créer un nouveau classeur :
Dans ce code, le nom est donné en dur... Si tu veux le saisir toi même, tu peux passer par une InputBox, comme ceci :
Pour ouvrir un classeur existant de manière "transparente" :
Pour créer un nouveau classeur :
Dim Wbk As Workbook, Chemin As String, NomFic AS String Set Wbk = Workbooks.Add Chemin = "C:\Users\MonNom\Travail\Excel\" NomFic = "MonFichierSortie" Wbk.SaveAs Chemin & NomFic
Dans ce code, le nom est donné en dur... Si tu veux le saisir toi même, tu peux passer par une InputBox, comme ceci :
Dim Wbk As Workbook, Chemin As String, NomFic AS String
Set Wbk = Workbooks.Add
Chemin = "C:\Users\MonNom\Travail\Excel\"
NomFic = InputBox("Saisie du nom de fichier : ", "NOM DU FICHIER")
'Ici on peut faire des tests sur NomFic genre If NomFic <> ""...
Wbk.SaveAs Chemin & NomFic
Pour ouvrir un classeur existant de manière "transparente" :
Dim Entree As Workbook, Sortie As Workbook Set Entree = Application.Workbooks.Open "d:\Users\MonNom\Travail\monfichierEntree.xls" Set Sortie = Application.Workbooks.Open "d:\Users\MonNom\Travail\monfichierSortie.xls"