Classer rapidement des coordonnées.

Résolu/Fermé
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 - 19 sept. 2014 à 09:35
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 - 19 sept. 2014 à 13:54
Bonjour,
Je suis embêté car j'aimerais automatiser un processus assez fastidieux.
A la base j'ai un fichier texte avec des coordonnées de points séparées uniquement par des virgules. E fin de compte j'ai une série de caractères de ce type : X1,Y1,X2,Y2,X3,Y3,...
J'ai importé mon fichier texte sur excel, mais je me retrouve avec une info par cellule (ça me va) et le tout sur plus de 500 colonnes...
Je veux répartir ça en 2 colonnes (celle des X et celle des Y) sur autant de lignes que nécessaire.
Comment puis-je procéder?

Pour info, je suis sur excel:mac 2011.

D'avance merci.


6 réponses

Dolgan Messages postés 44 Date d'inscription jeudi 17 avril 2014 Statut Membre Dernière intervention 1 octobre 2014 12
19 sept. 2014 à 10:50
Bonjour,

Admettons que ta série de caractère X1,Y1,X2,Y2,X3,Y3,... commence en A1 et continue sur toute la ligne 1, avec une seule valeur par cellule.

Voici un petit code qui fait l'affaire :

Option Explicit

Sub trier_XY()

    Dim dC
    Dim col As Long, dLX As Long, dLY As Long
    
    'Récupère le numéro de la dernière colonne non vide de la ligne 1
    dC = Cells(1, Columns.Count).End(xlToLeft).Column
    
    'Titres des deux colonnes du tableau
    Cells(5, 2) = "Colonne X"
    Cells(5, 3) = "Colonne Y"
    
    dLX = Range("B" & Rows.Count).End(xlUp).Row
    dLY = Range("C" & Rows.Count).End(xlUp).Row
    
    For col = 1 To dC
        'Si le contenu de la cellule commmence par "X"
        If Left(Cells(1, col), 1) = "X" Then
            Cells(dLX + 1, 2) = Cells(1, col)
            dLX = dLX + 1
        'Sinon
        Else
            Cells(dLY + 1, 3) = Cells(1, col)
            dLY = dLY + 1
        End If
    Next col

End Sub

Dolgan
0
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 10
Modifié par f117-nighthawk le 19/09/2014 à 11:37
Ok. Je test tout de suite et je reviens vers vous ensuite. :)

Edit : Ca ne fonctionne pas on dirait. La macro me met tout dans la conne Y. En fait je n'ai aucune lettre. J'ai juste des chiffres qui se suivent, séparés par des virgules (genre : 152,196,247,354,...)
0
Dolgan Messages postés 44 Date d'inscription jeudi 17 avril 2014 Statut Membre Dernière intervention 1 octobre 2014 12
19 sept. 2014 à 12:10
Ah oui dans ce cas, c'est normal que toutes les valeurs aillent dans la colonne Y...

Et si les valeurs n'ont aucune lettre, comment veux-tu les trier ?
0
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 10
19 sept. 2014 à 12:25
En fait je veux que les 2 premiers chiffres correspondent, puis les 2 suivants, puis les 2 suivants,...
Après j'ai essayé de rajouter X et Y devant mes entrées mais il m'a rassemblé les données identiques, du coup j'ai perdu de la donnée... (et je n'arrive pas à lui faire faire des X1,Y1,X2,Y2,...)
0
Dolgan Messages postés 44 Date d'inscription jeudi 17 avril 2014 Statut Membre Dernière intervention 1 octobre 2014 12
19 sept. 2014 à 12:30
"En fait je veux que les 2 premiers chiffres correspondent, puis les 2 suivants, puis les 2 suivants,..."
Peux-tu être plus précis ? Avec un exemple peut-être.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
19 sept. 2014 à 12:56
Bonjour,

Merci de déposer le fichier xls (qq lignes, pas la peine de les convertir sur plusieurs colonnes, et éventuellement le résultat attendu) sur cjoint.com et coller ici le lien fourni.

eric
0
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 10
19 sept. 2014 à 13:07
Bonjour.

Voilà la bête.
https://www.cjoint.com/?3ItnhJ3BpQm

Du coup j'ai fait 2 feuilles :
- Une sur laquelle vous avez ce que j'obtiens après avoir importé mon fichier texte (sois un chiffre par cellule sur une ligne jusqu'à... loin).
- La seconde montrant ce que je souhaite obtenir (donc les 2 premiers chiffres en correspondance côte à côte, puis les suivants, puis les autres, sur autant de lignes que nécessaire.)

D'avance merci.
0
Dolgan Messages postés 44 Date d'inscription jeudi 17 avril 2014 Statut Membre Dernière intervention 1 octobre 2014 12
19 sept. 2014 à 13:12
Merci pour le fichier.
Mais quels sont tes critères de tri ?
Par exemple, je vois vers la fin, qu'il y a le nombre 374. Dans quelle colonne va-t-il aller ? Et pourquoi ?
0

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

Posez votre question
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
19 sept. 2014 à 13:24
Bonjour,

une proposition par formule : https://www.cjoint.com/c/DItnATnH4iD
eric
0
f117-nighthawk Messages postés 121 Date d'inscription mercredi 15 décembre 2010 Statut Membre Dernière intervention 12 mai 2023 10
19 sept. 2014 à 13:54
Bonjour.

Eriic, ça a l'air d'être ce que je cherche en effet. Merci bien.
Dolgan, Ce que je souhaite c'est ranger ma ligne en 2 colonnes, en sachant que la première donnée est une abscisse et qu'entre 2 abscisses j'ai une ordonnée correspondant à l'abscisse la précédent. Ce que je voulais c'était donc de réunir toutes mes abscisses dans une colonne et les faire correspondre avec leurs ordonnées dans une seconde colonne.
Encore merci à vous deux et bonne continuation.
0