Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 créer un tableau qui contient tous les distances entre les stations de bus

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nasri badreddine

XLDnaute Nouveau
bonjour;
j'ai un tableau A (input) comporte 5 colonnes (centre,ligne, n°station,nom station, distance (représente la distance entre les station adjacente de chaque ligne)
je voulais créer un tableau B comporte 5 colonne (centre,ligne,station départ X,station arrivé Y,distance entre XY)
la distance entre XY est:
exemple pour la ligne 222 du centre 15 X=3 Y=5
distance entre station 3 et station 5 = (distance entre station 3 et 4) + (distance entre station 4 et 5)
pouvez vous m'aidez de créer le tableau B (formule excel,code vba) et merci d'avance
 

Pièces jointes

Bonjour nasri badreddine, JHA,
Une autre approche en VBA.
Plus lent je pense que des formules au calcul, mais ne recalcule pas à chaque Recalcul, et génère un fichier plus léger, avec :
VB:
Public T, Centre%, Ligne%, Dep%, Arr%, D%, N%
Sub Distance()
T = Sheets("tableau A (input)").[A1].CurrentRegion  ' Données dans array, plus rapide
Application.ScreenUpdating = False
DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row     ' Dernière ligne tableau B
For L = 2 To DL
    Centre = Cells(L, "A"): Ligne = Cells(L, "B"): Dep = Cells(L, "C"): Arr = Cells(L, "D") ' Acquisition
    CalculDistance                                  ' Calcul de la distance
    Cells(L, "E") = D                               ' Ecriture distance
    ' Info progression dans statusbar ... pour faire patienter
    N = N + 1
    If N = 100 Then
        N = 0: Application.StatusBar = "Progression :  " & Format(L / DL, "0%")
    End If
Next L
Application.StatusBar = ""
End Sub
Sub CalculDistance()
D = 0: L = 2
While T(L, 1) <> Centre: L = L + 1: Wend        ' Début Centre
While T(L, 2) <> Ligne: L = L + 1: Wend         ' Début Ligne
While T(L, 3) <> Dep: L = L + 1: Wend           ' Début Départ
L = L + 1
Ldeb = L                                        ' Ligne de début
While T(L, 3) <> Arr: L = L + 1: Wend           ' Début Arrivée
Lfin = L                                        ' Ligne de fin
For L = Ldeb To Lfin
    D = D + T(L, 5)                             ' On ajoute la distance
Next L
End Sub
 

Pièces jointes

ça marche aussi merci merci merci beaucoup
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…