Traitement coordonnées Géographique et Creer fichier txt

Bonjour,

j'ai deux soucis qui me font tourner en rond...

tout d'abord dans une colonne j'ai des données de type 45N27 ou 45N5241 ou 3S72 par exemple coordonnées géographiques

dans une autre j'ai le même type de données avec 3E0454 ou 3W35

il faudrait que ce 45N27 deviennent 2 colonnes avec 45 l'autre avec 27 si N et -3 72 si "S"

idem avec W (-) et E(+)

puis lorsque cela sera réussi

je vais avoir un tableau avec plusieurs lignes

nom date naissance heure minutes ville Pays coordonnées N/S coordonnées E/W Fuseau Département donnée

et il me faudrait un code VBA qui pour chaque ligne me crée un fichier txt sous la forme d'exemple ci après une ligne par colonne de chaque ligne Excel avant de sauvegarder le txt sous le nom de la colonne nom ici MALLET Lionel

[s=co-8db3e2][s=co-4f81bd][/s][/s]

MALLET Lionel

12/04/1984
21
35.0
Clermont-Ferrand
France
45.77966
3.08628
1
63
0

de maniere que ce au final j'ai un fichier txt au nom de chacune des personnes de mon fichier ...

Merci de votre aide

Lionel

Bonjour

Un exemple avec quelques noms bidons serait pratique

Crdlt

Hello,

Je suis parti du principe que tes latitudes sont en colonne A et tes longitudes en colonne B à partir de la première ligne

- Formule à mettre en C :

=SI(STXT(A1;3;1)="N"; GAUCHE(A1;NBCAR(A1)-3); -GAUCHE(A1;NBCAR(A1)-3))

- Formule à mettre en D :

=DROITE(A1;2)

- Formule à mettre en E :

=SI(STXT(B1;2;1)="E"; GAUCHE(B1;NBCAR(B1)-2); -GAUCHE(B1;NBCAR(B1)-2))

- Formule à mettre en F :

=DROITE(B1;2)

Pour le code j’avoue que j’ai fait du pif et j’ai supposé un certain emplacement pour tes datas qui suivent l’ordre que tu as donné.

Colonne A : nom

Colonne B : date de naissance

Colonne C : heure

Colonne D : minutes

Colonne E : ville

Colonne F : Pays

Colonne G : N/S

Colonne H : E/W

Colonne I : fuseau horaire

Colonne J : département

Colonne K : donnée (même si je sais pas ce qu’il y a dedans)

Sub ExportLignesEnFichiersTXT_SansBalise()

    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim nomFichier As String, chemin As String
    Dim ligneTexte As String
    Dim fileNum As Integer

    ' Feuille contenant les données
    Set ws = ThisWorkbook.Sheets("Feuil1") ' adapte le nom si besoin

    ' Trouver la dernière ligne avec des données
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Chemin du dossier d'enregistrement = même que le fichier Excel
    chemin = ThisWorkbook.Path & "\"

    ' Parcourir toutes les lignes à partir de la 2e (en-tête en ligne 1)
    For i = 2 To lastRow

        ' Contrnu
        ligneTexte = _
            ws.Cells(i, 1).Value & vbCrLf & _  ' Nom
            ws.Cells(i, 2).Value & vbCrLf & _  ' Date de naissance
            ws.Cells(i, 3).Value & vbCrLf & _  ' Heure
            ws.Cells(i, 4).Value & vbCrLf & _  ' Minutes
            ws.Cells(i, 5).Value & vbCrLf & _  ' Ville
            ws.Cells(i, 6).Value & vbCrLf & _  ' Pays
            ws.Cells(i, 7).Value & vbCrLf & _  ' Coord. N/S
            ws.Cells(i, 8).Value & vbCrLf & _  ' Coord. E/W
            ws.Cells(i, 9).Value & vbCrLf & _  ' Fuseau
            ws.Cells(i, 10).Value & vbCrLf & _ ' Département
            ws.Cells(i, 11).Value              ' Donnée finale

        ' Construire le nom du fichier
        nomFichier = chemin & ws.Cells(i, 1).Value & ".txt"

        ' Créer et écrire dans le fichier
        fileNum = FreeFile
        Open nomFichier For Output As #fileNum
        Print #fileNum, ligneTexte
        Close #fileNum

    Next i

    MsgBox "Tous les fichiers .txt ont été créés avec succès !", vbInformation

End Sub

@+

a vrai dire bloqué par la premiere formule je n'ai pas encore de tableau j'ai mis l'intitulé des colonnes du tableau et un exemple du resultat escompté tableau ...

