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

Macro pour calcul de 3 facons différentes

  • Initiateur de la discussion Initiateur de la discussion sonic730
  • 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 !

S

sonic730

Guest
Bonjour à tous,
Je cherche à faire une macro pour faire un calcul de 3 façons différentes. Je m'explique.
J'ai un poste fuel, et je voudrais calculer :

1- avec le prix du litre, et la quantité commandée, je voudrais connaitre le prix total ?
2 - Avec le prix du litre, et le prix total, je voudrais avoir la quantité qu'il est possible de commander ?
3- Avec la quantité commandée, et le prix total, je voudrais avoir le prix du litre ?

Merci à tous
 
Re : Macro pour calcul de 3 facons différentes

Merci hulk,
Je n'ai pas été très longtemps à l'ecole,(pour le VBA 😀) et j'essaie de m'y mettre grace à ce forum.
Merci je vais essayer ca tout de suite
 
Re : Macro pour calcul de 3 facons différentes

@Hulk

Je viens d'essayer, et après lecture je me suis mal expliqué.
en fait ce que tu as fait j'ai réussi à le faire, mais j'aurais voulu ne pas avoir 3 lignes pour chacun des différents cas, mais 1 seul ligne, et en remplissant 2 des inconnues, que la troisième soit calculé automatiquement.
Je pense avoir été plus clair 🙄

Merci
 
Re : Macro pour calcul de 3 facons différentes

Bonsoir Sonic730, salut Hulk 🙂,
Un petit essai en PJ, j'espère que je n'ai pas oublié des cas de figure 😛...
Bonne soirée 😎
 

Pièces jointes

Re : Macro pour calcul de 3 facons différentes

Bonjour à tous
Une autre procédure événementielle acceptant le copier/coller sur plusieurs lignes.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim oPlg As Range, oLg As Range, errLg$
   If Not Intersect(Target, Columns("A:C")) Is Nothing Then
      For Each oLg In Intersect(Target, Columns("A:C")).Rows
         Set oPlg = Rows(oLg.Row).Resize(1, 3)
         Select Case WorksheetFunction.CountBlank(oPlg)
         Case 0
            If IsNumeric(oPlg.Value2(1, 3)) And IsNumeric(oPlg.Value2(1, 2)) And IsNumeric(oPlg.Value2(1, 1)) Then
               If oPlg.Value2(1, 3) - oPlg.Value2(1, 2) * oPlg.Value2(1, 1) Then errLg = errLg & vbLf & oPlg.Row
            End If
         Case 1
            Application.EnableEvents = False
            If oPlg.Value2(1, 3) = "" And IsNumeric(oPlg.Value2(1, 2)) And IsNumeric(oPlg.Value2(1, 1)) Then
               oPlg.Cells(1, 3).Value = oPlg.Value2(1, 2) * oPlg.Value2(1, 1)
            ElseIf oPlg.Value2(1, 2) = "" And IsNumeric(oPlg.Value2(1, 3)) And IsNumeric(oPlg.Value2(1, 1)) And oPlg.Value2(1, 1) <> 0 Then
               oPlg.Cells(1, 2).Value = oPlg.Value2(1, 3) / oPlg.Value2(1, 1)
            ElseIf oPlg.Value2(1, 1) = "" And IsNumeric(oPlg.Value2(1, 3)) And IsNumeric(oPlg.Value2(1, 2)) And oPlg.Value2(1, 2) <> 0 Then
               oPlg.Cells(1, 1).Value = oPlg.Value2(1, 3) / oPlg.Value2(1, 2)
            End If
            Application.EnableEvents = True
         End Select
      Next oLg
      If errLg <> "" Then MsgBox "Données erronées ligne(s)" & errLg, vbCritical, "A T T E N T I O N   !"
   End If
End Sub[/B][/COLOR]
Le prix total est en colonne C, le prix du litre et le volume en litres étant indifféremment en colonnes A et B.
Les données non numériques sont ignorées.​
ROGER2327
#3702


Mardi 3 Gidouille 137 (Sainte Dondon, amazone, SQ)
29 Prairial An CCXVIII
2010-W24-4T02:37:01Z
 

Pièces jointes

Dernière édition:
Re : Macro pour calcul de 3 facons différentes

