Macro - Transport

Bonjour à tous les champions olympiques de la programmation, j'ai besoin de votre aide car je suis bloqué sur un sujet qui est le suivant :

J’essaie de construire une macro afin de me faciliter la vie pour faire les calculs des couts de transport.

Pour être plus précis :

Nous mettons dans une navette les palettes de plusieurs clients, cette navette va tout d’abord à une plateforme (c’est donc une navette qui a un cout en fonction du métrage au sol total). Puis les palettes des clients partent de la plateforme vers les régions qui sont prévues, avec comme vous pouvez le deviner un tarif différent en fonction de la région et de son métrage. J’ai réussi dans ma macro à calculer le cout de la navette en fonction du métrage -> C’est visible dans la macro.

Le calcul de la navette se fait au prorata du métrage linéaire de chaque, cad le cout se répartit en fonction du pourcentage qu’ils (les clients) occupent dans la navette

J’espère que jusqu’ici c’est assez clair pour vous…

Mes connaissances (assez limitées) m’ont permis de réaliser un userform où pour chaque client je rentre manuellement le nombre de mètre linéaire et le tarif du transport (sans la navette, le tarif du transport post plateforme que je vais chercher moi-même dans la grille) et que ça calcule pour chaque le montant total (Navette + transport).

La grille tarifaire du transport (post navette) se trouve en Excel dans le fichier joint. Dans ce fichier Excel il y a en colonne les mètres linéaires et en ligne les départements.

Mais je pense qu’il est pas très compliqué de faire plus pratique, je m’explique :

Avoir un userform où pour chaque client je rentre le métrage linéaire + le département et ça calcule le prix global (navette + tarif).

Comme je vous ai dit j’ai déjà réussi à faire le calcul pour trouver le prix de la navette, et la formule pour calculer le prix global mais je ne sais pas du tout comment aller lui faire chercher au programme le tarif correspondant pour ensuite l’ajouter au cout de la navette.

Ex : Je veux le tarif de 6m dans le 33, qu’il aille au croisement de la colonne 6m et du département 33 pour choper le tarif.

et qu'ensuite il s'en serve pour calculer le cout total.

Je ne suis pas super doué dans les explications, si vous avez des questions ou des précisions à demander, n’hésitez surtout pas. Je vous joins évidemment le fichier Excel.

Merci beaucoup d’avance pour votre aide et votre temps .

Paul

Salut PaulTT,

premier jet : je peaufinerai selon tes indications en soirée...

Plus besoin de bouton pour calculer : l'encodage suffit !

Á tester...

For x = 1 To iFlag
    dblTotCL = 0
    dblM = Val(Me.Controls("txtM" & x).Text)
    dblTotCL = iNav * (dblM / dblTotM)
    If Me.Controls("txtR" & x).Text <> "" Then
        With Worksheets("Tarif Transporteur")
            Set rCel = .Rows(1).Find(what:=dblM, lookat:=xlWhole, LookIn:=xlFormulas)
            dblTotCL = dblTotCL + CDbl(.Cells(Val(Me.Controls("txtR" & x).Text) + 1, rCel.Column))
        End With
    End If
    Me.Controls("lblCL" & x).Caption = Format(CStr(dblTotCL), "##.00 €")
Next

A+

tout d'abord merci Curulis pour ton temps et ta proposition,

Je viens d'ouvrir ton fichier Excel et dès que je veut entrer une valeur sur la 1ère case à remplir du client 1, ça m'affiche l'image que je viens de joindre. J'ai un peu regardé ton charabia mais j'ai pas pu trouvé d'où venait le problème.

Après le 1er fichier que je t'ai envoyé été sur PC et là je viens de l'ouvrir sur mac donc peut-être que le problème vient de là ? je ne pense pas mais bon

Paul.

capture d ecran 2020 02 21 a 17 50 49

Déso, je pensais vraiment t'avoir envoyé la version sans cette ligne qui me servait de test...

Voici... normalement...

A+

Ok ça m'a l'air incroyablement efficace !! Je te remercie beaucoup!!

Je vais analyser ça Lundi et je te tiens au courant mais bon je pense c'est top.

Merci encore.

Paul

Salut Curulis57,

Je te contacte parce que je viens de regarder ta macro de plus prêt, mis à part 1 ou 2 légères modifications ta proposition est super !

J'ai quelques petites remarques :

  • Tout d'abord, pour tous les clients : si je veux mettre "0.5" en métrage au sol ça met un message d'erreur.
  • J'ai donc décidé d'intégrer ce que tu as fais dans mon fichier Excel de prix en faisant un copier coller de la feuille mais lorsque je veux lancer la macro de mon fichier global, ça ouvre le fichier que j'ai téléchargé. Je crois que c'est une histoire de liaison, et je n'arrive pas à résoudre le problème.

Mon but est de couper la liaison pour tout avoir sur mon fichier Excel global, j'ai donc essayé de bêtement copier coller le userform mais ça ne marche pas. C'est pour savoir si t'as une idée de comment je pourrais régler le problème.

Encore merci de ton aide.

Paul.

Salut Paul,

je n'y connais rien en liaisons et autres trucs du genre !!

Mais, plutôt que de copier/coller un USF, il faudrait plutôt l'importer.

  • depuis mon fichier, dans l'explorateur de projet, clic-droit sur le nom de l'USF et choisir "Exporter" ;
  • ensuite, depuis ton fichier de travail, éliminer l'USF à problème puis clic-droit sur l'intitulé "Feuille" et "Importer".

Perso, c'est ce que j'essayerais en premier...

A+

Ok c'est bon j'ai trouvé une solution au problème... En revanche as-tu une idée concernant ,les 0.5 dans les métrages au sol ?

Ok c'est bon j'ai trouvé une solution au problème... En revanche as-tu une idée concernant ,les 0.5 dans les métrages au sol ?

Sachant que quand j'écris directement dans la cellule "0.5" ça bloque dès que j'écris le 0 mais si je colle 0.5 que j'ai copié d'une cellule classique ça fonctionne !

Je veux bien mais faudrait peut-être me décrire le problème !

A+

Autant pour moi,

Alors, si je veux mettre 0.5 en métrage au sol - ça me bloque dès que j'écris le 0 et ça me met erreur (voir images ci-dessous) .

Merci de ton aide

pb macro 1 pb macro 2

Salut

comprends pas comment ça a pu fonctionner un jour, d'ailleurs...

If dblTotM > 0 Then

If dblTotM > 0 Then
    For x = 1 To iFlag
        dblTotCL = 0
        dblM = Val(Me.Controls("txtM" & x).Text)
        dblTotCL = iNav * (dblM / dblTotM)
        If Me.Controls("txtR" & x).Text <> "" Then
            With Worksheets("Tarif Transporteur")
                Set rCel = .Rows(1).Find(what:=dblM, lookat:=xlWhole, LookIn:=xlFormulas)
                dblTotCL = dblTotCL + CDbl(.Cells(Val(Me.Controls("txtR" & x).Text) + 1, rCel.Column))
            End With
        End If
        Me.Controls("lblCL" & x).Caption = Format(CStr(dblTotCL), "##.00 €")
    Next
End If

Mieux, non ?

A+

Rechercher des sujets similaires à "macro transport"