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

Microsoft 365 Amélioration/réparation d'une Macro et création d'un bouton pour calcul consommation

  • Initiateur de la discussion Initiateur de la discussion Olihoes
  • Date de début Date de début

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 !

Olihoes

XLDnaute Nouveau
Bonjour à tous,


J'ai besoin de votre aide pour 2 soucis que je n'arrive pas à résoudre :
(Je sais que certaines choses paraissent étranges dans ce tableau, mais je dois simuler certaines données qui n'ont pas été fournies par les chauffeurs les années précédentes)

1)
J'ai grâce à l'aide de ce forum pu avoir un premier bouton qui effaçait les cellules se rapportant aux jours où on ne fait pas de plein du véhicule.
Vous m’avez fourni 2 solutions : (Encore merci à Sylvanu et CHRIS1945)
J'ai dans un premier temps utilisé la première (Macro nettoyage) mais j'ai dû ensuite rajouter une ligne pour chaque jour de l'année dans mon tableau ... :-(
Et étant assez nul je n'ai jamais réussi à modifier cette Macro nettoyage pour qu'elle supprime 3 cellules au lieu de deux.
J'ai donc utilisé la seconde Macro (Macro MAJ) que j'ai réussi à modifier pour supprimer également les lignes kilométrages que j'ai dû rajouter.

La Macro "nettoyage" donnait un résultat instantané tandis que l'autre mettait 2 ou 3 secondes à effacer les cellules superflues.
Mais maintenant, je ne sais pas ce que j'ai pu faire comme bêtise mais la macro MAJ met bien 5 minutes à s'exécuter...

Si vous pouviez modifier la macro "nettoyage" qui semblait plus rapide pour qu'elle puisse également effacer 3 cellules au lieu de 2.
(La macro affectée au bouton est actuellement celle "MAJ" que j'ai modifié)

2)
J'aurais besoin d'un second bouton qui calculerait la valeur des cellules "kilométrage" restantes après la macro du premier bouton en estimant le kilométrage par rapport à la consommation moyenne fournie au-dessus du tableau et au nombre de litre mis par le chauffeur ce jour-là.
En modifiant le résultat d'un nombre aléatoire (par exemple entre -40 et 40) pour avoir des données de kilométrage + réaliste qu'une consommation qui resterait parfaitement fixe toute l'année.

Pour l'instant j'ai mis une formule basique dans les cellules "kilométrage"(sans l'ajout de la valeur aléatoire) qui fonctionne tant que mon tableau est plein, mais dès que j'effacerai les cellules des jours où il n'y a pas eu de plein ma formule ne fonctionnera plus…


Merci d’avance pour votre aide.


Olivier
 

Pièces jointes

Bonjour Olihoes,
Testez cette PJ pour le premier point avec :
VB:
Sub Nettoyage()
Dim L%, C%, Tablo
Application.ScreenUpdating = False
Tablo = Range("A9:Q" & [A10000].End(xlUp).Row)
For L = 3 To UBound(Tablo) - 3 Step 4
    For C = 4 To UBound(Tablo, 2)
        If Tablo(L, C) = "" Then
            Tablo(L + 1, C) = ""
            Tablo(L + 2, C) = ""
            Tablo(L + 3, C) = ""
        End If
    Next C
Next L
[A9].Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
End Sub
pour le second point soyez plus clair, je n'ai pas compris.
 

Pièces jointes

Bonjour,

C'est encore vous le + rapide 🙂
Oui ça fonctionne et il efface les cellules rapidement.
Déjà une chose de réglée 🙂

Je met le fichier avec cette modification en pièce jointe

Je quitte le boulot, donc je ne pourrais pas voir les réponses suivantes tout de suite.

Merci beaucoup et bon weekend à tous
 

Pièces jointes

Re,
Evidemment sans réponse à ma question, point d'évolution ... 🙂
Je me pencherais sur le second point lorsque vous aurait apporté quelques éclaircissements.
Désolé, j'ai été trop vite, j'ai vu la question après avoir mis ma première réponse... 🙂

Donc pour le second point il faudrait qu'en cliquant sur un bouton il calcule dans les cellules kilométrage restantes (après le nettoyage effectué par la macro), le kilométrage probable du véhicule en tenant compte de la consommation moyenne et du nombre de litre pris ce jour là. (avec en bonus rajouter un nombre aléatoire qui varie par exemple entre -40 et 40 ).

Car la formule que j'ai mise débloque complètement une fois les cellules effacées.

Merci 🙂
 
Bonjour,

Et donc pour être encore plus précis (enfin j'espère... 😅)

Pour la première cellule kilométrage où un plein a été fait pour un véhicule :
=*valeur de kilométrage initiaux de ce véhicule indiqué en ligne 9*+((*nombre de litres pris ce jour là*/*conso moyenne de ce véhicule indiqué en ligne 6*))*100)

Et ensuite pour les prochaines cellules kilométrage restantes (donc celles où un plein a été effectué):
=*dernière valeur kilométrage*+((*nombre de litres pris ce jour là*/*conso de ce véhicule indiqué en ligne 6*)*100)


Merci d'avance.

Olivier
 
Re,
Compris. 🙂
J'ai supposé que les dates allaient toujours dans le sens croissant pour calculer.
( le km est le km précédent + km calculé )
Par contre toujours pas compris le " -40 et +40" . Sur quoi doit il intervenir ? C'est +/-40 litres ou +/-40km ?
En PJ un essai avec :
VB:
Sub Kilométrages()
Dim L%, Vehicule%, Tablo, Conso, km_init, km
Application.ScreenUpdating = False
Tablo = Range("A9:Q" & [A10000].End(xlUp).Row)
For Vehicule = 4 To 17
    km_init = Tablo(1, Vehicule) ' kilométrage initial
    Conso = Cells(6, Vehicule)
    For L = 3 To UBound(Tablo) - 3 Step 4
        If Tablo(L, Vehicule) <> "" Then
            km = km_init + 100 * Tablo(L, Vehicule) / Conso
            Tablo(L + 1, Vehicule) = km
            km_init = km
        End If
    Next L
Next Vehicule
[A9].Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
End Sub
 

Pièces jointes

Merci beaucoup, je vais tester ça au plus vite.

Le +/- 40 c'est sur le nombre de kilomètre.
Comme ça le kilométrage sera un peu + réaliste que si la consommation reste parfaitement identique toute l'année 🙂
 
Maintenant, mais c'est surement nettement plus difficile.
Pour éviter que manque de chance, le hasard fasse que ce soit toujours des chiffres qui tendent vers -40 qui sortent y a-t-il un moyen de faire en sorte qu'au final de l'année pour le véhicule la somme des km ajoutés et retirés par cette ajout aléatoire entre -40 et 40 soit égal à zéro?

Maintenant c'est déjà très bien avec simplement l'ajout supplémentaire aléatoire. C'est vraiment pour peaufiner que je demande ça.

Encore merci pour votre aide.
 
Re,
Un essai en PJ avec ces modifs :
VB:
Randomize: AjoutAlea = Int(80 * Rnd - 40)
km = AjoutAlea + km_init + 100 * Tablo(L, Vehicule) / Conso

SommeAlea = SommeAlea + AjoutAlea

Pour le dernier on erctifie pour que les sommes alea soient nulles
Tablo(DernLig, Vehicule) = Tablo(DernLig, Vehicule) - SommeAlea
Par contre pour le fichier avec formules c'est correct puisqu'on prend la somme des pleins donc au total pas d'ajout ou retrait négatif.
 

Pièces jointes

Bonjour Sylvanu,
J'ai complété mon tableau et tout me semble très bien fonctionner 🙂
On m'a juste rajouté 4 véhicules supplémentaires à encoder et bien sûr je ne sais pas modifier ta formule pour que la macro en prenne compte des colonnes supplémentaires... 😅

Pourriez-vous faire cette modification?

Encore merci 🙂
 

Pièces jointes

- 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…