Re 🙂,
Je n'ai plus qu'a essayé de la comprendre 😕
La voici commentée, avec un rajout (j'avais bien dit qu'il devait me manquer un cas de figure 😛...) pour les saisies non numériques, ainsi qu'une petite correction d'erreur. Par contre, les formules (comme les chèques 😀) sont acceptées.
Le copier/coller, lui, n'est pas interdit, mais ne déclenchera pas l'événement 😱.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
I = Target.Row
[COLOR=seagreen]' Variable I pour stocker la ligne et rendre le code plus lisible[/COLOR]
If Target.Count > 1 Then Exit Sub
[COLOR=seagreen]' Si plus d'une cellule en changement Exit[/COLOR]
If Target.Column > 3 Or I < [B][COLOR=red]2[/COLOR][/B] Then Exit Sub
[COLOR=seagreen]' Si dans 1ère ligne ou au dela de la 3ème colonne Exit[/COLOR]
[COLOR=red][B]If Not IsNumeric(Replace(Range("A" & I) & Range("B" & I) & Range("C" & I), ",", "")) Then[/B][/COLOR]
[COLOR=seagreen]' Si une valeur n'est pas numérique dans la ligne (concaténation en supprimant les ",") Exit[/COLOR]
   [COLOR=red][B]MsgBox "Toutes les valeurs doivent être numérique !", vbCritical, "Calcul impossible"[/B][/COLOR]
[COLOR=red][B]  Exit Sub[/B][/COLOR]
[COLOR=red][B]End If[/B][/COLOR]
If Application.WorksheetFunction.CountBlank(Range("A" & I & ":C" & I)) = 0 Then
[COLOR=seagreen]' Si les 3 cellules remplies, laquelle calculer ? Exit[/COLOR]
    MsgBox "Vous devez avoir une case vide", vbCritical, "Calcul impossible"
    Exit Sub
End If
If Application.WorksheetFunction.CountBlank(Range("A" & I & ":C" & I)) <> 1 Then Exit Sub
[COLOR=seagreen]' Si il n'y a pas qu'une seule cellule vide Exit[/COLOR]
Application.EnableEvents = False
[COLOR=seagreen]' Suspension des événements, sinon le calcul va redéclencher[/COLOR] [COLOR=seagreen]Worsheet_Change[/COLOR]
If Cells(I, 1) = "" Then
    Cells(I, 1) = Cells(I, 3) / Cells(I, 2)
ElseIf Cells(I, 2) = "" Then
    Cells(I, 2) = Cells(I, 3) / Cells(I, 1)
Else
    Cells(I, 3) = Cells(I, 1) * Cells(I, 2)
End If
Application.EnableEvents = True
End Sub
Merci Hulk 😉.
Bonne journée 😎
 
Re : Macro pour calcul de 3 facons différentes

Bonjour,
Et ben dit donc, vous vous êtes tous lâché, pour faire du super boulot.
Merci à tous

J'aurais juste un renseignement.

Est-ce qu'il est possible par exemple par copier coller ou autre moyen, de récupérer le tableau et les codes pour les mettre dans 1 autre classeur dont la feuille a un autre nom, et à un emplacement différent.
J'ai pu mettre la feuille dans mon classeur, mais c'est tout. Pour mettre le tableau, et le code sur une autre feuille et à un autre endroit, là c'est autre chose.

Je suppose que le code change complètement, non ?
Tout doit donc être adapté ?

merci
 
Re : Macro pour calcul de 3 facons différentes

Dans le cas de mon fichier (je pense que c'est pareil pour les autres solutions), faire une copie de la feuille dans un autre fichier :

- faire un clic droit sur l'onglet
- faire Déplacer ou copier
- sélectionner le nom de l'autre classeur (préalablement ouvert) le nom du classeur
- cocher créer une copie

Le VBA est copié avec et les cellules nommées également (tu peux déplacer ces cellules ailleurs dans la feuille par couper-coller)

cordialement
 
Re : Macro pour calcul de 3 facons différentes

@mecano41
Félicitation ton code est très bien.

Pour ce qui est de copier ta feuille dans un autre classeur c'est ok. Le problème est si je veux simplement prendre ton tableau ainsi que le code (évidemment)et le mettre dans une feuille déja crée, a la suite d'autre tableaux par exemple.

Merci
 
Re : Macro pour calcul de 3 facons différentes


Dans ce cas :

- tu crées ou tu copie mes cellules
- tu les colles dans ta feuille déjà crée
- tu renommes les trois cellules : Pu, Qte (sans accent) et Total ainsi que la plage comportant les 3 cellules : PlageDonnees (sans accent)

Dans mon fichier :
- tu fais ALT+F11 pour aller dans le VBE (environnement du VBA)
- s'il n'y a pas à gauche une petite colonne titrée : Projet - VBA project, tu fais : affichage - explorateur de projets pour faire apparaître cette colonne
- tu cliques sur le nom de ma feuille dans cette colonne
- tu vas voir, à droite, mon code affiché
- tu le copies
- dans la même colonne de gauche, tu cliques sur le nom de ta feuille
- tu colles le code copié dans la colonne de droite

Cordialement
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
309
Réponses
5
Affichages
402
Réponses
10
Affichages
381
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…