comparer deux colonne et en aligner les données

sylv900

XLDnaute Occasionnel
salut à tous
j'ai un truc à faire et je ne m'en dépatouille pas
voila un extrait du fichier de départ :


70.7029 ru9
ru7 96.15384615 69.8255 ru8
ru8 100 ru18
ru9 100 67.9055 ru7

et je veux obtenir

ru7 96.15384615 67.9055 ru7
ru8 100 69.8255 ru8
ru9 100 70.7029 ru9


est-ce quelqu'un aurais une idée?
merci d'avance
 

sylv900

XLDnaute Occasionnel
je viens de voir mon message et ce n'est pas claire (je mesuis fait bouffer les espaces)
je m'explique :
il y 4 colonne dans une feuille excel
je veux aligner les deux cellules de gauche avec les deux de droites avec comme critère le même nom.
voila n'hésitez pas à demander des précisions...
merci à tous
 

21ch181

XLDnaute Junior
'j'voudrais bien ! Mais j'peux point !.....' disait Anny CORDY...

T'aurais pas un 'bout' de fichier par hasard ? Parce que là j'arrive pas à comprendre ce que tu as 'réellement' au départ et à l'arrivée (la mise en forme sur les post ne reflète pas exactement le colonnage d'excel, oups !) !!!

A tout de suite hein ? avé oune exemple excel !

Alain
 

sylv900

XLDnaute Occasionnel
[file name=exemple_20050413163913.zip size=5551]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemple_20050413163913.zip[/file]

voici mon fichier : il est plus log et plus complqué (il faut aligner les 2 cellules de gauche avec les trois de droite dont le nom et identique)
 

Pièces jointes

  • exemple_20050413163913.zip
    5.4 KB · Affichages: 89

21ch181

XLDnaute Junior
le critère sur lequel tu dois faire le controle d'égalité est bien la colonne 1 et la 5 ?

je comprends ton problème comme ca (x et y sont des n° de ligne) :

si cellule(x,1) = cellule(y, 5) alors je dois mettre sur la même ligne cellule(x,1), cellule(x, 2), cellule(y, 3), cellule(y, 4) et cellule(y, 5)

Ai je bien compris ?

Si oui, ca veut dire que le fichier exemple est déjà trié ?

Alain
 

21ch181

XLDnaute Junior
Voilà ! j'avais vu mon erreur effectivement le fichier n'était pas trié !!

Donc voilà ce que je te propose comme 't'chiote' macro :

Sub alignement()
Cells(1, 1).Select
derniereligne = Cells(1, 1).End(xlDown).Row
For i = 1 To derniereligne
Cells(1, 10) = '=iserror(match(''' & Cells(i, 1) & ''',E:E,0))'
If Cells(1, 10) = False Then
Cells(1, 10) = '=match(''' & Cells(i, 1) & ''',E:E,0)'
For k = 0 To 2
Cells(i, 6 + k) = Cells(Cells(1, 10), k + 3)
Next k
End If
Next i
Cells(1, 10).Clear
Columns('C:E').Delete
End Sub

(tu corrigeras l'indentation qui n'est pas reprise dans le post !)

La seule condition pour qu'elle fonctionne : qu'il n'y ait pas de doublon d'adresse dans la colonne 5 (la fonction EQUIV ne permettant pas de faire de dichotomie) !!

Ma liste a été triée en........pffft

Amuses toi bien

Alain
 

sylv900

XLDnaute Occasionnel
bon d'abord merci de ton aide
je te rassure je n'ai pas de doublon (ouf!)
mais d'une part je ne comprend rien à iserror(match(''' & Cells(i, 1) & ''',E:E,0))'>>>iserror et match servent à quoi????
et qu'est-ce que je doit adapter dans ton code pour qu'il fonctionne?
 

21ch181

XLDnaute Junior
Y a rien à adapter !
En fait la macro va écrire une formule dans la cellule J1 de la feuille export (si ton curseur est sur cette feuille puisque je n'ai pas stipuler la feuille sur laquelle je dois me positionner. Pardon aux puristes....).
Si tu étais en saisie manuelle, tu aurais ceci : =ESTERREUR(EQUIV('ru1';E:E;0)) à la 1ere itération (ensuite pour chaque itération je reprends le contenu de la ligne i, colonne 1

Or dans les macros, les instructions n'ont pas été françisées ce qui explique les différences ESTERREUR devient ISERROR et EQUIV devient MATCH lorsqu'on les écrit dans un module au lieu de les saisir dans une feuille !

Tu peux donc reprendre le code tel quel et il doit marcher !

Si tu veux t'amuser, tu pourrais rajouter une boucle de plus mise avant qui irait ouvrir chaque fichier excel que tu as a traiter (pour autant que tu les ai mis dans le même répertoire) et tu n'aurais plus rien à faire qu'à regarder tourner ton PC !!

Cordialement

Alain
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 936
Membres
103 678
dernier inscrit
bibitm