XL 2016 Copier-Coller-Classer deux lignes en une seule

L

Lucko

Guest
Bonjour,

J'aimerais une macro pouvant copier, coller et classer les numéros affichés sur deux lignes en une seule.
Merci. Voir fichier ci-joint.
 

Pièces jointes

  • Copier-coller-classer.xlsm
    9.6 KB · Affichages: 60

Staple1600

XLDnaute Barbatruc
Bonjour à tous

Code adapté de l'enregistreur de macros
VB:
Sub a()
Range("E3:P3").SpecialCells(xlCellTypeConstants, 1).Copy Range("E11")
Range("E4:P4").SpecialCells(xlCellTypeConstants, 1).Copy Range("K11")
Range("E11:P11").Sort Range("E11:P11"), Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
 
L

Lucko

Guest
Bonjour Staple1600,

Malheureusement cela ne fonctionne pas parce que les numéros et la position des numéros peuvent varier avec le temps et le fait de fragmenter la ligne en deux ne permet pas de copier tous les numéros peu importe leur position.
 

Staple1600

XLDnaute Barbatruc
Re

Cela fonctionne sur le fichier Exemple que tu as fourni.
J'ai testé avant de poster :rolleyes:

Tout comme ce code que je viens également de tester.
luko0.jpg

NB: Aucune donnée ne doit figurer sur la feuille après la colonne P
VB:
Sub b()
Dim DerCol As Long, plg As Range
Rows(6).Clear
[E3].Resize(, 12).SpecialCells(2, 1).Copy [E3].Offset(3)
DerCol = Cells([E3].Row + 3, Columns.Count).End(xlToLeft).Column + 1
[E3].Offset(1).Resize(, 12).SpecialCells(2, 1).Copy Cells([E3].Row + 3, DerCol)
Set plg = Cells(Rows.Count, "E").End(xlUp).Resize(, 12)
plg.Sort Key1:=plg, Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Est-ce possible de ne pas effacer la ligne 6 au complet mais seulement entre E6 et P6
Oui.
1) Il te suffit de lire chaque ligne code VBA proposé et de comprendre où se situe la suppression de la ligne 6.
2) Il te suffit ensuite de jouer de l’enregistreur de macros en effaçant E6:p6
3) Il te suffit enfin de voir le code VBA généré par l'enregistreur et de faire les modifications dans le code initial.

Mais comme selon toi, je propose des codes VBA qui ne fonctionnent pas, ces trois conseils doivent être aussi dysfonctionnels ;)
 
Dernière édition:
L

Lucko

Guest
Staple1600,

Pourquoi es-tu aussi cynique? Ton code ne correspond pas tout à fait à mon besoin mais j'apprécie grandement tes efforts de m'avoir aidé à le résoudre. Je n'ai jamais voulu sous-entendre que ton code ne fonctionnait pas mais, plutôt, qu'il devait être adapté selon certains critères mais je n'arrivais pas à le faire par moi-même. J'en suis désolé. Au contraire, je trouve tes conseils très judicieux. Cela va me permettre de mieux comprendre les codes VBA car je suis trop vieux pour être de la génération de l'informatique. Je tiens à souligner ton effort et je t'en remercie.
 

Staple1600

XLDnaute Barbatruc
Re

C'est pas du cynisme, mais de l'ironie matinée d'un pointe d'amicalité.
A moins que ce ne soit le contraire ;)

Est-que tu as essayé l'enregistreur de macros ?
Si oui, tu devais avoirs quelque chose qui ressemble à cela, non ?
VB:
Sub c()
Dim DerCol As Long, plg As Range
[E6:P6] = Empty
[E3].Resize(, 12).SpecialCells(2, 1).Copy [E3].Offset(3)
DerCol = Cells([E3].Row + 3, Columns.Count).End(xlToLeft).Column + 1
[E3].Offset(1).Resize(, 12).SpecialCells(2, 1).Copy Cells([E3].Row + 3, DerCol)
Set plg = Cells(Rows.Count, "E").End(xlUp).Resize(, 12)
plg.Sort Key1:=plg, Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
Est-ce le cas ?

Pour infos: Voila ce que peuvent lire certains membres du forum sur ma page de profil
Penche plutôt du côté de VBA, que des formules. Mais je me soigne.
[ATTENTION]
Pratique l'humour à froid et l'ironie mordante.
Envers autrui comme envers moi-même.
 
L

Lucko

Guest
Staple1600,

Il ne faut pas trop m'en vouloir, je travaille sur ce problème depuis hier soir avec l'aide de l'enregistreur de macro et je n'ai toujours pas trouvé une solution. Je vais regarder ta proposition de code. Pour l'instant, je m'accorde une pause. Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint