Macro excel, trie colonnes

Résolu/Fermé
Jobafi - 13 mars 2009 à 15:05
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 16 mars 2009 à 08:34
Bonjour,

J'ai une macro à réaliser pour un document qui me pose des problèmes :

J'ai un classeur avec 2 feuilles.
Les colonnes A des 2 feuilles sont les mêmes (sauf que biensur, les valeurs ne sont pas dans le même ordre).
Je dois donc récupérer le contenu de la colonne B de la feuille 2 pour le copier dans la colonne D de la feuille 1 mais à la bonne ligne (c'est à dire pour la même valeur dans la colonne A)

Pour shématiser ce que je cherche à faire est :

Feuille 1-------------------Feuille 2
A...........D--------------------A.........B

10.......*vide*________20.......55
20.......*vide*________30.......39
30.......*vide*________10.......25

=>

Feuille 1

A..........D
10........25
20........55
30........39


Je précise que je ne peux resoudre ce problème par formule car la feuille 2 vient en fait d'un autre classeur qui est généré par logiciel et qui a été copier dans le classeur principal grâce à une 1ère macro et que le 1er document possède déja la colonne pour receptionner les valeurs et que je ne dois pas en créer d'autre.
J'ai fait le tour des solutions pour des macros ressemblantes mais aucune n'a pu m'apporter la solution.

Merci beaucoup d'avance à ceux qui voudront bien m'aider.
A voir également:

5 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
13 mars 2009 à 17:54
re,

Récupéres l'exemple avec ce lien

https://www.cjoint.com/?dpr1P1b5Me

Ne connaissant pas tes connaissance en VBA j'ai opté pour ce genre de code, facile à interpréter

Sub test()
'sélectionne la feuille2 ou le nom de la feuille de données
Sheets("Feuil2").Select
'sélectionne la plage de données dans laquelle doivent se faire les recherches
Range("C1:D46").Select
'nomme la plage
ActiveWorkbook.Names.Add Name:="Base", RefersToR1C1:="=Feuil2!R1C3:R14C4"
'reviens feuille1 ou revoir le nom de la feuille
Range("A1").Select
Sheets("Feuil1").Select
'en B1 crée la formule de recherche
Range("B1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]<>"""",VLOOKUP(RC[-1],Base,2,FALSE),"""")"
'copie la formule de recherche sur la hauteur de la liste de critères
Range("B1").Copy
'Colle la formule sur la hauteur
Range("B1:B101").Select
ActiveSheet.Paste

Selection.Copy
'Copie les valeur de la recherche
Selection.PasteSpecial Paste:=xlPasteValues
Range("A1").Select
Application.CutCopyMode = False
End Sub

A+
1
waou, alors la chapeau mike !

Ton code marche du feu de dieu vraiment merci beaucoup!
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073 > jobafi
16 mars 2009 à 08:34
Salut,

Si ça peut t'aider, cest bien. N'oublis pas de mettre ton statut en résolu ou cliques sue le triangle jaune Signaler ce message aux modérateurs et demandes que ta discussion soit mise en statut résolu

Merci A+
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
13 mars 2009 à 15:15
Salut,

Je pense que tu peux récupérer tes données avec la rechecheV, qui après faire un copier collage spécial sur la colonne elle même pour supprimer les formules et fixer les valeurs soit manuellement ou avec un code macro.

Mets un bout de ton fichier sur le forum avec le lien ci-dessous que l'on te propose un exemple

https://www.cjoint.com/

A+
0
Merci pour ta réponse si rapide !

Par contre je ne peux pas te coller un bout de mon fichier (confidentiel). C'est vraiment la manipulation qui m'interesse, une solution avec des noms généraux serait très utile, pas besoin d'adapter en fonction du nom de mes colonnes.

Renseignements pris sur la fonction recherchev, il semblerait qu'elle soit peu fiable si les valeurs ne sont pas classés par ordre croissant (ce qui est hélas le cas dans ma feuille N°2).

Pourrais-tu me donner un morceau de code (j'ai bcp de mal avec le VBA) que je puisse adapter?

Merci
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
13 mars 2009 à 16:14
Salut,

tes renseignements sont faux concernant la fiabilité de la recherchV, tout dépend la façon d'écrire la formule, il faut terminer la formule par ;faux) ou ;0)

Lorsqu’on demande un exemple de fichier, c’est un fichier bidon sans données confidentielles, c’est simplement pour apprécier la structure de ton fichier et ne pas nous obliger à créer un exemple, Nous sommes tous bénévoles et c’est pris sur notre temps, il est normal que ce soit le demandeur qui prenne sur sont temps.

En attendant récupères l’exemple que j’ai créé à ta place avec ce lien, bien sur il est possible de compléter avec un code VBA

https://www.cjoint.com/?dpqpB1yy2r

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci bien,

C'est gentil à toi d'avoir pris de ton temps. Ca n'est pas exactement ce que je cherchai :
je voulais declancher le "trie" par clic sur un CommandButton vu que la 2ème feuille est ammenée à être supprimée par la suite, je souhaitais que les valeurs soient copiés et non inscrite par référence à la feuille2.

Encore merci de t'être interessé à mon problème
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
13 mars 2009 à 16:51
Pas de problème,

dès que j'ai un instant dans la soirée si personne ne t'est venu en aide je te préparerai quelque chose, je dois m'absenter

A+
0