Réorganiser de maniére automatique sur une nouvelle feuille

Bonjour a tous,

Dans le cadre de mon travail je dois réorganiser chaque jour des données que je recois sur une feuille excel; ce travail est chronophage, fastidieux et ininteressant.

Les données que je recois sont toujours organisées de la meme maniere. Voila ce que je dois faire dans l'ordre chronologique :

copier la colonne 10 pour la coller sur une nouvelle feuille en colonne 1

copier la colonne 2 et 3 pour la coller sur la nouvelle feuille en colonne 2 et 3

copier la colonne 13 '' '' '' 4

'' '' 24 " " " 5

" " 11 " " 6

copier la colonne 21 pour la coller sur la nouvelle feuille en colonne 7

trier ensuite la nouvelle feuille dans l'ordre décroissant en fonction de la colonne 6.

Je commence a peine a travailler avc excel donc soyez clément avec moi dans vos explications.

pour résoudre ce probleme, j'ai essayé de m'initier au VBA et j'ai commencé a réaliser le programme suiant :

Sub CopierDonnees()

Dim Entree As Workbook, Sortie As Workbook

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)

' Ici j'ai du commnce a mettre cellule par cellule car je ne sais pas comment le faire avec toute une colonne

Sortie.Worksheets("Feuil1").Cells(2, 1) = Entree.Worksheets("Feuil1").Cells(2, 10)

Sortie.Worksheets("Feuil1").Cells(3, 1) = Entree.Worksheets("Feuil1").Cells(3, 10)

Sortie.Worksheets("Feuil1").Cells(4, 1) = Entree.Worksheets("Feuil1").Cells(4, 10)

' On ferme le classeur

Sortie.Close

End If

' On ferme le second

Entree.Close

End If

Vous comprendrez que je me tourne vers vous car tel que j'ai commencé ca va etre chaud je crois ^^ en plus j'ai un probleme, le contenu de certaines cellules est une date et quand je fais le transfert via le VBA ca me donne une suite de chiffres qui n'a pas de sens...

Merci beaucoup pour l'aide que vous pourrez m'offrir !

Bonjour

Avec un fichier ce serait plus facile mais vous pouvez essayer comme ceci en remplaçant les 3 lignes ci-dessous par le code proposé

 Sortie.Worksheets("Feuil1").Cells(2, 1) = Entree.Worksheets("Feuil1").Cells(2, 10)
 Sortie.Worksheets("Feuil1").Cells(3, 1) = Entree.Worksheets("Feuil1").Cells(3, 10)
 Sortie.Worksheets("Feuil1").Cells(4, 1) = Entree.Worksheets("Feuil1").Cells(4, 10)
Dim dlg As Integer
With Entree.Worksheets("Feuil1")
dlg = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range(.Cells(2, 1), .Cells(dlg, 1)).Copy Sortie.Worksheets("Feuil1").Cells(2, 10)
    .Range(.Cells(3, 1), .Cells(dlg, 1)).Copy Sortie.Worksheets("Feuil1").Cells(3, 10)
    .Range(.Cells(4, 1), .Cells(dlg, 1)).Copy Sortie.Worksheets("Feuil1").Cells(4, 10)
End With

J'ai supposé que :

  • Le fichier Entree comporte le code
  • Les données sont copiées depuis le fichier Entree vers le fichier Sortie

Si Entree comporte le code Copierdonnees vous pourriez remplacer le nom Entree par THISWORKBOOK. PLus simple car vous ne devez pas declarer ENTREE via SET = ...

Tout cela à vérifier vu que je n'ai pas accès au fichier

Cordialement

Bonjour

Coucou Dan

pwskeud a écrit :

... en plus j'ai un probleme, le contenu de certaines cellules est une date et quand je fais le transfert via le VBA ca me donne une suite de chiffres qui n'a pas de sens...

Petite précision : pour Excel c'est la notion de temps qui n'a pas de sens !

Comme tout système informatique, il utilise des nombres et donc traduit nos dates en nombres.

Aujourd'hui pour Excel c'est 42964.

Il suffit d'appliquer le format date à tes colonnes pour qu'elles apparaissent sous la forme habituelle.

Bonjour Dan,

Tout d'abord un grand merci pour ta réponse!

Si j'ai bien compris tu introduis une variable dlg grace a Dim ! C'est top grace a ca pas besoin de lister toutes les cellules, il n'y a plus qu'a faire une rotation ensuite c'est top pour traiter de plus gros fichier !

je m'en suis cependant sorti en créant une variable (as integrer et as variant) colonnes dans laquelle j'ai stocké ce qui m'interessait dans l'ordre! Grace a vous j'ai ensuite mis la fonction with mais pas a votre maniére puisque cela me demander de lister ensuite tt les cellules... J'ai rajouté une boucle for a l'interieur et j'ai ensuite fait tourner!

par contre dans mon programme j'ai bien compris l'utilité de mettre THISWORKBOOK puisque ça évite de devoir créer avant une feuille vierge mais je ne maitrise pas trop la syntaxe. J'ai donc mis a la place :

Set Entree = Source.Worksheets(1).UsedRange.EntireRow

Au final ca me donne aprés avoir introduit toutes mes variables (et ça marche trés bien) :

Colonnes = Array(, 10, 2, 3, 13, 4, 24, 11, 6)

NomSource = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")

If NomSource = False Then Exit Sub

Set Source = Workbooks.Open(NomSource)

Set Entree = Source.Worksheets(1).UsedRange.EntireRow

Set Sortie = Workbooks.Add(xlWBATWorksheet)

With Sortie.Worksheets(1)

For Colonne = 1 To UBound(Colonnes)

Entree.Columns(Colonnes(Colonne)).Copy .Cells(1, Colonne)

Next Colonne

End With

Source.Close

End Sub

Ce faisant j'ai aussi évité le probléme des dates sous excel puisque j'ai crée colonnes en varaint et integrer mais grace a vous, 78Chris j'ai compris qu'un logiciel ne sait pas ce qu'est le temps!

Vraiment, un grand merci, vous venez de me faire gagner un temps trés précieux a moi et mes collégues qui font la meme chose!

Re

Pour 78chris, je n'avais pas lu cette ligne concernant les dates.

Pour pwskeud

par contre dans mon programme j'ai bien compris l'utilité de mettre THISWORKBOOK puisque ça évite de devoir créer avant une feuille vierge mais je ne maitrise pas trop la syntaxe.

This workbook t'évite de déclarer le classeur dans lequel tu exécutes la macro.

En relisant ton code, je ne vois pas très bien le rapport entre les deux codes du fil mais bon si cela fonctionne...

Cordialement

Rechercher des sujets similaires à "reorganiser maniere automatique nouvelle feuille"