XL 2016 Code VBA

Périclès1801

XLDnaute Nouveau
Bonjour tout le monde,
Alors je suis électrotechnicien et Géomaticien. J'ai un fichier excel contenant respectivement les colonnes (Id, Coord x, Coord y, Coord z, Obstacles, et codes).
Je souhaiterais écrire un code VBA qui fasse qu'à partir des coordonnées (Coord x et Coord y) , un calcul de distance se fasse et que tous les 100 mètres, une valeur "canton" soit ajoutée automatiquement dans la colonne Obstacles et qu'une valeur "203" soit également ajoutée dans la colonne Codes.

Merci pour les éventuelles réponses et orientations.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
avec l'attendu.
Votre fichier est inexploitable pour qui n'est pas de votre partie.
1- Si les bornes_Id sont tous les 100m pourquoi calculer les distances. Il suffit de compter les bornes.
2- Si ce n'est pas le cas, quelles sont les unités des coordonnées, des mètres, des degrés ?
3- Que fait on des Angles, Tra1, Tra2 ? On ne peux donc pas utiliser la colonne F pour y mettre les Cant.
4- S'il y a des 202 pour Tra1 Tra2 et si ça coïncide avec un Cant, qu'y mettre ?
Donc sans plus amples informations, il n'est guère possible de poursuivre.
Quand j'ai écrit "avec l'attendu" c'est qu'il y avait une raison.
 

Périclès1801

XLDnaute Nouveau
Re,
Merci Sylvan.
En réalité, borne_id c'est la nomenclature dans un ordre croissant (on a des bornes tous les 10m).
Les coordonnées sont en unités métriques (mètre).
Les angles, tra1, tra2,... Sont des obstacles au même titre que les cantons que je souhaite insérer (tous les 100m).
Et si ceux ci coïncident quelques fois avec les autres obstacles, il n'y a pas de soucis.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, Voir PJ,
Si on a des bornes tous les 10m, il suffit de compter 10 à partir du premier Cant, avec en E13:F13 jusqu'au bout :
VB:
=SI(EQUIV("Cant";F3:F12;0)=1;203;201)
=SI(EQUIV("Cant";F3:F12;0)=1;"Cant";"")
Evidemment cela détruit les Tra1, Tra2 ainsi que les 202.
 

Pièces jointes

  • Bornes_Obstacles_xyz (1).xls
    861.5 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Par contre avec du VBA, on peut le faire. Voir PJ avec :
VB:
Sub InsereCant()
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    T = Range("A1:F" & DL)
    Cant = 0
    For L = 3 To UBound(T)
        Cant = Cant + 1
        If Cant = 10 Then
            If T(L, 6) = "" Or T(L, 6) = "Cant" Then
                T(L, 6) = "Cant"
            Else
                T(L, 6) = "Cant - " & T(L, 6)
            End If
            T(L, 5) = 203
        End If
        If Cant = 10 Then Cant = 0
    Next L
    [A1].Resize(UBound(T, 1), UBound(T, 2)) = T
End Sub
On trouve dans votre fichier 10 coïncidences Cant avec Angle, Tra1, Tra2, Début.
1666292955323.png
 

Pièces jointes

  • Bornes_Obstacles_xyz (2).xlsm
    251.4 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 843
Membres
103 003
dernier inscrit
Maxmarie14