IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Calcul du coût de transport.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut Calcul du coût de transport.
    Bonjour, je reviens vers vous avec la même question de la semaine dernière.

    Ma question est très simple.
    J'aimerais qu'au lieu que le calcul du transportCost se fasse dans la colonne G de la feuille calcul, il se fasse dans la colonne S de la même feuille. Entre les deux colonnes j'ai encore des données à indiquer.

    Bien évidement comme vous allez le voir dans les différents macro, je vérifie que les colonnes [A:F] sont remplies avant de faire le calcul dans la colonne G
    J'aimerais vérifier les colonnes [A:R] avant de faire le calcul dans la colonne S.

    Merci pour votre aide.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sur ton fichier, aucune donnée entre H et R

    Sinon, regarde ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub Calcul_Ter()
    Dim M As Long, N As Long
    Dim i As Long, j As Long
    Dim Tb, Res
     
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Out cOSTbis")
        N = .Cells(.Rows.Count, 1).End(xlUp).Row
        Tb = .Range("A2:L" & N)
    End With
     
    With ThisWorkbook.Worksheets("Calcul")
        M = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("S2:S" & M).ClearContents
        Res = .Range("A2:S" & M)
     
        For i = 1 To M - 1
            If Res(i, 19) = "" Then
                For j = 1 To N - 1
                    If Res(i, 1) = Tb(j, 1) Then
                        If Res(i, 2) = Tb(j, 2) Then
                            If Res(i, 3) = Tb(j, 4) Then
                                If Res(i, 4) >= Tb(j, 5) Then
                                    If Res(i, 4) <= Tb(j, 6) Then
                                        If Res(i, 5) >= Tb(j, 7) Then
                                            If Res(i, 5) <= Tb(j, 8) Then
                                                If Res(i, 6) >= Tb(j, 9) Then
                                                    If Res(i, 6) <= Tb(j, 10) Then
                                                        Res(i, 19) = Tb(j, 11) * Res(i, 5) + Tb(j, 12) * Res(i, 6)
                                                        Exit For
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next j
            End If
        Next i
        .Range("A2:S" & M) = Res
    End With
    End Sub

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Comme la semaine dernière, à quoi bon faire une macro alors que des fonctions excel iraient très bien ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    Bonjour,
    Merci pour votre rapide réponse.
    J'utilise une macro parce que j'ai plusieurs lignes dans mon fichier calcul jusqu'à 30000 lignes.

    je viens de me rendre compte que j'ai dis une connerie.
    Je vérifie toujours les colonne [A:F], mais j'inscris le calcul dans la colonne S.

    encore une fois merci.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    As tu testé le code?

  6. #6
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    En fait je me suis rendu compte de mon erreur et je suis entrain d'essayer de le corriger.

    Merci de votre réactivité

  7. #7
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    Bonjour,
    Je reviens vers vous car je n'arrive toujours pas à résoudre mon problème.
    En effet je cherche à calculer un coût transport dans la feuille ("table as_is").
    Ce coût, je cherche à le faire apparaître dans la colonne AC de ma feuille table as_is.

    ci dessus-vous trouverez les macros que j'ai modifié pour ce fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    'même principe de calcul
    'la macro se déclenche dès qu'on modifie la valeur d'une cellule
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Tabl, Lig As Long, C As Range
        'si la cellule modifiée ("Target") n'est pas dans les colonnes A:F, arrêt de la macro
        If Intersect(Target, [A:AB]) Is Nothing Then Exit Sub
        'si on modifie plus d'une cellule en même temps, arrêt de la macro
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        'si toutes les cellules  de la ligne sont renseignées
        If Application.CountA(Range(Cells(Target.Row, 1), Cells(Target.Row, 28))) = 28 Then
            'calcul du résultat pour la ligne (voir la macro "Calcul")
            With Sheets("Out cOST")
                Tabl = .Range(.[A2], .Cells(.Rows.Count, 13).End(xlUp))
            End With
            With Sheets("table AS_IS")
                Set C = Target
                For i = 1 To UBound(Tabl, 1)
                    'If .Cells(C.Row, 1) = Tabl(i, 1) And .Cells(C.Row, 2) = Tabl(i, 2) Then
                    If .Cells(C.Row, 2) = Tabl(i, 2) Then
                        If .Cells(C.Row, 3) = Tabl(i, 4) Then
                            If .Cells(C.Row, 4) >= Tabl(i, 5) And .Cells(C.Row, 4) <= Tabl(i, 6) Then
                                If .Cells(C.Row, 5) >= Tabl(i, 7) And .Cells(C.Row, 5) <= Tabl(i, 8) Then
                                    If .Cells(C.Row, 6) >= Tabl(i, 9) And .Cells(C.Row, 6) <= Tabl(i, 10) Then
                                        Var = Tabl(i, 11) * .Cells(C.Row, 5)
                                        .Cells(C.Row, 29) = Tabl(i, 11) * .Cells(C.Row, 5) + _
                                            Tabl(i, 12) * .Cells(C.Row, 6)
                                        Exit For
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next i
            End With
        Else
            'si toutes les cellules  de la ligne ne sont pas renseignées
            'on efface la cellule résultat
            Cells(Target.Row, 29) = ""
        End If
        Application.EnableEvents = True
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Option Explicit
     
    'Calcul de la colonne AC de la feuille Calcul
    Sub Calcul()
        Dim i As Integer
        Dim Tabl, Lig As Long, C As Range
        Application.ScreenUpdating = False
        With Sheets("Out cOST")
            'Chargement en mémoire de la plage A2:Mxx de la feuille "Out cOSTbis"
            ' dans le but de gagner du temps
            Tabl = .Range(.[A2], .Cells(.Rows.Count, 13).End(xlUp))
        End With
        'Boucle sur toutes les lignes de la feuille "Calcul"
        With Sheets("table AS_IS")
            For Each C In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp)).Offset(, 28)
                'Pour chaque ligne on teste les lignes de Tabl jusqu'à trouver la bonne
                For i = 1 To UBound(Tabl, 1)
                    'si c'est la bonne ville et le bon pays
                    'If .Cells(C.Row, 1) = Tabl(i, 1) And .Cells(C.Row, 2) = Tabl(i, 2) Then
                    If .Cells(C.Row, 2) = Tabl(i, 2) Then
                        'si on est dans la bonne plage de codes postaux
                        If .Cells(C.Row, 3) >= Tabl(i, 3) And .Cells(C.Row, 3) <= Tabl(i, 4) Then
                            ' si on est dans la bonne plage de dates
                            If .Cells(C.Row, 4) >= Tabl(i, 5) And .Cells(C.Row, 4) <= Tabl(i, 6) Then
                                'si on est dans la bonne plage de poids
                                If .Cells(C.Row, 5) >= Tabl(i, 7) And .Cells(C.Row, 5) <= Tabl(i, 8) Then
                                    'si on est dans la bonne plage de km
                                    If .Cells(C.Row, 6) >= Tabl(i, 9) And .Cells(C.Row, 6) <= Tabl(i, 10) Then
                                        'on calcule
                                        .Cells(C.Row, 29) = Tabl(i, 11) * .Cells(C.Row, 5) + _
                                            Tabl(i, 12) * .Cells(C.Row, 6)
                                        'et on sort de la boucle d'examen des lignes de la table
                                        Exit For
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next i
            Next C
        End With
        Application.ScreenUpdating = True
    End Sub
    Les deux macros me permettent de calculer mon coût transport. J'aimerais que le résultat soient dans la colonne AC de la feuille "table as_is"

    Je mets en pièce jointe la feuille sur laquelle je fais le calcul.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul du coût de transport.
    Par bricko dans le forum Excel
    Réponses: 13
    Dernier message: 13/07/2013, 16h46
  2. Comment l'optimiseur d'Oracle calcule le coût
    Par Vincent Rogier dans le forum Contribuez
    Réponses: 8
    Dernier message: 31/07/2009, 11h34
  3. Comment l'optimiseur d'Oracle calcule le coût
    Par big1 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 12/06/2009, 14h07
  4. [Conception] Simulation de calcul de coût
    Par yezid dans le forum Modélisation
    Réponses: 2
    Dernier message: 29/03/2007, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo