Copier colonnes dans une autre feuille

jeanBaptiste

XLDnaute Junior
Bonjour le forum

ça fait déjà une journée que je cherche sur tout les forums sans trouvé mon bonheur je retourne donc encore une fois vers vous.

J'ai actuellement un classeur qui réuni 2 tableaux et je voudrais créer un 3ème tableau dans lequel je copie les informations dont j'ai besoin pour pouvoir les comparer (je travail la comparaison avec Staple et Paritec ici)

Le problème auquel je me heurte est que pour un des tableaux je dois copier les colonnes E, F, X puis V dans cette ordre et a chaque fois à partir de la ligne 2 jusqu'à la dernière nonVide. Et pour l'autre tableau simplement les colonnes A à D mais cette fois à partir de la ligne 3.

J'ai essayé plusieurs code que j'ai trouvé à droite à gauche, d'autre que je n'ai pas essayé car je ne les comprenais pas et aussi via l'enregistreur de macro qui quand à lui me donne des .select et .copie dont j'ai vu sur les forum qu'il fallait bannir.

C'est pour cela que je me tourne vers vous. je ne vous demande pas de me donner la macro toute faite mais au moins de m'aiguiller.

Vous trouverez ci-joint le classeur.

Cordialement
jeanBaptiste
 

Pièces jointes

  • Traitement de données.xlsm
    37.9 KB · Affichages: 32
  • Traitement de données.xlsm
    37.9 KB · Affichages: 36
Dernière modification par un modérateur:

gosselien

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

Bonjor,

un essai (tu dois ajouter un "feuil2" avant)

Sub Copie()


Dim WS1, WS2, WS3 As Worksheet
Dim Un As Range, Deux As Range
Set WS1 = Sheets("tache prévu")
Set WS2 = Sheets("tache réalisé")
Set WS3 = Sheets("Feuil2")
WS3.Cells.Clear
Set desti = WS3.[A1]: Set desti2 = WS3.[F1]


Set Un = Union(WS1.Range("E1:E" & [E65000].End(xlUp).Row), _
WS1.Range("F1:F" & [E65000].End(xlUp).Row), WS1.Range("X1:X" & _
[E65000].End(xlUp).Row), WS1.Range("V1:V" & [E65000].End(xlUp).Row))


Set Deux = WS2.Range("A2:D" & WS2.[A65000].End(xlUp).Row)


Un.Copy desti: Deux.Copy desti2
End Sub
 

jeanBaptiste

XLDnaute Junior
Re : Copier colonnes dans une autre feuille

Bonjour Gosselin

Petite question rapide c'est :
Code:
Set Deux = WS2.Range("A2:D" & WS2.[A65000].End(xlUp).Row)

ou

Code:
Set Deux = WS2.Range("A2" & WS2.[A65000].End(xlUp).Row)

Car il y a le smiley qui s'est mis ;)

edit : c'est bon j'ai essayer c'est A2 : D

jeanBaptiste
 
Dernière modification par un modérateur:

gosselien

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

Petit changement:

Sub Copie()


Dim WS1, WS2, WS3 As Worksheet
Dim Un, Deux, Trois, Quattre, Cinq, Tout As Range
Set WS1 = Sheets("tache prévu")
Set WS2 = Sheets("tache réalisé")
Set WS3 = Sheets("Feuil2")
WS3.Cells.Clear
Set desti = WS3.[A1]: Set desti2 = WS3.[F1]
derl = WS1.Range("A65000").End(xlUp).Row
Set Un = WS1.Range("E1:E" & derl)
Set Deux = WS1.Range("F1:F" & derl)
Set Trois = WS1.Range("X1:X" & derl)
Set Quattre = WS1.Range("V1:V" & derl)
Set Tout = Union(Un, Deux, Trois, Quattre)
Tout.Copy desti
Set Cinq = WS2.Range("A2 : D" & WS2.[A65000].End(xlUp).Row)
Cinq.Copy desti2
End Sub
 

jeanBaptiste

XLDnaute Junior
Re : Copier colonnes dans une autre feuille

Super merci Gosselin

Est ce que tu sais comment mettre en auto les dates aux format jj/mm/aaaa au lieu de jj/mm/aaaa hh:mm:ss présent actuellement ?

Cordialement

jeanBaptiste
 
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

Bonjour jeanBaptiste, gosselien,

Une autre solution avec des "Array" :

Code:
Private Sub Worksheet_Activate()
Dim a, b, i As Byte
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
a = Array(['Tache prévu'!E2], ['Tache prévu'!F2], ['Tache prévu'!X2], ['Tache prévu'!V2], ['Tache réalisé'!A3], ['Tache réalisé'!B3], ['Tache réalisé'!C3], ['Tache réalisé'!D3])
b = Array([A3], [B3], [C3], [D3], [G3], [H3], [I3], [J3])
For i = 0 To UBound(a)
  With a(i).Parent.Range(a(i), a(i).Parent.Cells(Rows.Count, a(i).Column).End(xlUp))
    b(i).Resize(.Count) = .Value
  End With
Next
End Sub
La macro s'exécute quand on active Feuil1.

Fichier joint.

A+
 

Pièces jointes

  • Traitement de données(1).xlsm
    34.8 KB · Affichages: 33
  • Traitement de données(1).xlsm
    34.8 KB · Affichages: 35

jeanBaptiste

XLDnaute Junior
Re : Copier colonnes dans une autre feuille

Bonjour Gosselin, bonjour job,

Merci pour la macro job mais moi je l’exécute avec un bouton donc ta méthode n'est pas la meilleur pour ce que je veux faire mais sinon elle est vraiment bien :D.

Gosselin c'est ce que je faisais jusqu'à maintenant mais en faites pour la comparaison après la cellule garde l'heure mais ne l'affiche pas et du coup la comparaison ne fonctionne pas car je cherche a comparer que la date et pas l'heure :/
 
Dernière modification par un modérateur:

jeanBaptiste

XLDnaute Junior
Re : Copier colonnes dans une autre feuille

Bonjour gosselin,

je viens de me rendre compte que macro ne marchais pas. je m'explique il affiche dans cette ordre E F V X alors que ta macro demande de faire E F X V j'ai cherché j'ai pas trouvé pourquoi j'ai même recommencé de 0 mais rien à faire je t'ai dit que ça fonctionnais mais je pense que j'ai du regardé en diagonale hier pour te dire que ça fonctionnais et j'en suis désolé.


D'ailleur pour la date c'est réglé grâce à un ancien sujet résolu par Job et PierreJean ici

Cordialement
 

job75

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

Bonjour,

Merci pour la macro job mais moi je l’exécute avec un bouton (...)

Bah il ne vous vient pas à l'esprit qu'il suffit de remplacer Worksheet_Activate par CommandButton1_Click ???

Fichier (2).

A+
 

Pièces jointes

  • Traitement de données(2).xlsm
    33.7 KB · Affichages: 33
  • Traitement de données(2).xlsm
    33.7 KB · Affichages: 37

jeanBaptiste

XLDnaute Junior
Re : Copier colonnes dans une autre feuille

c'est bon Gosselin j'ai réglé le problème en séparant l'importation d'abord les colonnes E F X puis la colonne V. C'est un peu une version simple mais ça marche et c'est le principal.

Désolé job j'ai vraiment pas réfléchie, c'est la fatigue et l'énervement combiné je n'arrive plus à réfléchir.

Je me permet de vous poser la question y a t'il une un bout de code que je peux rajouter pour que les colonnes G et H se mette au format nombre (en gros mettre en macro le faite que quand on a importer et qu'il y a dans le coin le petit triangle vert on convertisse en nombre) c''est pour la comparaison.

Merci
 

gosselien

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

re,

G est "phase" un nombre et H "date debut" , je suppose que tu veux dire la colonne B "phase" et G "phase" ?
en fin de code:
.......
Set Cinq = WS2.Range("A2:D" & WS2.[A65000].End(xlUp).Row)
Cinq.Copy desti2
Range("B:B", "G:G").NumberFormat = "General"
.......
 

job75

XLDnaute Barbatruc
Re : Copier colonnes dans une autre feuille

Re,

Si l'on veut pouvoir modifier les noms des feuilles il vaut mieux utiliser leurs CodeNames :

Code:
Private Sub CommandButton1_Click()
Dim a(7), b, i As Byte
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
Set a(0) = Feuil3.[E2]: Set a(1) = Feuil3.[F2]: Set a(2) = Feuil3.[X2]
Set a(3) = Feuil3.[V2]: Set a(4) = Feuil2.[A3]: Set a(5) = Feuil2.[B3]
Set a(6) = Feuil2.[C3]: Set a(7) = Feuil2.[D3]
b = Array([A3], [B3], [C3], [D3], [G3], [H3], [I3], [J3])
For i = 0 To UBound(a)
  With a(i).Parent.Range(a(i), a(i).Parent.Cells(Rows.Count, a(i).Column).End(xlUp))
    b(i).Resize(.Count) = .Value
  End With
Next
End Sub
Fichier (3).

PS : pas de triangles verts chez moi en colonnes G et H, ce sont bien des nombres...

A+
 

Pièces jointes

  • Traitement de données(3).xlsm
    39.1 KB · Affichages: 28

Discussions similaires

Statistiques des forums

Discussions
312 511
Messages
2 089 180
Membres
104 057
dernier inscrit
Dusty88