mais vite fait un tableau a la main

12essai.xlsx (8.84 Ko)

autre detail les coordonnées geographique n'ont pas toujours deux chiffres 45 par exemple mais ca peut et 5

Merci de ce premier jet mais si tu as testé avec les données dans le texte de mon message tu extraies parfois 45 et parfois 45N3 ....et si c'est 45S45 cela n'est pas pris en compte...

coord ta 1ere formule extrait la deuxiele

45N47 45 47
45N5834 45N5 34 (au lieu de 5834)
45N47 45 47
45N5935 45N5 35 (au lieu de 5935)

Hello,

Mybad, voici un fichier avec les formules actualisées. C'est ce qu'il fallait ?

@+

ca s'ameliore mais je crois que tu n'avais pas lu mon premier message ou tu l'as survolé

en coordonnees si j'ai 45N5432 je doit avoir 45 5432

si j'ai 45S5432 ca doit etre -45 5432

on ne doit pas modifier les nombres en mettant que 2 chiffres 5432 ne doit pas devenir 54

le S ou N signe le chiffre qui le precede idem pour les données 3E05 qui deviennent 3 05 ou -3 05 si W

Merci quand meme !!!

Hello,

Désolé c'était peut être un peu rapide en effet :

Une correction

@+

bonjour

une petite contribution

cordialement

13lio63.xlsx (10.63 Ko)

Merci Baroute

Maintenant je vais etes encore plus exigeant

lorsque j'ai 5224 qui correspond à 52 minute d'arc et 24 secondes je dois les scinder pour les transformer

j'ai essayé SI(NBCAR(W1<>2);GAUCHE(W1;2);W1) pour les minutes et ca fonctionne apparemment mais pour les secondes =SI(NBCAR(W1<>2);DROITE(W1;2);0) ne fonctionne pas

Hello tes formules devraient plutôt être écrites ainsi, tu as mis le test dans la fonction NBCAR

SI(NBCAR(W1)<>2;GAUCHE(W1;2);W1)
SI(NBCAR(W1)<>2;DROITE(W1;2);0)

@+

Merci je vais terminer puis tester le vba.... je te tiens au courant

MErci

salut dans le code vba la partie

...

ws.Cells(i, 9).Value & vbCrLf & _ ' Fuseau
ws.Cells(i, 10).Value & vbCrLf & _ ' Département

....

renvoie une erreur de compilation erreur de syntaxe...

Hello,

Ah en effet, j'ai voulu t'ajouter les commentaires mais ça fait planter le code.

Avec celui-ci sur base de ton fichier exemple ça fonctionne niquel de mon côté

Sub ExportLignesEnFichiersTXT_SansBalise()

    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim nomFichier As String, chemin As String
    Dim ligneTexte As String
    Dim fileNum As Integer

    ' Feuille contenant les données
    Set ws = ThisWorkbook.Sheets("Feuil3") ' adapte le nom si besoin

    ' Trouver la dernière ligne avec des données
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Chemin du dossier d'enregistrement = même que le fichier Excel
    chemin = ThisWorkbook.Path & "\"

    ' Parcourir toutes les lignes à partir de la 2e (en-tête en ligne 1)
    For i = 2 To lastRow

        ' Contrnu
        ligneTexte = _
            ws.Cells(i, 1).Value & vbCrLf & _
            ws.Cells(i, 2).Value & vbCrLf & _
            ws.Cells(i, 3).Value & vbCrLf & _
            ws.Cells(i, 4).Value & vbCrLf & _
            ws.Cells(i, 5).Value & vbCrLf & _
            ws.Cells(i, 6).Value & vbCrLf & _
            ws.Cells(i, 7).Value & vbCrLf & _
            ws.Cells(i, 8).Value & vbCrLf & _
            ws.Cells(i, 9).Value & vbCrLf & _
            ws.Cells(i, 10).Value & vbCrLf & _
            ws.Cells(i, 11).Value

        ' Construire le nom du fichier
        nomFichier = chemin & ws.Cells(i, 1).Value & ".txt"

        ' Créer et écrire dans le fichier
        fileNum = FreeFile
        Open nomFichier For Output As #fileNum
        Print #fileNum, ligneTexte
        Close #fileNum

    Next i

    MsgBox "Tous les fichiers .txt ont été créés avec succès !", vbInformation

End Sub

@+

Rechercher des sujets similaires à "traitement coordonnees geographique creer fichier txt"