Aide tri données sous Excel

Aide tri données sous Excel - Logiciels - Windows & Software

Marsh Posté le 26-03-2010 à 16:36:02    

Bonjour,
 
Alors voila, j'ai un problème que je n'arrive à résoudre ni sous excel ni sous Mapinfo!
 
J'ai une grande région quadrillée (1800 carrés) sous cette région des surfaces (géol, Pp, véget...) Sous mapinfo, j'extrait avec des requettes SQL les infos qu'il doit y avoir dans mes carrés et je veux les bosser ensuite sous Excel (Reg logistique...) poour cela il faut que je mette en face de chaque identifiant de mes carrés les infos que j'ai obtenues grace à MAPINfo, et là ça se corse car j'ai des carrés pour lesquels il n'y a pas de données! donc il FAUT que je trouve un moyen pour qu'Excel reconnaisse les Identifiants de mes carrés et qu'il les classe systématiquement en face des données de terrain en laissant des trous là où il n'y a rien de renseigné....
 
bref voici un exemple:
 
ID       GEOL                 ID           VEGET
1         Calcaire            1             Arbre
3          Granite            2              pelouse
4         granite             3              Citronnier
5         Calcaire            5              Arbre
 
Voilà ce que j'ai extrait en gros avec Mapinfo... Je voudrais qu'Excel me mette les ID en face des ID en gardant les variables liées et en laissant les espaces là ou il doit y en avoir :  
 
ID          GEOL               ID           VEGET
1           Calcaire             1           Arbre
2            (vide)              2           pelouse
3          Granite               3           citronnier
4           Granite              4            (vide)
5           Calcaire             5            Arbre
 
 
Voila, j'ai 1800 lignes pour 10 variables, je ne peux pas trier comme ça à la main donc si vous savez faire!!
 
Merci!
 
Rémy

Reply

Marsh Posté le 26-03-2010 à 16:36:02   

Reply

Marsh Posté le 26-03-2010 à 17:29:26    

Voici une macro qui fait cela, si les données sont placées comme dans l'exemple (colonne A à D) :

Code :
  1. Sub aligne_liste()
  2.   row_no = 2
  3.   Do While row_no < 10000
  4.     If (IsEmpty(Cells(row_no, 1).Value) Or IsEmpty(Cells(row_no, 3).Value)) Then
  5.       Exit Do
  6.     End If
  7.     id1 = CInt(Cells(row_no, 1).Value)
  8.     id2 = CInt(Cells(row_no, 3).Value)
  9.     If (id1 > id2) Then
  10.       ' Insertion d'une case vide par un decalage vers le bas
  11.       Range("A" & row_no & ":B" & row_no).Select
  12.       Selection.Insert Shift:=xlDown
  13.       Cells(row_no, 1).Value = id2
  14.     Else
  15.       If (id1 < id2) Then
  16.         Range("C" & row_no & ":D" & row_no).Select
  17.         Selection.Insert Shift:=xlDown
  18.         Cells(row_no, 3).Value = id1
  19.       End If
  20.     End If
  21.     row_no = row_no + 1
  22.   Loop
  23. End Sub


Message édité par olivthill le 26-03-2010 à 17:29:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed